home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Misc / GXY-INF.LHA / infos / blocksaver.s < prev    next >
Encoding:
Text File  |  1996-03-09  |  9.2 KB  |  656 lines

  1. ***********************************
  2. * BLOCK reader/writer for 
  3. *                  AMIGA DOS
  4. ***********************************
  5. j:    move.l    #0,d0        ;Drive number
  6.     move.l    #0,d1        ;Block number to start from
  7.     move.l    #4,d2        ;Blocks to read/write
  8.     move.l    #$8000,d3    ;$8000 drive on,0 skip turn on,+1 write
  9.     lea    $40000,a0    ;data address
  10.     lea    $75000,a1    ;diskbuffer address
  11.     lea    $800000,a6
  12.     move.w    #$7fff,$dff09a
  13.     move.w    #$87f0,$dff096
  14.     bsr    LOAD
  15.     move.w    #$83f0,$dff096
  16.     move.w    #$e02c,$dff09a
  17.     rts
  18.  
  19.  
  20.  
  21. LOAD:    MOVEM.L    D1-D7/A0-A5,-(SP)
  22.     LINK    A6,#-$24
  23.     MOVE.W    D0,D4
  24.     AND.W    #3,D4
  25.     MOVE.W    D4,-$24(A6)
  26.     MOVE.W    D1,-$22(A6)
  27.     MOVE.W    D2,-$20(A6)
  28.     MOVE.W    D3,-$1E(A6)
  29.     MOVE.L    A0,-$1C(A6)
  30.     MOVE.L    A1,-$18(A6)
  31.     ROR.W    #2,D0
  32.     AND.W    #1,D0
  33.     ADDQ.W    #1,D0
  34.     MOVE.W    D0,-$14(A6)
  35.     MOVEQ    #$1E,D0
  36.     MOVE.W    D2,D3
  37.     BEQ    CEA
  38.     ADD.W    D1,D3
  39.     CMP.W    #$6E0,D3
  40.     BGT    CEA
  41.     AND.L    #$FFFF,D1
  42.     DIVU    #11,D1
  43.     CMP.W    #1,-$14(A6)
  44.     BEQ.S    C58
  45.     ADD.W    D1,D1
  46. C58:    MOVE.W    D1,-$12(A6)
  47.     SWAP    D1
  48.     MOVE.W    D1,-$10(A6)
  49.     BSR    C6B8
  50. C66:    MOVE.W    -$10(A6),D0
  51.     MOVEQ    #11,D1
  52.     SUB.W    D0,D1
  53.     CMP.W    -$20(A6),D1
  54.     BLE.S    C78
  55.     MOVE.W    -$20(A6),D1
  56. C78:    MOVE.W    D1,-14(A6)
  57.     BSR    CF4
  58.     BNE.S    CBC
  59.     CMP.B    #1,-$1D(A6)
  60.     BNE.S    C94
  61.     BSR    C474
  62.     BSR    C1D6
  63.     BNE.S    CBC
  64. C94:    MOVE.W    -$20(A6),D0
  65.     SUB.W    -14(A6),D0
  66.     BEQ.S    CBC
  67.     MOVE.W    D0,-$20(A6)
  68.     MOVE.W    -14(A6),D0
  69.     LSL.L    #8,D0
  70.     ADD.L    D0,D0
  71.     ADD.L    D0,-$1C(A6)
  72.     CLR.W    -$10(A6)
  73.     MOVE.W    -$14(A6),D0
  74.     ADD.W    D0,-$12(A6)
  75.     BRA.S    C66
  76.  
  77. CBC:    MOVE.L    D0,-(SP)
  78.     BSR    C68A
  79.     BSR    C584
  80.     MOVE.L    (SP)+,D0
  81.     BEQ.S    CEA
  82.     MOVEQ    #0,D1
  83.     MOVE.W    -$12(A6),D1
  84.     CMP.W    #1,-$14(A6)
  85.     BEQ.S    CDA
  86.     LSR.W    #1,D1
  87. CDA:    MULU    #11,D1
  88.     ADD.W    -$10(A6),D1
  89.     ADD.W    -6(A6),D1
  90.     MOVE.L    D1,$28(SP)
  91. CEA:    UNLK    A6
  92.     TST.L    D0
  93.     MOVEM.L    (SP)+,D1-D7/A0-A5
  94.     RTS
  95.  
  96. CF4:    MOVEQ    #4,D4
  97. CF6:    CLR.W    -4(A6)
  98.     CLR.W    -6(A6)
  99.     CLR.W    -8(A6)
  100.     MOVE.W    -$12(A6),D2
  101.     BSR    C6D2
  102.     BNE    C1BE
  103.     MOVEQ    #$1D,D0
  104.     BTST    #2,$BFE001
  105.     BEQ    C1BE
  106.     MOVE.L    -$18(A6),A5
  107.     LEA    $400(A5),A5
  108.     MOVE.L    #$AAAAAAAA,(A5)
  109.     MOVE.W    #$4489,4(A5)
  110.     BSR    C3F8
  111.     BSR    C584
  112.     BSR    C254
  113.     BNE    C1BE
  114.     MOVE.W    -12(A6),D0
  115.     BEQ.S    C194
  116.     MULU    #$440,D0
  117.     LEA    6(A5),A0
  118.     BSR    C614
  119.     LEA    $DFF01E,A4
  120.     BSR    C2AC
  121.     BNE.S    C1CC
  122.     CMP.B    #1,-$1D(A6)
  123.     BEQ.S    C170
  124.     MOVE.W    -6(A6),D0
  125.     SUB.W    -14(A6),D0
  126.     BEQ.S    C1D0
  127. C170:    MOVE.L    -$18(A6),A5
  128.     LEA    $400(A5),A5
  129.     MOVE.W    -12(A6),D0
  130.     MULU    #$440,D0
  131.     ADD.L    D0,A5
  132.     MOVE.L    #$AAAAAAAA,(A5)
  133.     MOVE.W    #$4489,4(A5)
  134.     MOVE.L    A5,A0
  135.     BSR    C5CA
  136. C194:    MOVE.W    -10(A6),D0
  137.     BEQ.S    C1B2
  138.     MULU    #$440,D0
  139.     LEA    6(A5),A0
  140.     BSR    C614
  141.     LEA    -2(A6),A4
  142.     CLR.W    (A4)
  143.     BSR    C2AC
  144.     BNE.S    C1CC
  145. C1B2:    MOVE.W    -6(A6),D0
  146.     SUB.W    -14(A6),D0
  147.     BEQ.S    C1D0
  148.     MOVEQ    #$1A,D0
  149. C1BE:    MOVE.L    D0,-(SP)
  150.     MOVEQ    #2,D2
  151.     BSR    C6D2
  152.     BSR    C726
  153.     MOVE.L    (SP)+,D0
  154. C1CC:    DBRA    D4,CF6
  155.  
  156. C1D0:    BSR    C676
  157.     RTS
  158.  
  159. C1D6:    MOVEQ    #4,D2
  160.     CLR.W    -6(A6)
  161. C1DC:    BSR    C786
  162.     MOVE.L    #$64,D0
  163.     BSR    C7C6
  164.     MOVEQ    #$1C,D0
  165.     BTST    #3,$BFE001
  166.     BEQ.S    C244
  167.     LEA    $DFF000,A0
  168.     MOVE.W    #$4000,$24(A0)
  169.     MOVE.L    -$18(A6),$20(A0)
  170.     MOVE.W    #$6600,$9E(A0)
  171.     MOVE.W    #$9100,$9E(A0)
  172.     CMP.W    #$50,-$12(A6)
  173.     BCS.S    C222
  174.     MOVE.W    #$A000,$9E(A0)
  175. C222:    MOVE.W    #$8010,$96(A0)
  176.     MOVE.W    #2,$9C(A0)
  177.     MOVE.W    #$D961,$24(A0)
  178.     MOVE.W    #$D961,$24(A0)
  179.     BSR    C652
  180.     BEQ.S    C244
  181.     DBRA    D2,C1DC
  182.  
  183. C244:    MOVE.L    D0,-(SP)
  184.     MOVE.L    #2,D0
  185.     BSR    C7C6
  186.     MOVE.L    (SP)+,D0
  187.     RTS
  188.  
  189. C254:    MOVEQ    #10,D2
  190. C256:    LEA    6(A5),A0
  191.     MOVE.W    #$40,D0
  192.     BSR    C614
  193.     BSR    C652
  194.     BNE.S    C29E
  195.     BSR    C442
  196.     BEQ.S    C274
  197.     DBRA    D2,C256
  198.  
  199.     BRA.S    C2A0
  200.  
  201. C274:    BSR    C40A
  202.     BNE.S    C2A4
  203.     CMP.W    -$12(A6),D1
  204.     BNE.S    C2A4
  205.     CMP.B    #11,D2
  206.     BGE.S    C2A4
  207.     CMP.B    #11,D3
  208.     BGT.S    C2A4
  209.     SUBQ.B    #1,D3
  210.     MOVE.W    D3,-12(A6)
  211.     MOVE.W    #11,-10(A6)
  212.     SUB.W    D3,-10(A6)
  213.     MOVEQ    #0,D0
  214. C29E:    RTS
  215.  
  216. C2A0:    MOVEQ    #$18,D0
  217.     RTS
  218.  
  219. C2A4:    MOVEQ    #$1B,D0
  220.     RTS
  221.  
  222. C2A8:    MOVEQ    #$19,D0
  223.     RTS
  224.  
  225. C2AC:    MOVE.L    -$18(A6),A5
  226.     LEA    $400(A5),A5
  227.     MOVE.W    -8(A6),D0
  228.     MULU    #$440,D0
  229.     ADD.L    D0,A5
  230.     MOVE.L    #$1770,D0
  231.     BSR    C7E8
  232. C2C8:    BTST    #1,1(A4)
  233.     BNE    C3D0
  234.     BSR    C7DA
  235.     BEQ    C3D4
  236.     TST.L    $440(A5)
  237.     BEQ.S    C2C8
  238.     BSR    C442
  239.     BNE.S    C2A0
  240.     BSR    C40A
  241.     BNE.S    C2A4
  242.     CMP.W    -$12(A6),D1
  243.     BNE.S    C2A4
  244.     MOVE.W    D2,D3
  245.     LEA    8(A5),A0
  246.     BSR    C42C
  247.     MOVE.B    #11,D0
  248.     SUB.B    -7(A6),D0
  249.     LEA    8(A5),A0
  250.     BSR    C5BC
  251.     BSR    C454
  252.     LEA    $30(A5),A0
  253.     BSR    C5BC
  254.     CMP.W    -$10(A6),D3
  255.     BLT    C3C2
  256.     MOVE.W    -14(A6),D0
  257.     ADD.W    -$10(A6),D0
  258.     CMP.W    D0,D3
  259.     BGE    C3C2
  260.     BTST    #1,1(A4)
  261.     BNE    C3D0
  262.     MOVE.W    -4(A6),D0
  263.     BTST    D3,D0
  264.     BNE    C3C2
  265.     CMP.B    #1,-$1D(A6)
  266.     BNE.S    C380
  267.     BSR    C3D8
  268.     MOVE.L    -$1C(A6),A0
  269.     ADD.L    D1,A0
  270.     LEA    $40(A5),A1
  271.     BSR    C4D0
  272.     BTST    #1,1(A4)
  273.     BNE    C3D0
  274.     LEA    $40(A5),A0
  275.     MOVE.W    #$400,D1
  276.     BSR    C45A
  277.     LEA    $38(A5),A0
  278.     BSR    C5BC
  279.     BSR    C3E8
  280.     BRA.S    C3C2
  281.  
  282. C380:    LEA    $40(A5),A0
  283.     MOVE.W    #$400,D1
  284.     BSR    C45A
  285.     MOVE.L    D0,-(SP)
  286.     LEA    $38(A5),A0
  287.     BSR    C42C
  288.     CMP.L    (SP)+,D0
  289.     BNE    C2A8
  290.     BTST    #1,1(A4)
  291.     BNE.S    C3D0
  292.     BSR.S    C3D8
  293.     LEA    $40(A5),A0
  294.     MOVE.L    -$1C(A6),A1
  295.     ADD.L    D1,A1
  296.     BSR    C49A
  297.     BSR    C3E8
  298.     MOVE.W    -6(A6),D0
  299.     CMP.W    -14(A6),D0
  300.     BEQ.S    C3D0
  301. C3C2:    ADDQ.W    #1,-8(A6)
  302.     CMP.W    #11,-8(A6)
  303.     BNE    C2AC
  304. C3D0:    MOVEQ    #0,D0
  305.     RTS
  306.  
  307. C3D4:    MOVEQ    #-1,D0
  308.     RTS
  309.  
  310. C3D8:    MOVE.L    D3,D1
  311.     SUB.W    -$10(A6),D1
  312.     MOVE.L    #$200,D0
  313.     MULU    D0,D1
  314.     RTS
  315.  
  316. C3E8:    MOVE.W    -4(A6),D0
  317.     BSET    D3,D0
  318.     MOVE.W    D0,-4(A6)
  319.     ADDQ.W    #1,-6(A6)
  320.     RTS
  321.  
  322. C3F8:    MOVE.L    A5,A0
  323.     MOVEQ    #10,D1
  324.     MOVEQ    #0,D0
  325. C3FE:    LEA    $440(A0),A0
  326.     MOVE.L    D0,(A0)
  327.     DBRA    D1,C3FE
  328.  
  329.     RTS
  330.  
  331. C40A:    LEA    8(A5),A0
  332.     BSR    C42C
  333.     MOVE.W    D0,D3
  334.     AND.W    #$FF,D3
  335.     MOVE.W    D0,D2
  336.     LSR.W    #8,D2
  337.     SWAP    D0
  338.     MOVE.W    D0,D1
  339.     AND.W    #$FF,D1
  340.     LSR.W    #8,D0
  341.     CMP.B    #$FF,D0
  342.     RTS
  343.  
  344. C42C:    MOVE.L    (A0)+,D0
  345.     MOVE.L    (A0)+,D1
  346.     AND.L    #$55555555,D0
  347.     AND.L    #$55555555,D1
  348.     ADD.L    D0,D0
  349.     OR.L    D1,D0
  350.     RTS
  351.  
  352. C442:    BSR    C454
  353.     MOVE.L    D0,-(SP)
  354.     LEA    $30(A5),A0
  355.     BSR    C42C
  356.     CMP.L    (SP)+,D0
  357.     RTS
  358.  
  359. C454:    LEA    8(A5),A0
  360.     MOVEQ    #$28,D1
  361. C45A:    MOVE.L    D2,-(SP)
  362.     LSR.W    #2,D1
  363.     SUBQ.W    #1,D1
  364.     MOVEQ    #0,D0
  365. C462:    MOVE.L    (A0)+,D2
  366.     EOR.L    D2,D0
  367.     DBRA    D1,C462
  368.  
  369.     MOVE.L    (SP)+,D2
  370.     AND.L    #$55555555,D0
  371.     RTS
  372.  
  373. C474:    MOVE.L    -$18(A6),A0
  374.     LEA    $400(A0),A1
  375.     MOVE.L    #$AAAAAAAA,D0
  376.     MOVE.L    D0,D1
  377.     MOVE.L    D0,D2
  378.     MOVE.L    D0,D3
  379.     MOVE.L    D0,D4
  380.     MOVE.L    D0,D5
  381.     MOVE.L    D0,D6
  382.     MOVE.L    D0,D7
  383. C490:    MOVEM.L    D0-D7,-(A1)
  384.     CMP.L    A1,A0
  385.     BNE.S    C490
  386.     RTS
  387.  
  388. C49A:    MOVE.L    A2,-(SP)
  389.     BSR    C590
  390.     ADD.L    D0,A0
  391.     SUBQ.L    #1,A0
  392.     MOVE.L    A0,$50(A2)
  393.     ADD.L    D0,A0
  394.     MOVE.L    A0,$4C(A2)
  395.     ADD.L    D0,A1
  396.     SUBQ.L    #1,A1
  397.     MOVE.L    A1,$54(A2)
  398.     MOVE.W    #$1DD8,$40(A2)
  399.     MOVE.W    #2,$42(A2)
  400.     LSL.W    #2,D0
  401.     OR.W    #8,D0
  402.     MOVE.W    D0,$58(A2)
  403.     MOVE.L    (SP)+,A2
  404.     RTS
  405.  
  406. C4D0:    MOVEM.L    D1-D3/A2,-(SP)
  407.     BSR    C590
  408.     MOVE.W    D0,D1
  409.     LSL.W    #2,D1
  410.     OR.W    #8,D1
  411.     MOVE.L    A0,$50(A2)
  412.     MOVE.L    A0,$4C(A2)
  413.     MOVE.L    A1,$54(A2)
  414.     MOVE.W    #$1DB1,$40(A2)
  415.     MOVE.W    #0,$42(A2)
  416.     MOVE.W    D1,$58(A2)
  417.     BSR    C584
  418.     MOVE.L    A0,$50(A2)
  419.     MOVE.L    A1,$4C(A2)
  420.     MOVE.L    A1,$54(A2)
  421.     MOVE.W    #$2D8C,$40(A2)
  422.     MOVE.W    D1,$58(A2)
  423.     BSR    C584
  424.     MOVE.L    A0,D2
  425.     ADD.L    D0,D2
  426.     SUBQ.L    #2,D2
  427.     MOVE.L    A1,D3
  428.     ADD.L    D0,D3
  429.     ADD.L    D0,D3
  430.     SUBQ.L    #2,D3
  431.     MOVE.L    D2,$50(A2)
  432.     MOVE.L    D2,$4C(A2)
  433.     MOVE.L    D3,$54(A2)
  434.     MOVE.W    #$DB1,$40(A2)
  435.     MOVE.W    #$1002,$42(A2)
  436.     MOVE.W    D1,$58(A2)
  437.     BSR    C584
  438.     MOVE.L    A1,D3
  439.     ADD.L    D0,D3
  440.     MOVE.L    A0,$50(A2)
  441.     MOVE.L    D3,$4C(A2)
  442.     MOVE.L    D3,$54(A2)
  443.     MOVE.W    #$1D8C,$40(A2)
  444.     MOVE.W    #0,$42(A2)
  445.     MOVE.W    D1,$58(A2)
  446.     BSR    C584
  447.     MOVE.L    D0,D1
  448.     MOVE.L    A1,A0
  449.     BSR    C5CA
  450.     ADD.L    D1,A0
  451.     BSR    C5CA
  452.     ADD.L    D1,A0
  453.     BSR.S    C5CA
  454.     MOVEM.L    (SP)+,D1-D3/A2
  455.     RTS
  456.  
  457. C584:    BTST    #6,$DFF002
  458.     BNE.S    C584
  459.     RTS
  460.  
  461. C590:    LEA    $DFF000,A2
  462.     BSR    C584
  463.     MOVE.W    #$8040,$96(A2)
  464.     MOVE.L    #$FFFFFFFF,$44(A2)
  465.     MOVE.W    #$5555,$70(A2)
  466.     CLR.W    $64(A2)
  467.     CLR.W    $62(A2)
  468.     CLR.W    $66(A2)
  469.     RTS
  470.  
  471. C5BC:    MOVE.L    D0,-(SP)
  472.     LSR.L    #1,D0
  473.     BSR    C5E8
  474.     MOVE.L    (SP)+,D0
  475.     BSR    C5E8
  476. C5CA:    MOVE.B    (A0),D0
  477.     BTST    #0,-1(A0)
  478.     BNE.S    C5E0
  479.     BTST    #6,D0
  480.     BNE.S    C5E6
  481.     BSET    #7,D0
  482.     BRA.S    C5E4
  483.  
  484. C5E0:    BCLR    #7,D0
  485. C5E4:    MOVE.B    D0,(A0)
  486. C5E6:    RTS
  487.  
  488. C5E8:    AND.L    #$55555555,D0
  489.     MOVE.L    D0,D2
  490.     EOR.L    #$55555555,D2
  491.     MOVE.L    D2,D1
  492.     ADD.L    D2,D2
  493.     LSR.L    #1,D1
  494.     BSET    #$1F,D1
  495.     AND.L    D2,D1
  496.     OR.L    D1,D0
  497.     BTST    #0,-1(A0)
  498.     BEQ.S    C610
  499.     BCLR    #$1F,D0
  500. C610:    MOVE.L    D0,(A0)+
  501.     RTS
  502.  
  503. C614:    LEA    $DFF000,A1
  504.     MOVE.W    #$4000,$24(A1)
  505.     MOVE.W    #$8010,$96(A1)
  506.     MOVE.W    #$6600,$9E(A1)
  507.     MOVE.W    #$9500,$9E(A1)
  508.     MOVE.W    #$4489,$7E(A1)
  509.     MOVE.L    A0,$20(A1)
  510.     MOVE.W    #2,$9C(A1)
  511.     LSR.W    #1,D0
  512.     OR.W    #$8000,D0
  513.     MOVE.W    D0,$24(A1)
  514.     MOVE.W    D0,$24(A1)
  515.     RTS
  516.  
  517. C652:    LEA    $DFF000,A1
  518.     MOVE.L    #$1770,D0
  519.     BSR    C7E8
  520. C662:    BTST    #1,$1F(A1)
  521.     BNE.S    C674
  522.     BSR    C7DA
  523.     BNE.S    C662
  524.     MOVEQ    #-$1,D0
  525.     BRA.S    C676
  526.  
  527. C674:    MOVEQ    #0,D0
  528. C676:    MOVE.W    #2,$DFF09C
  529.     MOVE.W    #$4000,$DFF024
  530.     TST.L    D0
  531.     RTS
  532.  
  533. C68A:    MOVE.W    #$400,$DFF09E
  534.     TST.W    -$1E(A6)
  535.     BPL.S    C6B6
  536.     MOVEQ    #-$1,D1
  537. C69A:    MOVE.B    D1,$BFD100
  538.     MOVE.W    -$24(A6),D0
  539.     ADDQ.L    #3,D0
  540.     BCLR    D0,D1
  541.     MOVE.B    D1,$BFD100
  542.     BSET    D0,D1
  543.     MOVE.B    D1,$BFD100
  544. C6B6:    RTS
  545.  
  546. C6B8:    MOVEQ    #-$1,D1
  547.     MOVE.B    D1,$BFD100
  548.     BCLR    #7,D1
  549.     BSR.S    C69A
  550.     MOVE.L    #$C8,D0
  551.     BSR    C7C6
  552.     RTS
  553.  
  554. C6D2:    MOVEM.L    D2/D3,-(SP)
  555.     MOVE.L    D2,D3
  556.     BSR    C786
  557.     MOVE.W    -$24(A6),D0
  558.     ADD.W    D0,D0
  559.     LEA    L802(PC),A0
  560.     MOVE.W    0(A0,D0.W),D0
  561.     BPL.S    C6F2
  562.     BSR    C726
  563.     BNE.S    C720
  564. C6F2:    LSR.W    #1,D0
  565.     LSR.W    #1,D2
  566.     MOVEQ    #1,D1
  567.     SUB.W    D0,D2
  568.     BEQ.S    C70C
  569.     BPL.S    C702
  570.     MOVEQ    #-$1,D1
  571.     NEG.W    D2
  572. C702:    MOVEQ    #3,D0
  573.     BSR    C75C
  574.     SUBQ.W    #1,D2
  575.     BNE.S    C702
  576. C70C:    MOVE.W    -$24(A6),D0
  577.     ADD.W    D0,D0
  578.     LEA    L802(PC),A0
  579.     MOVE.W    D3,0(A0,D0.W)
  580.     BSR    C786
  581.     MOVEQ    #0,D0
  582. C720:    MOVEM.L    (SP)+,D2/D3
  583.     RTS
  584.  
  585. C726:    MOVE.L    D2,-(SP)
  586.     MOVEQ    #$55,D2
  587. C72C:    BTST    #4,$BFE001
  588.     BEQ.S    C746
  589.     MOVEQ    #3,D0
  590.     MOVEQ    #-$1,D1
  591.     BSR    C75C
  592.     DBRA    D2,C72C
  593.  
  594.     MOVEQ    #$1E,D0
  595.     BRA.S    C756
  596.  
  597. C746:    MOVE.W    -$24(A6),D0
  598.     ADD.W    D0,D0
  599.     LEA    L802(PC),A0
  600.     CLR.W    0(A0,D0.W)
  601.     MOVEQ    #0,D0
  602. C756:    MOVE.L    (SP)+,D2
  603.     RTS
  604.  
  605. C75C:    MOVE.L    D0,-(SP)
  606.     BSR    C792
  607.     TST.B    D1
  608.     BMI.S    C76A
  609.     BCLR    #1,D0
  610. C76A:    BCLR    #0,D0
  611.     MOVE.B    D0,$BFD100
  612.     BSET    #0,D0
  613.     MOVE.B    D0,$BFD100
  614.     MOVE.L    (SP)+,D0
  615.     BSR    C7C6
  616.     RTS
  617.  
  618. C786:    BSR    C792
  619.     MOVE.B    D0,$BFD100
  620.     RTS
  621.  
  622. C792:    MOVEM.W    D1/D2,-(SP)
  623.     MOVE.W    -$24(A6),D0
  624.     MOVE.B    $BFD100,D2
  625.     OR.B    #$7F,D2
  626.     ADD.B    #3,D0
  627.     BCLR    D0,D2
  628.     SUB.B    #3,D0
  629.     ADD.W    D0,D0
  630.     MOVE.W    L802(PC,D0.W),D1
  631.     BTST    #0,D1
  632.     BEQ.S    C7BE
  633.     BCLR    #2,D2
  634. C7BE:    MOVE.B    D2,D0
  635.     MOVEM.W    (SP)+,D1/D2
  636.     RTS
  637.  
  638. C7C6:    BSR    C7E8
  639. C7CA:    BTST    #0,$BFEE01
  640.     BNE.S    C7CA
  641.     SUBQ.L    #1,D0
  642.     BNE.S    C7C6
  643.     RTS
  644.  
  645. C7DA:    BTST    #0,$BFEE01
  646.     BNE.S    C800
  647.     SUBQ.L    #1,D0
  648.     BEQ.S    C800
  649. C7E8:    MOVE.B    #8,$BFEE01
  650.     MOVE.B    #$CC,$BFE401
  651.     MOVE.B    #2,$BFE501
  652. C800:    RTS
  653.  
  654. L802:    dc.l    -1
  655.     dc.l    -1
  656.