home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / MBUG / MBUG097.ARC / BDOS.MAC < prev    next >
Text File  |  1979-12-31  |  25KB  |  2,072 lines

  1.  
  2. ;************ B D O S **********
  3.  
  4. SERNO2:    DB    0,0,0,0,0,0
  5.  
  6. BDOSIN:    JP    L4611
  7.  
  8. ERRM1:    DW    L4699
  9. ERRM2:    DW    L46A5
  10. ERRM3:    DW    L46AB
  11. ERRM4:    DW    L46B1
  12.  
  13. L4611:    EX    DE,HL
  14.     LD    (ENTRDE),HL
  15.     EX    DE,HL
  16.     LD    A,E
  17.     LD    (ENTRYE),A
  18.     LD    HL,0
  19.     LD    (RETNDE),HL
  20.     ADD    HL,SP
  21.     LD    (L490F),HL
  22.     LD    SP,RAS2
  23.     XOR    A
  24.     LD    (L53E0),A
  25.     LD    (L53DE),A
  26.     LD    HL,L5374
  27.     PUSH    HL
  28.     LD    A,C
  29.     CP    29
  30.     RET    NC
  31.     LD    C,E
  32.     LD    HL,CVECS
  33.     LD    E,A
  34.     LD    D,0
  35.     ADD    HL,DE
  36.     ADD    HL,DE
  37.     LD    E,(HL)
  38.     INC    HL
  39.     LD    D,(HL)
  40.     LD    HL,(ENTRDE)
  41.     EX    DE,HL
  42.     JP    (HL)
  43.  
  44. CVECS:    DW    wboote
  45.     DW    VEC1
  46.     DW    VEC2
  47.     DW    VEC3
  48.     DW    PUNCHO
  49.     DW    PRNTR
  50.     DW    VEC6
  51.     DW    VEC7
  52.     DW    VEC8
  53.     DW    VEC9
  54.     DW    VEC10
  55.     DW    VEC11
  56.     DW    VEC12
  57.     DW    VEC13
  58.     DW    VEC14
  59.     DW    VEC15
  60.     DW    VEC16
  61.     DW    VEC17
  62.     DW    VEC18
  63.     DW    VEC19
  64.     DW    VEC20
  65.     DW    VEC21
  66.     DW    VEC22
  67.     DW    VEC23
  68.     DW    VEC24
  69.     DW    VEC25
  70.     DW    VEC26
  71.     DW    VEC27
  72.     DW    VEC28
  73.     DW    VEC29
  74.     DW    VEC30
  75.     DW    VEC31
  76.     DW    VEC32
  77.     DW    VEC33
  78.     DW    VEC34
  79.     DW    VEC35
  80.     DW    VEC36
  81.     DW    VEC37
  82.     DW    RETURN
  83.     DW    RETURN
  84.     DW    VEC40
  85.  
  86. L4699:    LD    HL,L46CA
  87.     CALL    L46E5
  88.     CP    3
  89.     JP    Z,0
  90.     RET
  91.  
  92. L46A5:    LD    HL,L46D5
  93.     JP    L46B4
  94.  
  95. L46AB:    LD    HL,L46E1
  96.     JP    L46B4
  97.  
  98. L46B1:    LD    HL,L46DC
  99. L46B4:    CALL    L46E5
  100.     JP    0
  101.  
  102. L46BA:    DEFM    'CP/M Err On  : $'
  103. L46CA:    DEFM    'Bad Sector$'
  104. L46D5:    DEFM    'Select$'
  105. L46DC:    DEFM    'File '
  106. L46E1:    DEFM    'R/O$'
  107.  
  108. L46E5:    PUSH    HL
  109.     CALL    CRLF2
  110.     LD    A,(L4942)
  111.     ADD    A,41
  112.     LD    (L46BA+0C),A
  113.     LD    BC,L46BA
  114.     CALL    PSTRNG
  115.     POP    BC
  116.     CALL    PSTRNG
  117. CHIN2:    LD    HL,L490E
  118.     LD    A,(HL)
  119.     LD    (HL),0
  120.     OR    A
  121.     RET    NZ
  122.     JP    CONIN
  123.  
  124. CHNECH:    CALL    CHIN2
  125.     CALL    L4714
  126.     RET    C
  127.     PUSH    AF
  128.     LD    C,A
  129.     CALL    VEC2
  130.     POP    AF
  131.     RET
  132.  
  133. L4714:    CP    0DH
  134.     RET    Z
  135.     CP    0AH
  136.     RET    Z
  137.     CP    9
  138.     RET    Z
  139.     CP    8
  140.     RET    Z
  141.     CP    20
  142.     RET
  143.  
  144. L4723:    LD    A,(L490E)
  145.     OR    A
  146.     JP    NZ,L4745
  147.     CALL    INSTAT
  148.     AND    1
  149.     RET    Z
  150.     CALL    CONIN
  151.     CP    13
  152.     JP    NZ,L4742
  153.     CALL    CONIN
  154.     CP    3
  155.     JP    Z,0
  156.     XOR    A
  157.     RET
  158.  
  159. L4742:    LD    (L490E),A
  160. L4745:    LD    A,1
  161.     RET
  162.  
  163. COUT3:    LD    A,(IOFLAG)
  164.     OR    A
  165.     JP    NZ,L4762
  166.     PUSH    BC
  167.     CALL    L4723
  168.     POP    BC
  169.     PUSH    BC
  170.     CALL    bconout
  171.     POP    BC
  172.     PUSH    BC
  173.     LD    A,(PTRFLG)
  174.     OR    A
  175.     CALL    NZ,PRNTR
  176.     POP    BC
  177. L4762:    LD    A,C
  178.     LD    HL,LNEPOS
  179.     CP    7FH
  180.     RET    Z
  181.     INC    (HL)
  182.     CP    20
  183.     RET    NC
  184.     DEC    (HL)
  185.     LD    A,(HL)
  186.     OR    A
  187.     RET    Z
  188.     LD    A,C
  189.     CP    8
  190.     JP    NZ,L4779
  191.     DEC    (HL)
  192.     RET
  193.  
  194. L4779:    CP    0AH
  195.     RET    NZ
  196.     LD    (HL),0
  197.     RET
  198.  
  199. ;    ^X format char out
  200. L477F:    LD    A,C
  201.     CALL    L4714
  202.     JP    NC,VEC2        ;not control code
  203.     PUSH    AF
  204.     LD    C,'^'        ;Show as ^X
  205.     CALL    COUT3
  206.     POP    AF
  207.     OR    40
  208.     LD    C,A
  209. VEC2:    LD    A,C
  210.     CP    9
  211.     JP    NZ,COUT3
  212. EXPTAB:    LD    C,20        ;Expand tabs
  213.     CALL    COUT3
  214.     LD    A,(LNEPOS)
  215.     AND    7
  216.     JP    NZ,EXPTAB
  217.     RET
  218.  
  219. DESTBS:    CALL    NDBSPC
  220.     LD    C,20
  221.     CALL    bconout
  222. NDBSPC:    LD    C,8
  223.     JP    bconout
  224.  
  225. L47B1:    LD    C,'#'
  226.     CALL    COUT3
  227.     CALL    CRLF2
  228. L47B9:    LD    A,(LNEPOS)
  229.     LD    HL,L490B
  230.     CP    (HL)
  231.     RET    NC
  232.     LD    C,20
  233.     CALL    COUT3
  234.     JP    L47B9
  235.  
  236. CRLF2:    LD    C,0DH
  237.     CALL    COUT3
  238.     LD    C,0AH
  239.     JP    COUT3
  240.  
  241. PSTRNG:    LD    A,(BC)
  242.     CP    '$'
  243.     RET    Z
  244.     INC    BC
  245.     PUSH    BC
  246.     LD    C,A
  247.     CALL    VEC2
  248.     POP    BC
  249.     JP    PSTRNG
  250.  
  251. ;    Create line buffer
  252. VEC10:    LD    A,(LNEPOS)
  253.     LD    (L490B),A
  254.     LD    HL,(ENTRDE)
  255.     LD    C,(HL)
  256.     INC    HL
  257.     PUSH    HL
  258.     LD    B,0
  259. L47EF:    PUSH    BC
  260.     PUSH    HL
  261. L47F1:    CALL    CHIN2
  262.     AND    7FH
  263.     POP    HL
  264.     POP    BC
  265.     CP    0DH
  266.     JP    Z,L48C1
  267.     CP    0AH
  268.     JP    Z,L48C1
  269.     CP    8
  270.     JP    NZ,L4816
  271.     LD    A,B
  272.     OR    A
  273.     JP    Z,L47EF
  274.     DEC    B
  275.     LD    A,(LNEPOS)
  276.     LD    (IOFLAG),A
  277.     JP    L4870
  278.  
  279. L4816:    CP    7FH
  280.     JP    NZ,L4826
  281.     LD    A,B
  282.     OR    A
  283.     JP    Z,L47EF
  284.     LD    A,(HL)
  285.     DEC    B
  286.     DEC    HL
  287.     JP    L48A9
  288.  
  289. L4826:    CP    5
  290.     JP    NZ,L4837
  291.     PUSH    BC
  292.     PUSH    HL
  293.     CALL    CRLF2
  294.     XOR    A
  295.     LD    (L490B),A
  296.     JP    L47F1
  297.  
  298. L4837:    CP    10
  299.     JP    NZ,L4848
  300.     PUSH    HL
  301.     LD    HL,PTRFLG
  302.     LD    A,1
  303.     SUB    (HL)
  304.     LD    (HL),A
  305.     POP    HL
  306.     JP    L47EF
  307.  
  308. L4848:    CP    18
  309.     JP    NZ,L485F
  310.     POP    HL
  311. L484E:    LD    A,(L490B)
  312.     LD    HL,LNEPOS
  313.     CP    (HL)
  314.     JP    NC,VEC10
  315.     DEC    (HL)
  316.     CALL    DESTBS
  317.     JP    L484E
  318.  
  319. ;    Delete line
  320. L485F:    CP    15
  321.     JP    NZ,L486B
  322.     CALL    L47B1
  323.     POP    HL
  324.     JP    VEC10
  325.  
  326. ;    Reprint line
  327. L486B:    CP    12
  328.     JP    NZ,L48A6
  329. L4870:    PUSH    BC
  330.     CALL    L47B1
  331.     POP    BC
  332.     POP    HL
  333.     PUSH    HL
  334.     PUSH    BC
  335. L4878:    LD    A,B
  336.     OR    A
  337.     JP    Z,L488A
  338.     INC    HL
  339.     LD    C,(HL)
  340.     DEC    B
  341.     PUSH    BC
  342.     PUSH    HL
  343.     CALL    L477F
  344.     POP    HL
  345.     POP    BC
  346.     JP    L4878
  347.  
  348. L488A:    PUSH    HL
  349.     LD    A,(IOFLAG)
  350.     OR    A
  351.     JP    Z,L47F1
  352.     LD    HL,LNEPOS
  353.     SUB    (HL)
  354.     LD    (IOFLAG),A
  355. L4899:    CALL    DESTBS
  356.     LD    HL,IOFLAG
  357.     DEC    (HL)
  358.     JP    NZ,L4899
  359.     JP    L47F1
  360.  
  361. L48A6:    INC    HL
  362.     LD    (HL),A
  363.     INC    B
  364. L48A9:    PUSH    BC
  365.     PUSH    HL
  366.     LD    C,A
  367.     CALL    L477F
  368.     POP    HL
  369.     POP    BC
  370.     LD    A,(HL)
  371.     CP    3
  372.     LD    A,B
  373.     JP    NZ,L48BD
  374.     CP    1
  375.     JP    Z,0
  376. L48BD:    CP    C
  377.     JP    C,L47EF
  378. L48C1:    POP    HL
  379.     LD    (HL),B
  380.     LD    C,0DH
  381.     JP    COUT3
  382.  
  383. ;    Character in with echo
  384. VEC1:    CALL    CHNECH
  385.     JP    RECOVR
  386.  
  387. ;    PUNCH input
  388. VEC3:    CALL    PUNCHI
  389.     JP    RECOVR
  390.  
  391. ;    Direct console I/O
  392. VEC6:    LD    A,C
  393.     INC    A
  394.     JP    Z,L48E0
  395.     INC    A
  396.     JP    Z,INSTAT
  397.     JP    bconout
  398.  
  399. L48E0:    CALL    INSTAT
  400.     OR    A
  401.     JP    Z,L5391
  402.     CALL    CONIN
  403.     JP    RECOVR
  404.  
  405. ;    Get I/O byte
  406. VEC7:    LD    A,(IOBYTE)
  407.     JP    RECOVR
  408.  
  409. ;    Set I/O byte
  410. VEC8:    LD    HL,IOBYTE
  411.     LD    (HL),C
  412.     RET
  413.  
  414. ;    Print string term by "$"
  415. VEC9:    EX    DE,HL
  416.     LD    C,L
  417.     LD    B,H
  418.     JP    PSTRNG
  419.  
  420. ;    Get console status
  421. VEC11:    CALL    L4723
  422. RECOVR:    LD    (RETNDE),A
  423. RETURN:    RET
  424.  
  425. RETN1:    LD    A,1
  426.     JP    RECOVR
  427.  
  428. IOFLAG:    DB    0    ;COMPCOL true if computing column posn
  429. L490B:    DB    0    ;starting col posn after read
  430. LNEPOS:    DB    0    ;column position
  431. PTRFLG:    DB    0    ;listing toggle
  432. L490E:    DB    0    ;initial key char
  433. L490F:    DW    0    ;entry stack pointer
  434. ; local stack
  435.     db    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  436.     db    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  437.     db    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  438. RAS2:
  439.  
  440. USRLVL:    db    0    ;current user number
  441. L4942:    db    0    ;current disk number
  442. ENTRDE:    DW    0    ;information address
  443. RETNDE:    DW    0    ;address value to return
  444.  
  445.  
  446. L4947:    LD    HL,ERRM2
  447. PRTERR:    LD    E,(HL)
  448.     INC    HL
  449.     LD    D,(HL)
  450.     EX    DE,HL
  451.     JP    (HL)
  452.  
  453. COPYC:    INC    C
  454. L4950:    DEC    C
  455.     RET    Z
  456.     LD    A,(DE)
  457.     LD    (HL),A
  458.     INC    DE
  459.     INC    HL
  460.     JP    L4950
  461.  
  462. L4959:    LD    A,(L4942)
  463.     LD    C,A
  464.     CALL    SELDSK
  465.     LD    A,H
  466.     OR    L
  467.     RET    Z
  468.     LD    E,(HL)
  469.     INC    HL
  470.     LD    D,(HL)
  471.     INC    HL
  472.     LD    (DPBSV1),HL    ;Unpack returned DPBASE vectors
  473.     INC    HL
  474.     INC    HL
  475.     LD    (DPBSV2),HL
  476.     INC    HL
  477.     INC    HL
  478.     LD    (DPBSV3),HL
  479.     INC    HL
  480.     INC    HL
  481.     EX    DE,HL
  482.     LD    (SKWPTR),HL    ;Set pointer to skew table
  483.     LD    HL,DPBSV4
  484.     LD    C,8
  485.     CALL    COPYC
  486.     LD    HL,(DPBSV5)
  487.     EX    DE,HL
  488.     LD    HL,L53C1
  489.     LD    C,0FH
  490.     CALL    COPYC
  491.     LD    HL,(L53C6)
  492.     LD    A,H
  493.     LD    HL,L53DD
  494.     LD    (HL),0FFH
  495.     OR    A
  496.     JP    Z,L499D
  497.     LD    (HL),0
  498. L499D:    LD    A,0FFH
  499.     OR    A
  500.     RET
  501.  
  502. L49A1:    CALL    HOME
  503.     XOR    A
  504.     LD    HL,(DPBSV2)
  505.     LD    (HL),A
  506.     INC    HL
  507.     LD    (HL),A
  508.     LD    HL,(DPBSV3)
  509.     LD    (HL),A
  510.     INC    HL
  511.     LD    (HL),A
  512.     RET
  513.  
  514. L49B2:    CALL    READ
  515.     JP    L49BB
  516.  
  517. L49B8:    CALL    WRITE
  518. L49BB:    OR    A
  519.     RET    Z
  520.     LD    HL,ERRM1
  521.     JP    PRTERR
  522.  
  523. L49C3:    LD    HL,(L53EA)
  524.     LD    C,2
  525.     CALL    HLDIV2
  526.     LD    (L53E5),HL
  527.     LD    (L53EC),HL
  528. L49D1:    LD    HL,L53E5
  529.     LD    C,(HL)
  530.     INC    HL
  531.     LD    B,(HL)
  532.     LD    HL,(DPBSV3)
  533.     LD    E,(HL)
  534.     INC    HL
  535.     LD    D,(HL)
  536.     LD    HL,(DPBSV2)
  537.     LD    A,(HL)
  538.     INC    HL
  539.     LD    H,(HL)
  540.     LD    L,A
  541. L49E4:    LD    A,C
  542.     SUB    E
  543.     LD    A,B
  544.     SBC    A,D
  545.     JP    NC,L49FA
  546.     PUSH    HL
  547.     LD    HL,(L53C1)
  548.     LD    A,E
  549.     SUB    L
  550.     LD    E,A
  551.     LD    A,D
  552.     SBC    A,H
  553.     LD    D,A
  554.     POP    HL
  555.     DEC    HL
  556.     JP    L49E4
  557.  
  558. L49FA:    PUSH    HL
  559.     LD    HL,(L53C1)
  560.     ADD    HL,DE
  561.     JP    C,L4A0F
  562.     LD    A,C
  563.     SUB    L
  564.     LD    A,B
  565.     SBC    A,H
  566.     JP    C,L4A0F
  567.     EX    DE,HL
  568.     POP    HL
  569.     INC    HL
  570.     JP    L49FA
  571.  
  572. L4A0F:    POP    HL
  573.     PUSH    BC
  574.     PUSH    DE
  575.     PUSH    HL
  576.     EX    DE,HL
  577.     LD    HL,(L53CE)
  578.     ADD    HL,DE
  579.     LD    B,H
  580.     LD    C,L
  581.     CALL    SETTRK
  582.     POP    DE
  583.     LD    HL,(DPBSV2)
  584.     LD    (HL),E
  585.     INC    HL
  586.     LD    (HL),D
  587.     POP    DE
  588.     LD    HL,(DPBSV3)
  589.     LD    (HL),E
  590.     INC    HL
  591.     LD    (HL),D
  592.     POP    BC
  593.     LD    A,C
  594.     SUB    E
  595.     LD    C,A
  596.     LD    A,B
  597.     SBC    A,D
  598.     LD    B,A
  599.     LD    HL,(SKWPTR)
  600.     EX    DE,HL
  601.     CALL    L5430
  602.     LD    C,L
  603.     LD    B,H
  604.     JP    SETSEC
  605.  
  606. L4A3E:    LD    HL,L53C3
  607.     LD    C,(HL)
  608.     LD    A,(L53E3)
  609. L4A45:    OR    A
  610.     RRA
  611.     DEC    C
  612.     JP    NZ,L4A45
  613.     LD    B,A
  614.     LD    A,8
  615.     SUB    (HL)
  616.     LD    C,A
  617.     LD    A,(L53E2)
  618. L4A53:    DEC    C
  619.     JP    Z,L4A5C
  620.     OR    A
  621.     RLA
  622.     JP    L4A53
  623.  
  624. L4A5C:    ADD    A,B
  625.     RET
  626.  
  627. L4A5E:    LD    HL,(ENTRDE)
  628.     LD    DE,10
  629.     ADD    HL,DE
  630.     ADD    HL,BC
  631.     LD    A,(L53DD)
  632.     OR    A
  633.     JP    Z,L4A71
  634.     LD    L,(HL)
  635.     LD    H,0
  636.     RET
  637.  
  638. L4A71:    ADD    HL,BC
  639.     LD    E,(HL)
  640.     INC    HL
  641.     LD    D,(HL)
  642.     EX    DE,HL
  643.     RET
  644.  
  645. L4A77:    CALL    L4A3E
  646.     LD    C,A
  647.     LD    B,0
  648.     CALL    L4A5E
  649.     LD    (L53E5),HL
  650.     RET
  651.  
  652. L4A84:    LD    HL,(L53E5)
  653.     LD    A,L
  654.     OR    H
  655.     RET
  656.  
  657. L4A8A:    LD    A,(L53C3)
  658.     LD    HL,(L53E5)
  659. L4A90:    ADD    HL,HL
  660.     DEC    A
  661.     JP    NZ,L4A90
  662.     LD    (L53E7),HL
  663.     LD    A,(L53C4)
  664.     LD    C,A
  665.     LD    A,(L53E3)
  666.     AND    C
  667.     OR    L
  668.     LD    L,A
  669.     LD    (L53E5),HL
  670.     RET
  671.  
  672. L4AA6:    LD    HL,(ENTRDE)
  673.     LD    DE,0CH
  674.     ADD    HL,DE
  675.     RET
  676.  
  677. L4AAE:    LD    HL,(ENTRDE)
  678.     LD    DE,0FH
  679.     ADD    HL,DE
  680.     EX    DE,HL
  681.     LD    HL,11
  682.     ADD    HL,DE
  683.     RET
  684.  
  685. L4ABB:    CALL    L4AAE
  686.     LD    A,(HL)
  687.     LD    (L53E3),A
  688.     EX    DE,HL
  689.     LD    A,(HL)
  690.     LD    (L53E1),A
  691.     CALL    L4AA6
  692.     LD    A,(L53C5)
  693.     AND    (HL)
  694.     LD    (L53E2),A
  695.     RET
  696.  
  697. L4AD2:    CALL    L4AAE
  698.     LD    A,(L53D5)
  699.     CP    2
  700.     JP    NZ,L4ADE
  701.     XOR    A
  702. L4ADE:    LD    C,A
  703.     LD    A,(L53E3)
  704.     ADD    A,C
  705.     LD    (HL),A
  706.     EX    DE,HL
  707.     LD    A,(L53E1)
  708.     LD    (HL),A
  709.     RET
  710.  
  711. HLDIV2:    INC    C
  712. HDLUP:    DEC    C
  713.     RET    Z
  714.     LD    A,H
  715.     OR    A
  716.     RRA
  717.     LD    H,A
  718.     LD    A,L
  719.     RRA
  720.     LD    L,A
  721.     JP    HDLUP
  722.  
  723. CSMSEC:    LD    C,80
  724.     LD    HL,(DPBSV4)
  725.     XOR    A
  726. CSMLUP:    ADD    A,(HL)
  727.     INC    HL
  728.     DEC    C
  729.     JP    NZ,CSMLUP
  730.     RET
  731.  
  732. HLMUL2:    INC    C
  733. HMLUP:    DEC    C
  734.     RET    Z
  735.     ADD    HL,HL
  736.     JP    HMLUP
  737.  
  738. SETBIT:    PUSH    BC
  739.     LD    A,(L4942)
  740.     LD    C,A
  741.     LD    HL,0001
  742.     CALL    HLMUL2
  743.     POP    BC
  744.     LD    A,C
  745.     OR    L
  746.     LD    L,A
  747.     LD    A,B
  748.     OR    H
  749.     LD    H,A
  750.     RET
  751.  
  752. L4B1E:    LD    HL,(DROVEC)
  753.     LD    A,(L4942)
  754.     LD    C,A
  755.     CALL    HLDIV2
  756.     LD    A,L
  757.     AND    1
  758.     RET
  759.  
  760. ;    Write protect disk
  761. VEC28:    LD    HL,DROVEC
  762.     LD    C,(HL)
  763.     INC    HL
  764.     LD    B,(HL)
  765.     CALL    SETBIT
  766.     LD    (DROVEC),HL
  767.     LD    HL,(L53C8)
  768.     INC    HL
  769.     EX    DE,HL
  770.     LD    HL,(DPBSV1)
  771.     LD    (HL),E
  772.     INC    HL
  773.     LD    (HL),D
  774.     RET
  775.  
  776. L4B44:    CALL    L4B5E
  777. L4B47:    LD    DE,9
  778.     ADD    HL,DE
  779.     LD    A,(HL)
  780.     RLA
  781.     RET    NC
  782.     LD    HL,ERRM4
  783.     JP    PRTERR
  784.  
  785. ;    Check disk for read only status
  786. RONLY?:    CALL    L4B1E
  787.     RET    Z
  788.     LD    HL,ERRM3    ;"R/O"
  789.     JP    PRTERR
  790.  
  791. L4B5E:    LD    HL,(DPBSV4)
  792.     LD    A,(L53E9)
  793. HLINCA:    ADD    A,L
  794.     LD    L,A
  795.     RET    NC
  796.     INC    H
  797.     RET
  798.  
  799. GETS2:    LD    HL,(ENTRDE)
  800.     LD    DE,0EH
  801.     ADD    HL,DE
  802.     LD    A,(HL)
  803.     RET
  804.  
  805. CLERS2:    CALL    GETS2
  806.     LD    (HL),0
  807.     RET
  808.  
  809. SIGNS2:    CALL    GETS2
  810.     OR    80
  811.     LD    (HL),A
  812.     RET
  813.  
  814. L4B7F:    LD    HL,(L53EA)
  815.     EX    DE,HL
  816.     LD    HL,(DPBSV1)
  817.     LD    A,E
  818.     SUB    (HL)
  819.     INC    HL
  820.     LD    A,D
  821.     SBC    A,(HL)
  822.     RET
  823.  
  824. L4B8C:    CALL    L4B7F
  825.     RET    C
  826.     INC    DE
  827.     LD    (HL),D
  828.     DEC    HL
  829.     LD    (HL),E
  830.     RET
  831.  
  832. L4B95:    LD    A,E
  833.     SUB    L
  834.     LD    L,A
  835.     LD    A,D
  836.     SBC    A,H
  837.     LD    H,A
  838.     RET
  839.  
  840. L4B9C:    LD    C,0FFH
  841. L4B9E:    LD    HL,(L53EC)
  842.     EX    DE,HL
  843.     LD    HL,(L53CC)
  844.     CALL    L4B95
  845.     RET    NC
  846.     PUSH    BC
  847.     CALL    CSMSEC
  848.     LD    HL,(DPBSV6)
  849.     EX    DE,HL
  850.     LD    HL,(L53EC)
  851.     ADD    HL,DE
  852.     POP    BC
  853.     INC    C
  854.     JP    Z,L4BC4
  855.     CP    (HL)
  856.     RET    Z
  857.     CALL    L4B7F
  858.     RET    NC
  859.     CALL    VEC28
  860.     RET
  861.  
  862. L4BC4:    LD    (HL),A
  863.     RET
  864.  
  865. L4BC6:    CALL    L4B9C
  866.     CALL    L4BE0
  867.     LD    C,1
  868.     CALL    L49B8
  869.     JP    L4BDA
  870.  
  871. L4BD4:    CALL    L4BE0
  872.     CALL    L49B2
  873. L4BDA:    LD    HL,LDMADR
  874.     JP    L4BE3
  875.  
  876. L4BE0:    LD    HL,DPBSV4
  877. L4BE3:    LD    C,(HL)
  878.     INC    HL
  879.     LD    B,(HL)
  880.     JP    bsetdma
  881.  
  882. L4BE9:    LD    HL,(DPBSV4)
  883.     EX    DE,HL
  884.     LD    HL,(LDMADR)
  885.     LD    C,80
  886.     JP    COPYC
  887.  
  888. L4BF5:    LD    HL,L53EA
  889.     LD    A,(HL)
  890.     INC    HL
  891.     CP    (HL)
  892.     RET    NZ
  893.     INC    A
  894.     RET
  895.  
  896. L4BFE:    LD    HL,-1
  897.     LD    (L53EA),HL
  898.     RET
  899.  
  900. L4C05:    LD    HL,(L53C8)
  901.     EX    DE,HL
  902.     LD    HL,(L53EA)
  903.     INC    HL
  904.     LD    (L53EA),HL
  905.     CALL    L4B95
  906.     JP    NC,L4C19
  907.     JP    L4BFE
  908.  
  909. L4C19:    LD    A,(L53EA)
  910.     AND    3
  911.     LD    B,5
  912. L4C20:    ADD    A,A
  913.     DEC    B
  914.     JP    NZ,L4C20
  915.     LD    (L53E9),A
  916.     OR    A
  917.     RET    NZ
  918.     PUSH    BC
  919.     CALL    L49C3
  920.     CALL    L4BD4
  921.     POP    BC
  922.     JP    L4B9E
  923.  
  924. L4C35:    LD    A,C
  925.     AND    7
  926.     INC    A
  927.     LD    E,A
  928.     LD    D,A
  929.     LD    A,C
  930.     RRCA
  931.     RRCA
  932.     RRCA
  933.     AND    1FH
  934.     LD    C,A
  935.     LD    A,B
  936.     ADD    A,A
  937.     ADD    A,A
  938.     ADD    A,A
  939.     ADD    A,A
  940.     ADD    A,A
  941.     OR    C
  942.     LD    C,A
  943.     LD    A,B
  944.     RRCA
  945.     RRCA
  946.     RRCA
  947.     AND    1FH
  948.     LD    B,A
  949.     LD    HL,(DPBSV7)
  950.     ADD    HL,BC
  951.     LD    A,(HL)
  952. L4C56:    RLCA
  953.     DEC    E
  954.     JP    NZ,L4C56
  955.     RET
  956.  
  957. L4C5C:    PUSH    DE
  958.     CALL    L4C35
  959.     AND    0FEH
  960.     POP    BC
  961.     OR    C
  962. L4C64:    RRCA
  963.     DEC    D
  964.     JP    NZ,L4C64
  965.     LD    (HL),A
  966.     RET
  967.  
  968. L4C6B:    CALL    L4B5E
  969.     LD    DE,10
  970.     ADD    HL,DE
  971.     PUSH    BC
  972.     LD    C,11
  973. L4C75:    POP    DE
  974.     DEC    C
  975.     RET    Z
  976.     PUSH    DE
  977.     LD    A,(L53DD)
  978.     OR    A
  979.     JP    Z,L4C88
  980.     PUSH    BC
  981.     PUSH    HL
  982.     LD    C,(HL)
  983.     LD    B,0
  984.     JP    L4C8E
  985.  
  986. L4C88:    DEC    C
  987.     PUSH    BC
  988.     LD    C,(HL)
  989.     INC    HL
  990.     LD    B,(HL)
  991.     PUSH    HL
  992. L4C8E:    LD    A,C
  993.     OR    B
  994.     JP    Z,L4C9D
  995.     LD    HL,(L53C6)
  996.     LD    A,L
  997.     SUB    C
  998.     LD    A,H
  999.     SBC    A,B
  1000.     CALL    NC,L4C5C
  1001. L4C9D:    POP    HL
  1002.     INC    HL
  1003.     POP    BC
  1004.     JP    L4C75
  1005.  
  1006. L4CA3:    LD    HL,(L53C6)
  1007.     LD    C,3
  1008.     CALL    HLDIV2
  1009.     INC    HL
  1010.     LD    B,H
  1011.     LD    C,L
  1012.     LD    HL,(DPBSV7)
  1013. L4CB1:    LD    (HL),0
  1014.     INC    HL
  1015.     DEC    BC
  1016.     LD    A,B
  1017.     OR    C
  1018.     JP    NZ,L4CB1
  1019.     LD    HL,(L53CA)
  1020.     EX    DE,HL
  1021.     LD    HL,(DPBSV7)
  1022.     LD    (HL),E
  1023.     INC    HL
  1024.     LD    (HL),D
  1025.     CALL    L49A1
  1026.     LD    HL,(DPBSV1)
  1027.     LD    (HL),3
  1028.     INC    HL
  1029.     LD    (HL),0
  1030.     CALL    L4BFE
  1031. L4CD2:    LD    C,0FFH
  1032.     CALL    L4C05
  1033.     CALL    L4BF5
  1034.     RET    Z
  1035.     CALL    L4B5E
  1036.     LD    A,0E5
  1037.     CP    (HL)
  1038.     JP    Z,L4CD2
  1039.     LD    A,(USRLVL)
  1040.     CP    (HL)
  1041.     JP    NZ,L4CF6
  1042.     INC    HL
  1043.     LD    A,(HL)
  1044.     SUB    24
  1045.     JP    NZ,L4CF6
  1046.     DEC    A
  1047.     LD    (RETNDE),A
  1048. L4CF6:    LD    C,1
  1049.     CALL    L4C6B
  1050.     CALL    L4B8C
  1051.     JP    L4CD2
  1052.  
  1053. L4D01:    LD    A,(L53D4)
  1054.     JP    RECOVR
  1055.  
  1056. L4D07:    PUSH    BC
  1057.     PUSH    AF
  1058.     LD    A,(L53C5)
  1059.     CPL
  1060.     LD    B,A
  1061.     LD    A,C
  1062.     AND    B
  1063.     LD    C,A
  1064.     POP    AF
  1065.     AND    B
  1066.     SUB    C
  1067.     AND    1FH
  1068.     POP    BC
  1069.     RET
  1070.  
  1071. L4D18:    LD    A,0FFH
  1072.     LD    (L53D4),A
  1073.     LD    HL,L53D8
  1074.     LD    (HL),C
  1075.     LD    HL,(ENTRDE)
  1076.     LD    (L53D9),HL
  1077.     CALL    L4BFE
  1078.     CALL    L49A1
  1079. L4D2D:    LD    C,0
  1080.     CALL    L4C05
  1081.     CALL    L4BF5
  1082.     JP    Z,L4D94
  1083.     LD    HL,(L53D9)
  1084.     EX    DE,HL
  1085.     LD    A,(DE)
  1086.     CP    0E5
  1087.     JP    Z,L4D4A
  1088.     PUSH    DE
  1089.     CALL    L4B7F
  1090.     POP    DE
  1091.     JP    NC,L4D94
  1092. L4D4A:    CALL    L4B5E
  1093.     LD    A,(L53D8)
  1094.     LD    C,A
  1095.     LD    B,0
  1096. L4D53:    LD    A,C
  1097.     OR    A
  1098.     JP    Z,L4D83
  1099.     LD    A,(DE)
  1100.     CP    3FH
  1101.     JP    Z,L4D7C
  1102.     LD    A,B
  1103.     CP    0DH
  1104.     JP    Z,L4D7C
  1105.     CP    0CH
  1106.     LD    A,(DE)
  1107.     JP    Z,L4D73
  1108.     SUB    (HL)
  1109.     AND    7FH
  1110.     JP    NZ,L4D2D
  1111.     JP    L4D7C
  1112.  
  1113. L4D73:    PUSH    BC
  1114.     LD    C,(HL)
  1115.     CALL    L4D07
  1116.     POP    BC
  1117.     JP    NZ,L4D2D
  1118. L4D7C:    INC    DE
  1119.     INC    HL
  1120.     INC    B
  1121.     DEC    C
  1122.     JP    L4D53
  1123.  
  1124. L4D83:    LD    A,(L53EA)
  1125.     AND    3
  1126.     LD    (RETNDE),A
  1127.     LD    HL,L53D4
  1128.     LD    A,(HL)
  1129.     RLA
  1130.     RET    NC
  1131.     XOR    A
  1132.     LD    (HL),A
  1133.     RET
  1134.  
  1135. L4D94:    CALL    L4BFE
  1136.     LD    A,0FFH
  1137.     JP    RECOVR
  1138.  
  1139. L4D9C:    CALL    RONLY?
  1140.     LD    C,0CH
  1141.     CALL    L4D18
  1142. L4DA4:    CALL    L4BF5
  1143.     RET    Z
  1144.     CALL    L4B44
  1145.     CALL    L4B5E
  1146.     LD    (HL),0E5
  1147.     LD    C,0
  1148.     CALL    L4C6B
  1149.     CALL    L4BC6
  1150.     CALL    L4D2D
  1151.     JP    L4DA4
  1152.  
  1153. L4DBE:    LD    D,B
  1154.     LD    E,C
  1155. L4DC0:    LD    A,C
  1156.     OR    B
  1157.     JP    Z,L4DD1
  1158.     DEC    BC
  1159.     PUSH    DE
  1160.     PUSH    BC
  1161.     CALL    L4C35
  1162.     RRA
  1163.     JP    NC,L4DEC
  1164.     POP    BC
  1165.     POP    DE
  1166. L4DD1:    LD    HL,(L53C6)
  1167.     LD    A,E
  1168.     SUB    L
  1169.     LD    A,D
  1170.     SBC    A,H
  1171.     JP    NC,L4DF4
  1172.     INC    DE
  1173.     PUSH    BC
  1174.     PUSH    DE
  1175.     LD    B,D
  1176.     LD    C,E
  1177.     CALL    L4C35
  1178.     RRA
  1179.     JP    NC,L4DEC
  1180.     POP    DE
  1181.     POP    BC
  1182.     JP    L4DC0
  1183.  
  1184. L4DEC:    RLA
  1185.     INC    A
  1186.     CALL    L4C64
  1187.     POP    HL
  1188.     POP    DE
  1189.     RET
  1190.  
  1191. L4DF4:    LD    A,C
  1192.     OR    B
  1193.     JP    NZ,L4DC0
  1194.     LD    HL,0
  1195.     RET
  1196.  
  1197. L4DFD:    LD    C,0
  1198.     LD    E,20
  1199. L4E01:    PUSH    DE
  1200.     LD    B,0
  1201.     LD    HL,(ENTRDE)
  1202.     ADD    HL,BC
  1203.     EX    DE,HL
  1204.     CALL    L4B5E
  1205.     POP    BC
  1206.     CALL    COPYC
  1207. L4E10:    CALL    L49C3
  1208.     JP    L4BC6
  1209.  
  1210. L4E16:    CALL    RONLY?
  1211.     LD    C,0CH
  1212.     CALL    L4D18
  1213.     LD    HL,(ENTRDE)
  1214.     LD    A,(HL)
  1215.     LD    DE,10
  1216.     ADD    HL,DE
  1217.     LD    (HL),A
  1218. L4E27:    CALL    L4BF5
  1219.     RET    Z
  1220.     CALL    L4B44
  1221.     LD    C,10
  1222.     LD    E,0CH
  1223.     CALL    L4E01
  1224.     CALL    L4D2D
  1225.     JP    L4E27
  1226.  
  1227. L4E3B:    LD    C,0CH
  1228.     CALL    L4D18
  1229. L4E40:    CALL    L4BF5
  1230.     RET    Z
  1231.     LD    C,0
  1232.     LD    E,0CH
  1233.     CALL    L4E01
  1234.     CALL    L4D2D
  1235.     JP    L4E40
  1236.  
  1237. L4E51:    LD    C,0FH
  1238.     CALL    L4D18
  1239.     CALL    L4BF5
  1240.     RET    Z
  1241. L4E5A:    CALL    L4AA6
  1242.     LD    A,(HL)
  1243.     PUSH    AF
  1244.     PUSH    HL
  1245.     CALL    L4B5E
  1246.     EX    DE,HL
  1247.     LD    HL,(ENTRDE)
  1248.     LD    C,20
  1249.     PUSH    DE
  1250.     CALL    COPYC
  1251.     CALL    SIGNS2
  1252.     POP    DE
  1253.     LD    HL,0CH
  1254.     ADD    HL,DE
  1255.     LD    C,(HL)
  1256.     LD    HL,0FH
  1257.     ADD    HL,DE
  1258.     LD    B,(HL)
  1259.     POP    HL
  1260.     POP    AF
  1261.     LD    (HL),A
  1262.     LD    A,C
  1263.     CP    (HL)
  1264.     LD    A,B
  1265.     JP    Z,L4E8B
  1266.     LD    A,0
  1267.     JP    C,L4E8B
  1268.     LD    A,80
  1269. L4E8B:    LD    HL,(ENTRDE)
  1270.     LD    DE,0FH
  1271.     ADD    HL,DE
  1272.     LD    (HL),A
  1273.     RET
  1274.  
  1275. L4E94:    LD    A,(HL)
  1276.     INC    HL
  1277.     OR    (HL)
  1278.     DEC    HL
  1279.     RET    NZ
  1280.     LD    A,(DE)
  1281.     LD    (HL),A
  1282.     INC    DE
  1283.     INC    HL
  1284.     LD    A,(DE)
  1285.     LD    (HL),A
  1286.     DEC    DE
  1287.     DEC    HL
  1288.     RET
  1289.  
  1290. L4EA2:    XOR    A
  1291.     LD    (RETNDE),A
  1292.     LD    (L53EA),A
  1293.     LD    (L53EB),A
  1294.     CALL    L4B1E
  1295.     RET    NZ
  1296.     CALL    GETS2
  1297.     AND    80
  1298.     RET    NZ
  1299.     LD    C,0FH
  1300.     CALL    L4D18
  1301.     CALL    L4BF5
  1302.     RET    Z
  1303.     LD    BC,10
  1304.     CALL    L4B5E
  1305.     ADD    HL,BC
  1306.     EX    DE,HL
  1307.     LD    HL,(ENTRDE)
  1308.     ADD    HL,BC
  1309.     LD    C,10
  1310. L4ECD:    LD    A,(L53DD)
  1311.     OR    A
  1312.     JP    Z,L4EE8
  1313.     LD    A,(HL)
  1314.     OR    A
  1315.     LD    A,(DE)
  1316.     JP    NZ,L4EDB
  1317.     LD    (HL),A
  1318. L4EDB:    OR    A
  1319.     JP    NZ,L4EE1
  1320.     LD    A,(HL)
  1321.     LD    (DE),A
  1322. L4EE1:    CP    (HL)
  1323.     JP    NZ,L4F1F
  1324.     JP    L4EFD
  1325.  
  1326. L4EE8:    CALL    L4E94
  1327.     EX    DE,HL
  1328.     CALL    L4E94
  1329.     EX    DE,HL
  1330.     LD    A,(DE)
  1331.     CP    (HL)
  1332.     JP    NZ,L4F1F
  1333.     INC    DE
  1334.     INC    HL
  1335.     LD    A,(DE)
  1336.     CP    (HL)
  1337.     JP    NZ,L4F1F
  1338.     DEC    C
  1339. L4EFD:    INC    DE
  1340.     INC    HL
  1341.     DEC    C
  1342.     JP    NZ,L4ECD
  1343.     LD    BC,-14H
  1344.     ADD    HL,BC
  1345.     EX    DE,HL
  1346.     ADD    HL,BC
  1347.     LD    A,(DE)
  1348.     CP    (HL)
  1349.     JP    C,L4F17
  1350.     LD    (HL),A
  1351.     LD    BC,3
  1352.     ADD    HL,BC
  1353.     EX    DE,HL
  1354.     ADD    HL,BC
  1355.     LD    A,(HL)
  1356.     LD    (DE),A
  1357. L4F17:    LD    A,0FFH
  1358.     LD    (L53D2),A
  1359.     JP    L4E10
  1360.  
  1361. L4F1F:    LD    HL,RETNDE
  1362.     DEC    (HL)
  1363.     RET
  1364.  
  1365. L4F24:    CALL    RONLY?
  1366.     LD    HL,(ENTRDE)
  1367.     PUSH    HL
  1368.     LD    HL,L53AC
  1369.     LD    (ENTRDE),HL
  1370.     LD    C,1
  1371.     CALL    L4D18
  1372.     CALL    L4BF5
  1373.     POP    HL
  1374.     LD    (ENTRDE),HL
  1375.     RET    Z
  1376.     EX    DE,HL
  1377.     LD    HL,0FH
  1378.     ADD    HL,DE
  1379.     LD    C,11
  1380.     XOR    A
  1381. L4F46:    LD    (HL),A
  1382.     INC    HL
  1383.     DEC    C
  1384.     JP    NZ,L4F46
  1385.     LD    HL,0DH
  1386.     ADD    HL,DE
  1387.     LD    (HL),A
  1388.     CALL    L4B8C
  1389.     CALL    L4DFD
  1390.     JP    SIGNS2
  1391.  
  1392. L4F5A:    XOR    A
  1393.     LD    (L53D2),A
  1394.     CALL    L4EA2
  1395.     CALL    L4BF5
  1396.     RET    Z
  1397.     LD    HL,(ENTRDE)
  1398.     LD    BC,0CH
  1399.     ADD    HL,BC
  1400.     LD    A,(HL)
  1401.     INC    A
  1402.     AND    1FH
  1403.     LD    (HL),A
  1404.     JP    Z,L4F83
  1405.     LD    B,A
  1406.     LD    A,(L53C5)
  1407.     AND    B
  1408.     LD    HL,L53D2
  1409.     AND    (HL)
  1410.     JP    Z,L4F8E
  1411.     JP    L4FAC
  1412.  
  1413. L4F83:    LD    BC,2
  1414.     ADD    HL,BC
  1415.     INC    (HL)
  1416.     LD    A,(HL)
  1417.     AND    0FH
  1418.     JP    Z,L4FB6
  1419. L4F8E:    LD    C,0FH
  1420.     CALL    L4D18
  1421.     CALL    L4BF5
  1422.     JP    NZ,L4FAC
  1423.     LD    A,(L53D3)
  1424.     INC    A
  1425.     JP    Z,L4FB6
  1426.     CALL    L4F24
  1427.     CALL    L4BF5
  1428.     JP    Z,L4FB6
  1429.     JP    L4FAF
  1430.  
  1431. L4FAC:    CALL    L4E5A
  1432. L4FAF:    CALL    L4ABB
  1433.     XOR    A
  1434.     JP    RECOVR
  1435.  
  1436. L4FB6:    CALL    RETN1
  1437.     JP    SIGNS2
  1438.  
  1439. RDSEQ1:    LD    A,1
  1440.     LD    (L53D5),A
  1441. L4FC1:    LD    A,0FFH
  1442.     LD    (L53D3),A
  1443.     CALL    L4ABB
  1444.     LD    A,(L53E3)
  1445.     LD    HL,L53E1
  1446.     CP    (HL)
  1447.     JP    C,L4FE6
  1448.     CP    80
  1449.     JP    NZ,L4FFB
  1450.     CALL    L4F5A
  1451.     XOR    A
  1452.     LD    (L53E3),A
  1453.     LD    A,(RETNDE)
  1454.     OR    A
  1455.     JP    NZ,L4FFB
  1456. L4FE6:    CALL    L4A77
  1457.     CALL    L4A84
  1458.     JP    Z,L4FFB
  1459.     CALL    L4A8A
  1460.     CALL    L49D1
  1461.     CALL    L49B2
  1462.     JP    L4AD2
  1463.  
  1464. L4FFB:    JP    RETN1
  1465.  
  1466. WRSEQ1:    LD    A,1
  1467.     LD    (L53D5),A
  1468. L5003:    LD    A,0
  1469.     LD    (L53D3),A
  1470.     CALL    RONLY?
  1471.     LD    HL,(ENTRDE)
  1472.     CALL    L4B47
  1473.     CALL    L4ABB
  1474.     LD    A,(L53E3)
  1475.     CP    80
  1476.     JP    NC,RETN1
  1477.     CALL    L4A77
  1478.     CALL    L4A84
  1479.     LD    C,0
  1480.     JP    NZ,L506E
  1481.     CALL    L4A3E
  1482.     LD    (L53D7),A
  1483.     LD    BC,0
  1484.     OR    A
  1485.     JP    Z,L503B
  1486.     LD    C,A
  1487.     DEC    BC
  1488.     CALL    L4A5E
  1489.     LD    B,H
  1490.     LD    C,L
  1491. L503B:    CALL    L4DBE
  1492.     LD    A,L
  1493.     OR    H
  1494.     JP    NZ,L5048
  1495.     LD    A,2
  1496.     JP    RECOVR
  1497.  
  1498. L5048:    LD    (L53E5),HL
  1499.     EX    DE,HL
  1500.     LD    HL,(ENTRDE)
  1501.     LD    BC,10
  1502.     ADD    HL,BC
  1503.     LD    A,(L53DD)
  1504.     OR    A
  1505.     LD    A,(L53D7)
  1506.     JP    Z,L5064
  1507.     CALL    HLINCA
  1508.     LD    (HL),E
  1509.     JP    L506C
  1510.  
  1511. L5064:    LD    C,A
  1512.     LD    B,0
  1513.     ADD    HL,BC
  1514.     ADD    HL,BC
  1515.     LD    (HL),E
  1516.     INC    HL
  1517.     LD    (HL),D
  1518. L506C:    LD    C,2
  1519. L506E:    LD    A,(RETNDE)
  1520.     OR    A
  1521.     RET    NZ
  1522.     PUSH    BC
  1523.     CALL    L4A8A
  1524.     LD    A,(L53D5)
  1525.     DEC    A
  1526.     DEC    A
  1527.     JP    NZ,L50BB
  1528.     POP    BC
  1529.     PUSH    BC
  1530.     LD    A,C
  1531.     DEC    A
  1532.     DEC    A
  1533.     JP    NZ,L50BB
  1534.     PUSH    HL
  1535.     LD    HL,(DPBSV4)
  1536.     LD    D,A
  1537. L508C:    LD    (HL),A
  1538.     INC    HL
  1539.     INC    D
  1540.     JP    P,L508C
  1541.     CALL    L4BE0
  1542.     LD    HL,(L53E7)
  1543.     LD    C,2
  1544. L509A:    LD    (L53E5),HL
  1545.     PUSH    BC
  1546.     CALL    L49D1
  1547.     POP    BC
  1548.     CALL    L49B8
  1549.     LD    HL,(L53E5)
  1550.     LD    C,0
  1551.     LD    A,(L53C4)
  1552.     LD    B,A
  1553.     AND    L
  1554.     CP    B
  1555.     INC    HL
  1556.     JP    NZ,L509A
  1557.     POP    HL
  1558.     LD    (L53E5),HL
  1559.     CALL    L4BDA
  1560. L50BB:    CALL    L49D1
  1561.     POP    BC
  1562.     PUSH    BC
  1563.     CALL    L49B8
  1564.     POP    BC
  1565.     LD    A,(L53E3)
  1566.     LD    HL,L53E1
  1567.     CP    (HL)
  1568.     JP    C,L50D2
  1569.     LD    (HL),A
  1570.     INC    (HL)
  1571.     LD    C,2
  1572. ; Patch 01 goes next !!!
  1573. L50D2:    DB    0,0,0,0,0
  1574.     PUSH    AF
  1575.     CALL    GETS2
  1576.     AND    7FH
  1577.     LD    (HL),A
  1578.     POP    AF
  1579.     CP    7FH
  1580.     JP    NZ,L5100
  1581.     LD    A,(L53D5)
  1582.     CP    1
  1583.     JP    NZ,L5100
  1584.     CALL    L4AD2
  1585.     CALL    L4F5A
  1586.     LD    HL,RETNDE
  1587.     LD    A,(HL)
  1588.     OR    A
  1589.     JP    NZ,L50FE
  1590.     DEC    A
  1591.     LD    (L53E3),A
  1592. L50FE:    LD    (HL),0
  1593. L5100:    JP    L4AD2
  1594.  
  1595. L5103:    XOR    A
  1596.     LD    (L53D5),A
  1597. L5107:    PUSH    BC
  1598.     LD    HL,(ENTRDE)
  1599.     EX    DE,HL
  1600.     LD    HL,21
  1601.     ADD    HL,DE
  1602.     LD    A,(HL)
  1603.     AND    7FH
  1604.     PUSH    AF
  1605.     LD    A,(HL)
  1606.     RLA
  1607.     INC    HL
  1608.     LD    A,(HL)
  1609.     RLA
  1610.     AND    1FH
  1611.     LD    C,A
  1612.     LD    A,(HL)
  1613.     RRA
  1614.     RRA
  1615.     RRA
  1616.     RRA
  1617.     AND    0FH
  1618.     LD    B,A
  1619.     POP    AF
  1620.     INC    HL
  1621.     LD    L,(HL)
  1622.     INC    L
  1623.     DEC    L
  1624.     LD    L,6
  1625.     JP    NZ,L518B
  1626.     LD    HL,20
  1627.     ADD    HL,DE
  1628.     LD    (HL),A
  1629.     LD    HL,0CH
  1630.     ADD    HL,DE
  1631.     LD    A,C
  1632.     SUB    (HL)
  1633.     JP    NZ,L5147
  1634.     LD    HL,0EH
  1635.     ADD    HL,DE
  1636.     LD    A,B
  1637.     SUB    (HL)
  1638.     AND    7FH
  1639.     JP    Z,L517F
  1640. L5147:    PUSH    BC
  1641.     PUSH    DE
  1642.     CALL    L4EA2
  1643.     POP    DE
  1644.     POP    BC
  1645.     LD    L,3
  1646.     LD    A,(RETNDE)
  1647.     INC    A
  1648.     JP    Z,L5184
  1649.     LD    HL,0CH
  1650.     ADD    HL,DE
  1651.     LD    (HL),C
  1652.     LD    HL,0EH
  1653.     ADD    HL,DE
  1654.     LD    (HL),B
  1655.     CALL    L4E51
  1656.     LD    A,(RETNDE)
  1657.     INC    A
  1658.     JP    NZ,L517F
  1659.     POP    BC
  1660.     PUSH    BC
  1661.     LD    L,4
  1662.     INC    C
  1663.     JP    Z,L5184
  1664.     CALL    L4F24
  1665.     LD    L,5
  1666.     LD    A,(RETNDE)
  1667.     INC    A
  1668.     JP    Z,L5184
  1669. L517F:    POP    BC
  1670.     XOR    A
  1671.     JP    RECOVR
  1672.  
  1673. L5184:    PUSH    HL
  1674.     CALL    GETS2
  1675.     LD    (HL),0C0
  1676.     POP    HL
  1677. L518B:    POP    BC
  1678.     LD    A,L
  1679.     LD    (RETNDE),A
  1680.     JP    SIGNS2
  1681.  
  1682. L5193:    LD    C,0FFH
  1683.     CALL    L5103
  1684.     CALL    Z,L4FC1
  1685.     RET
  1686.  
  1687. L519C:    LD    C,0
  1688.     CALL    L5103
  1689.     CALL    Z,L5003
  1690.     RET
  1691.  
  1692. L51A5:    EX    DE,HL
  1693.     ADD    HL,DE
  1694.     LD    C,(HL)
  1695.     LD    B,0
  1696.     LD    HL,0CH
  1697.     ADD    HL,DE
  1698.     LD    A,(HL)
  1699.     RRCA
  1700.     AND    80
  1701.     ADD    A,C
  1702.     LD    C,A
  1703.     LD    A,0
  1704.     ADC    A,B
  1705.     LD    B,A
  1706.     LD    A,(HL)
  1707.     RRCA
  1708.     AND    0FH
  1709.     ADD    A,B
  1710.     LD    B,A
  1711.     LD    HL,0EH
  1712.     ADD    HL,DE
  1713.     LD    A,(HL)
  1714.     ADD    A,A
  1715.     ADD    A,A
  1716.     ADD    A,A
  1717.     ADD    A,A
  1718.     PUSH    AF
  1719.     ADD    A,B
  1720.     LD    B,A
  1721.     PUSH    AF
  1722.     POP    HL
  1723.     LD    A,L
  1724.     POP    HL
  1725.     OR    L
  1726.     AND    1
  1727.     RET
  1728.  
  1729. L51D2:    LD    C,0CH
  1730.     CALL    L4D18
  1731.     LD    HL,(ENTRDE)
  1732.     LD    DE,21
  1733.     ADD    HL,DE
  1734.     PUSH    HL
  1735.     LD    (HL),D
  1736.     INC    HL
  1737.     LD    (HL),D
  1738.     INC    HL
  1739.     LD    (HL),D
  1740. L51E4:    CALL    L4BF5
  1741.     JP    Z,L520C
  1742.     CALL    L4B5E
  1743.     LD    DE,0FH
  1744.     CALL    L51A5
  1745.     POP    HL
  1746.     PUSH    HL
  1747.     LD    E,A
  1748.     LD    A,C
  1749.     SUB    (HL)
  1750.     INC    HL
  1751.     LD    A,B
  1752.     SBC    A,(HL)
  1753.     INC    HL
  1754.     LD    A,E
  1755.     SBC    A,(HL)
  1756.     JP    C,L5206
  1757.     LD    (HL),E
  1758.     DEC    HL
  1759.     LD    (HL),B
  1760.     DEC    HL
  1761.     LD    (HL),C
  1762. L5206:    CALL    L4D2D
  1763.     JP    L51E4
  1764.  
  1765. L520C:    POP    HL
  1766.     RET
  1767.  
  1768. ;    Set random record
  1769. VEC36:    LD    HL,(ENTRDE)
  1770.     LD    DE,20
  1771.     CALL    L51A5
  1772.     LD    HL,21
  1773.     ADD    HL,DE
  1774.     LD    (HL),C
  1775.     INC    HL
  1776.     LD    (HL),B
  1777.     INC    HL
  1778.     LD    (HL),A
  1779.     RET
  1780.  
  1781. L5221:    LD    HL,(LOGINV)
  1782.     LD    A,(L4942)
  1783.     LD    C,A
  1784.     CALL    HLDIV2
  1785.     PUSH    HL
  1786.     EX    DE,HL
  1787.     CALL    L4959
  1788.     POP    HL
  1789.     CALL    Z,L4947
  1790.     LD    A,L
  1791.     RRA
  1792.     RET    C
  1793.     LD    HL,(LOGINV)
  1794.     LD    C,L
  1795.     LD    B,H
  1796.     CALL    SETBIT
  1797.     LD    (LOGINV),HL
  1798.     JP    L4CA3
  1799.  
  1800. ;    Select disk
  1801. VEC14:    LD    A,(ENTRYE)
  1802.     LD    HL,L4942
  1803.     CP    (HL)
  1804.     RET    Z
  1805.     LD    (HL),A
  1806.     JP    L5221
  1807.  
  1808. FCBDRV:    LD    A,0FFH
  1809.     LD    (L53DE),A
  1810.     LD    HL,(ENTRDE)
  1811.     LD    A,(HL)
  1812.     AND    1FH
  1813.     DEC    A
  1814.     LD    (ENTRYE),A
  1815.     CP    1EH
  1816.     JP    NC,L5275
  1817.     LD    A,(L4942)
  1818.     LD    (L53DF),A
  1819.     LD    A,(HL)
  1820.     LD    (L53E0),A
  1821.     AND    0E0
  1822.     LD    (HL),A
  1823.     CALL    VEC14
  1824. L5275:    LD    A,(USRLVL)
  1825.     LD    HL,(ENTRDE)
  1826.     OR    (HL)
  1827.     LD    (HL),A
  1828.     RET
  1829.  
  1830. ;    Return version number
  1831. VEC12:    LD    A,22
  1832.     JP    RECOVR
  1833.  
  1834. ;    Reset disk system
  1835. VEC13:    LD    HL,0
  1836.     LD    (DROVEC),HL
  1837.     LD    (LOGINV),HL
  1838.     XOR    A
  1839.     LD    (L4942),A
  1840.     LD    HL,DBUFF
  1841.     LD    (LDMADR),HL
  1842.     CALL    L4BDA
  1843.     JP    L5221
  1844.  
  1845. ;    Open file
  1846. VEC15:    CALL    CLERS2
  1847.     CALL    FCBDRV
  1848.     JP    L4E51
  1849.  
  1850. ;    Close file
  1851. VEC16:    CALL    FCBDRV
  1852.     JP    L4EA2
  1853.  
  1854. ;    Search for first match of FCB
  1855. VEC17:    LD    C,0
  1856.     EX    DE,HL
  1857.     LD    A,(HL)
  1858.     CP    3FH
  1859.     JP    Z,L52C2
  1860.     CALL    L4AA6
  1861.     LD    A,(HL)
  1862.     CP    3FH
  1863.     CALL    NZ,CLERS2
  1864.     CALL    FCBDRV
  1865.     LD    C,0FH
  1866. L52C2:    CALL    L4D18
  1867.     JP    L4BE9
  1868.  
  1869. ;    Search for next match
  1870. VEC18:    LD    HL,(L53D9)
  1871.     LD    (ENTRDE),HL
  1872.     CALL    FCBDRV
  1873.     CALL    L4D2D
  1874.     JP    L4BE9
  1875.  
  1876. ;    Delete file
  1877. VEC19:    CALL    dbuff_clr    ;also calls FCBDRV
  1878.     CALL    L4D9C
  1879.     JP    L4D01
  1880.  
  1881. ;    Read sequential
  1882. VEC20:    CALL    FCBDRV
  1883.     JP    RDSEQ1
  1884.  
  1885. ;    Write sequential
  1886. VEC21:    CALL    FCBDRV
  1887.     JP    WRSEQ1
  1888.  
  1889. ;    Make file
  1890. VEC22:    CALL    CLERS2
  1891.     CALL    FCBDRV
  1892.     JP    L4F24
  1893.  
  1894. ;    Rename file
  1895. VEC23:    CALL    dbuff_clr    ;also calls FCBDRV
  1896.     CALL    L4E16
  1897.     JP    L4D01
  1898.  
  1899. ;    Return log in vector
  1900. VEC24:    LD    HL,(LOGINV)
  1901.     JP    L5329
  1902.  
  1903. ;    Return current disk number
  1904. VEC25:    LD    A,(L4942)
  1905.     JP    RECOVR
  1906.  
  1907. ;    Set DMA address
  1908. VEC26:    EX    DE,HL
  1909.     LD    (LDMADR),HL
  1910.     JP    L4BDA
  1911.  
  1912. ;    Get address allocation
  1913. VEC27:    LD    HL,(DPBSV7)
  1914.     JP    L5329
  1915.  
  1916. ;    Get R/O vector
  1917. VEC29:    LD    HL,(DROVEC)
  1918.     JP    L5329
  1919.  
  1920. ;    Set file attributes
  1921. VEC30:    CALL    FCBDRV
  1922.     CALL    L4E3B
  1923.     JP    L4D01
  1924.  
  1925. ;    Get disk addr parms
  1926. VEC31:    LD    HL,(DPBSV5)
  1927. L5329:    LD    (RETNDE),HL
  1928.     RET
  1929.  
  1930. ;    Get/Set user
  1931. VEC32:    LD    A,(ENTRYE)
  1932.     CP    0FFH
  1933.     JP    NZ,L533B
  1934.     LD    A,(USRLVL)
  1935.     JP    RECOVR
  1936.  
  1937. L533B:    AND    1FH
  1938.     LD    (USRLVL),A
  1939.     RET
  1940.  
  1941. ;    Read random
  1942. VEC33:    CALL    FCBDRV
  1943.     JP    L5193
  1944.  
  1945. ;    Write random
  1946. VEC34:    CALL    FCBDRV
  1947.     JP    L519C
  1948.  
  1949. ;    Compute file size
  1950. VEC35:    CALL    FCBDRV
  1951.     JP    L51D2
  1952.  
  1953. ;    Reset drive
  1954. VEC37:    LD    HL,(ENTRDE)
  1955.     LD    A,L
  1956.     CPL
  1957.     LD    E,A
  1958.     LD    A,H
  1959.     CPL
  1960.     LD    HL,(LOGINV)
  1961.     AND    H
  1962.     LD    D,A
  1963.     LD    A,L
  1964.     AND    E
  1965.     LD    E,A
  1966.     LD    HL,(DROVEC)
  1967.     EX    DE,HL
  1968.     LD    (LOGINV),HL
  1969.     LD    A,L
  1970.     AND    E
  1971.     LD    L,A
  1972.     LD    A,H
  1973.     AND    D
  1974.     LD    H,A
  1975.     LD    (DROVEC),HL
  1976.     RET
  1977.  
  1978. ;    Recover after service CVECS
  1979. L5374:    LD    A,(L53DE)
  1980.     OR    A
  1981.     JP    Z,L5391
  1982.     LD    HL,(ENTRDE)
  1983.     LD    (HL),0
  1984.     LD    A,(L53E0)
  1985.     OR    A
  1986.     JP    Z,L5391
  1987.     LD    (HL),A
  1988.     LD    A,(L53DF)
  1989.     LD    (ENTRYE),A
  1990.     CALL    VEC14
  1991. L5391:    LD    HL,(L490F)
  1992.     LD    SP,HL
  1993.     LD    HL,(RETNDE)
  1994.     LD    A,L
  1995.     LD    B,H
  1996.     RET
  1997.  
  1998. ;    Write random with fill 0
  1999. VEC40:    CALL    FCBDRV
  2000.     LD    A,2
  2001.     LD    (L53D5),A
  2002.     LD    C,0
  2003.     CALL    L5107
  2004.     CALL    Z,L5003
  2005.     RET
  2006. ;
  2007. L53AC:    DB    0E5H
  2008. ; all set to zero (that's what they should be)
  2009. DROVEC:    DW    0    ;R/O drives (16 bits)
  2010. LOGINV:    DW    0    ;On line drives (16 bits)
  2011. LDMADR:    DW    0080H    ;Initial DMA address
  2012.  
  2013. DPBSV1:    DW    0
  2014. DPBSV2:    DW    0
  2015. DPBSV3:    DW    0
  2016. DPBSV4:    DW    0
  2017. DPBSV5:    DW    0
  2018. DPBSV6:    DW    0
  2019. DPBSV7:    DW    0
  2020. L53C1:    DW    0
  2021. L53C3:    DB    0
  2022. L53C4:    DB    0
  2023. L53C5:    DB    0
  2024. L53C6:    DW    0
  2025. L53C8:    DW    0
  2026. L53CA:    DW    0
  2027. L53CC:    DW    0
  2028. L53CE:    DW    0
  2029. SKWPTR:    DW    0    ;Pointer to curr dsk skew table
  2030. L53D2:    DB    0
  2031. L53D3:    DB    0
  2032. L53D4:    DB    0
  2033. L53D5:    DB    0
  2034. ENTRYE:    DB    0
  2035. L53D7:    DB    0
  2036. L53D8:    DB    0
  2037. L53D9:    DW    0
  2038.     DB    0,0
  2039. L53DD:    DB    0
  2040. L53DE:    DB    0
  2041. L53DF:    DB    0
  2042. L53E0:    DB    0
  2043. L53E1:    DB    0
  2044. L53E2:    DB    0
  2045. L53E3:    DB    0
  2046.     DB    0
  2047. L53E5:    DW    0
  2048. L53E7:    DB    0,0
  2049. ; Local variables for directory access
  2050. L53E9:    DB    0    ;directory pointer 0,1,2,3
  2051. L53EA:    DB    0    ;directory counter 0..dirmax
  2052. L53EB:    DB    0
  2053. L53EC:    DW    0    ;directory record 0..dirmax/4
  2054.  
  2055. ; My patch to kill directory buffers before DELETE, RENAME
  2056. ; 11 bytes
  2057. dbuff_clr:
  2058.     call    fcbdrv    ;puts disk being used in CURDSK
  2059.     ld    a,(l4942) ;CURDSK by another name
  2060.     ld    c,a    ;disk to purge
  2061.     ld    a,7    ;purge directory buffer function
  2062.     rst    28H    ;extended BIOS call
  2063.     ret
  2064. ;    defb    0,0,0,0,0,0,0,0,0,0,0
  2065.  
  2066.     defb    0,0,0,0,0,0,0
  2067.  
  2068.     if    ($-serno2) ne 0E00h
  2069.     error    BDOS wrong size !!!
  2070.     dw    $-serno2+zero
  2071.     endif
  2072.