Guest User

loader disasm

a guest
Nov 10th, 2019
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.   device zxspectrum48
  2.  
  3.   org $fc13
  4.  
  5. TAPE_ERROR  EQU $0806  
  6.  
  7.  
  8. start_loader:
  9.     jp      loc_FE69
  10.  
  11.                
  12. word_FC16:
  13.     dw $4848
  14. word_FC18:
  15.     dw $4848
  16. byte_FC1A:
  17.     db 0
  18. word_FC1B:
  19.     dw 0
  20. word_FC1D:
  21.     dw 0
  22. byte_FC1F:
  23.     ds 13, 0
  24. word_FC2C:
  25.     dw 0
  26. word_FC2E:
  27.     dw 0
  28.  
  29.     db 0
  30.     db 0
  31.     db $FE, $C6, $BA, $BA, $BA, $BA, $C6, $FE
  32.     db $FE, $EE, $CE, $EE, $EE, $EE, $82, $FE
  33.     db $FE, $C6, $BA, $F6, $EE, $DE, $82, $FE
  34.     db $FE, $82, $F6, $E6, $FA, $BA, $C6, $FE
  35.     db $FE, $F6, $E6, $D6, $B6, $82, $F6, $FE
  36.     db $FE, $82, $BE, $86, $FA, $BA, $C6, $FE
  37.     db $FE, $E6, $DE, $86, $BA, $BA, $C6, $FE
  38.     db $FE, $82, $FA, $F6, $F6, $EE, $EE, $FE
  39.     db $FE, $C6, $BA, $C6, $BA, $BA, $C6, $FE
  40.     db $FE, $C6, $BA, $BA, $C2, $FA, $C6, $FE
  41.     db $FE, $C6, $BA, $BA, $BA, $BA, $C6, $FE
  42.  
  43. sub_FC8A:
  44.     inc     d
  45.     ex      af, af'
  46.    dec     d
  47.    di
  48.    exx
  49.    ld      c, 0
  50.    exx
  51.    ld      a, $0A
  52.    out     ($FE), a
  53.    in      a, ($FE)
  54.    rra
  55.    and     $20
  56.    or      0
  57.    ld      c, a
  58.    cp      a
  59.  
  60. loc_FC9F:
  61.    ret     nz
  62.  
  63. loc_FCA0:
  64.    call    sub_FD20
  65.    jr      nc, loc_FC9F
  66.    ld      hl, $0415
  67.  
  68. loc_FCA8:
  69.    djnz    $
  70.    dec     hl
  71.    ld      a, h
  72.    or      l
  73.    jr      nz, loc_FCA8
  74.    call    sub_FD1C
  75.    jr      nc, loc_FC9F
  76.  
  77. loc_FCB4:
  78.    ld      b, $9C
  79.    call    sub_FD1C
  80.    jr      nc, loc_FC9F
  81.    ld      a, $C6
  82.    cp      b
  83.    jr      nc, loc_FCA0
  84.    inc     h
  85.    jr      nz, loc_FCB4
  86.  
  87. loc_FCC3:
  88.    ld      b, $C9
  89.    call    sub_FD20
  90.    jr      nc, loc_FC9F
  91.    ld      a, b
  92.    cp      $D4
  93.    jr      nc, loc_FCC3
  94.    call    sub_FD20
  95.    ret     nc
  96.    exx
  97.    ld      a, (byte_FC1A)
  98.    ld      c, a
  99.    ld      (byte_FC1F), a
  100.    exx
  101.    ld      h, 0
  102.    ld      b, $B0
  103.    jr      loc_FD01
  104.  
  105. loc_FCE2:
  106.    ex      af, af'
  107.     jr      nz, loc_FCEC
  108.     jr      nc, loc_FCF6
  109.     ld      (ix+0), l
  110.     jr      loc_FCFB
  111.  
  112. loc_FCEC:
  113.     rl      c
  114.     xor     l
  115.     ret     nz
  116.     ld      a, c
  117.     rra
  118.     ld      c, a
  119.     inc     de
  120.     jr      loc_FCFD
  121.  
  122. loc_FCF6:
  123.     ld      a, (ix+0)
  124.     xor     l
  125.     ret     nz
  126.  
  127. loc_FCFB:
  128.     inc     ix
  129.  
  130. loc_FCFD:
  131.     dec     de
  132.     ex      af, af'
  133.    ld      b, $B2
  134.  
  135. loc_FD01:
  136.    ld      l, 1
  137.  
  138. loc_FD03:
  139.    call    sub_FD1C
  140.    ret     nc
  141.  
  142.    ld      a, $CB
  143.    cp      b
  144.    rl      l
  145.    ld      b, $B0
  146.    jp      nc, loc_FD03
  147.  
  148.    ld      a, h
  149.    xor     l
  150.    ld      h, a
  151.    ld      a, d
  152.    or      e
  153.    jr      nz, loc_FCE2
  154.  
  155.    ld      a, h
  156.    cp      1
  157.    ret
  158.  
  159. sub_FD1C:
  160.    call    sub_FD20
  161.    ret     nc
  162.  
  163. sub_FD20:
  164.    jp      loc_FD3B
  165.  
  166. loc_FD23:
  167.    inc     b
  168.    ret     z
  169.    ld      a, $7F
  170.    in      a, ($FE)
  171.    rra
  172.    ret     nc
  173.    xor     c
  174.    and     $20
  175.    jr      z, loc_FD23
  176.  
  177.    ld      a, c
  178.    cpl
  179.    ld      c, a
  180.    ld      ($5AFE), a
  181.    ld      ($5AFF), a
  182.    scf
  183.    ret
  184.  
  185. loc_FD3B:
  186.    exx
  187.    ld      a, c
  188.    or      a
  189.    jr      z, loc_FD80
  190.  
  191.    ld      hl, $FC1F
  192.    dec     (hl)
  193.    ld      a, (hl)
  194.    jr      z, loc_FDA2
  195.  
  196.    cp      5
  197.    jr      nc, loc_FD8D
  198.  
  199.    ld      hl, $FC1B
  200.    inc     (hl)
  201.    inc     l
  202.    inc     l
  203.    dec     (hl)
  204.    ld      hl, (word_FC1B)
  205.    ld      a, (hl)
  206.    add     a, $32
  207.    ld      e, a
  208.    ld      d, $FC
  209.    ld      hl, (word_FC1D)
  210.    ld      a, (de)
  211.    ld      (hl), a
  212.    inc     e
  213.    inc     h
  214.    ld      a, (de)
  215.    ld      (hl), a
  216.    inc     e
  217.    inc     h
  218.    ld      a, (de)
  219.    ld      (hl), a
  220.    inc     e
  221.    inc     h
  222.    ld      a, (de)
  223.    ld      (hl), a
  224.    inc     e
  225.    inc     h
  226.    ld      a, (de)
  227.    ld      (hl), a
  228.    inc     e
  229.    inc     h
  230.    ld      a, (de)
  231.    ld      (hl), a
  232.    inc     e
  233.    inc     h
  234.    ld      a, (de)
  235.    ld      (hl), a
  236.    inc     e
  237.    inc     h
  238.    ld      a, (de)
  239.    ld      (hl), a
  240.    exx
  241.    jp      loc_FD23
  242.  
  243. loc_FD80:
  244.    ld      b, $17
  245.  
  246. loc_FD82:
  247.    djnz    $
  248.  
  249.    ld      a, 0
  250.    neg
  251.    and     a
  252.    exx
  253.    jp      loc_FD23
  254.  
  255. loc_FD8D:
  256.    ld      a, $47
  257.    ld      ($5AFA), a
  258.    ld      ($5AFB), a
  259.    ld      ($5AFC), a
  260.    ld      ($5AFD), a
  261.    inc     hl
  262.    inc     hl
  263.    ld      b, $0D
  264.    jp      loc_FD82
  265.  
  266. loc_FDA2:
  267.    ld      b, $4F
  268.    ld      de, (word_FC16)
  269.    ld      hl, (word_FC18)
  270.    dec     e
  271.    jp      p, loc_FDB9
  272.    ld      e, b
  273.    dec     d
  274.    ld      b, 5
  275.  
  276. loc_FDB3:
  277.    djnz    $
  278.    ld      a, (hl)
  279.    jp      loc_FDEC
  280.  
  281. loc_FDB9:
  282.    ld      a, d
  283.    and     7
  284.    jp      z, loc_FDD1
  285.  
  286.    dec     d
  287.    jp      p, loc_FDD3
  288.  
  289.    ld      d, b
  290.    dec     l
  291.    ld      a, ($8000)
  292.    ld      a, ($8000)
  293.    ld      a, ($8000)
  294.    jp      loc_FDEC
  295.  
  296. loc_FDD1:
  297.    ld      a, (hl)
  298.    ld      a, (hl)
  299.  
  300. loc_FDD3:
  301.    ld      a, l
  302.    and     7
  303.    jp      z, loc_FDE4
  304.  
  305.    dec     l
  306.    jp      p, loc_FDE6
  307.  
  308.    ld      l, b
  309.    dec     h
  310.    neg
  311.    jp      loc_FDEC
  312.  
  313. loc_FDE4:
  314.    ld      a, (hl)
  315.    ld      a, (hl)
  316.  
  317. loc_FDE6:
  318.    ld      a, h
  319.    and     7
  320.    jr      z, loc_FDEC
  321.  
  322.    dec     h
  323.  
  324. loc_FDEC:
  325.    ld      (word_FC16), de
  326.    ld      (word_FC18), hl
  327.    ld      hl, $FC15
  328.    ld      (word_FC1B), hl
  329.    ld      hl, $50FE
  330.    ld      (word_FC1D), hl
  331.    ld      a, $40
  332.    ld      (byte_FC1F), a
  333.    neg
  334.    neg
  335.    neg
  336.    and     a
  337.    exx
  338.    jp      loc_FD23
  339.  
  340. sub_FE0F:
  341.    ld      hl, (word_FC2C)
  342.    ld      b, 5
  343.  
  344. loc_FE14:
  345.    srl     h
  346.    rr      l
  347.    djnz    loc_FE14
  348.  
  349.    ld      de, $FC19
  350.  
  351. loc_FE1D:
  352.    ld      a, $FF
  353.    ld      bc, $03E8
  354.  
  355. loc_FE22:
  356.    inc     a
  357.    or      a
  358.    sbc     hl, bc
  359.    jr      nc, loc_FE22
  360.  
  361.    add     hl, bc
  362.    add     a, a
  363.    add     a, a
  364.    add     a, a
  365.    ld      (de), a
  366.    ld      c, l
  367.    ld      b, h
  368.    add     hl, hl
  369.    add     hl, hl
  370.    add     hl, bc
  371.    add     hl, hl
  372.    dec     de
  373.    ld      a, e
  374.    cp      $15
  375.    jr      nz, loc_FE1D
  376.  
  377.    ret
  378.  
  379. sub_FE3A:
  380.    xor     a
  381.    ld      (byte_FC1A), a
  382.    ld      ix, $FC21
  383.    ld      de, $11
  384.    xor     a
  385.    scf
  386.  
  387.    call    sub_FC8A
  388.  
  389.    jr      nc, loc_FE66
  390.  
  391.    call    sub_FE0F
  392.  
  393.    ld      a, 1
  394.    ld      (byte_FC1A), a
  395.    ld      ix, (word_FC2E)
  396.    ld      de, (word_FC2C)
  397.    ld      a, $FF
  398.    scf
  399.  
  400.    call    sub_FC8A
  401.  
  402.    jr      nc, loc_FE66
  403.  
  404.    ei
  405.  
  406.    ret
  407.  
  408. loc_FE66:
  409.    jp      TAPE_ERROR
  410.  
  411. loc_FE69:
  412.    exx
  413.    push    hl
  414.    exx
  415.  
  416.    call    sub_FE3A
  417.  
  418.    exx
  419.    pop     hl
  420.  
  421.    exx
  422.    ret
  423.  
  424.     savebin "loader_compiled.bin", start_loader, $-start_loader
Advertisement
Add Comment
Please, Sign In to add comment