home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug144.arc / ZSWP14.LBR / ZSWP14.MZC / ZSWP14.MAC
Text File  |  1979-12-31  |  72KB  |  5,800 lines

  1. .z80
  2.     title Z80 TURBO Sweep
  3.  
  4.     page 60,132
  5.  
  6.     .COMMENT    %
  7.     * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  8.     *   ORIGINAL COPYRIGHT, Dave Rand, Edmonton, Alberta  *
  9.     * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  10.  
  11. Z80 SWEEP version numbering starting at 1.00
  12.  
  13. Update history
  14. --------------
  15. v1.40
  16. 17-7-87    - Changed format back to original so main menu is presented on startup.
  17.     - Changed to spacebar for advance one line & CR for paging: (V) option.
  18.     - Replaced decimal input routine for user level (shorter).
  19.     - Added tests for CP/M 3.x & Turbodos to allow correct file size
  20.       & disk space display. Now tests for MP/M, CP/M 2.x, CP/M 3.x
  21.       and Turbodos.    [gcb]    
  22.  
  23. v1.30
  24. Feb 87  This first release of ZSWP (Z80SWEEP) is courtesy of Ian Branch, who
  25.     responded following a plea to fix the RST 38 problem in NSWP 2.07. 
  26.      As usual, many programmers are terrible at documenting their work,
  27.     so this explanatory note is added by a happy user and non-programmer.
  28.     It is being released back into the Public Domain from whence it came.
  29.  
  30.     Though the original author of NSWP, Dave Rand was not consulted, we
  31.     hope that improvements which follow the release of this (poorly)
  32.     documented Source Code will be taken in the spirit in which they
  33.     were done. This code will assemble with M80 and Z8A.
  34.  
  35. Bugs in NSWP v2.07 which have been fixed in ZSWP v1.30:
  36.  
  37. 1. Did not restore RST 38 vector on exit.
  38. 2. Several code faults were spotted and rectified. Their effects are unknown.
  39.  
  40. Rick Millicer, c/o SCUA RBBS (03) 497-3435. Melbourne Australia.
  41.     %
  42.  
  43. vers_date    macro
  44.         db    'ZSWP v1.40'    ;set version & date for signon
  45.         db    '  (Z80 Turbo SWEEP)  Aug 87'
  46.         db    cr,lf,lf,tab
  47.         db    'Derived from SWEEP (c) 1983,4 Dave Rand,'
  48.         db    ' Edmonton, Alberta.'
  49.         endm
  50.  
  51.     aseg
  52.     org    100h
  53.     .phase    0100h
  54.  
  55. bdos        equ    005h
  56. bdos_adr    equ    006h
  57. bell        equ    007h
  58. bs        equ    008h
  59. tab        equ    009h
  60. lf        equ    00ah
  61. cr        equ    00dh
  62. esc        equ    01bh
  63. rst_vec        equ    038h
  64. fcb1        equ    05ch
  65. fcb2        equ    06ch
  66. operand_1    equ    065h
  67. operand_2    equ    075h
  68. dma_addr    equ    080h
  69. alv_vect    equ    30e0h
  70. fil_bfr_addr    equ    30e2h
  71. l30e4        equ    30e4h
  72. l30e7        equ    30e7h
  73. l30f1        equ    30f1h
  74. l3d94        equ    3d94h
  75. l4000        equ    4000h
  76. lff76        equ    0ff76h
  77. lff80        equ    0ff80h
  78. lfff6        equ    0fff6h
  79. new_stk        equ    3d87h
  80. ram_top_ofse    equ    0f780h
  81. ;
  82. start:
  83.     jp    begin
  84.     db    'NLINES>'
  85. nlines:
  86.     db    18h
  87.     db    'CLS>'
  88. cls_str:
  89.     db    1,01ah,0,0,0,0,0,0
  90.     db    'INVON>'
  91. inv_on:
  92.     db    2,esc,')',0,0,0,0
  93.     db    'INVOF>'
  94. inv_off:
  95.     db    2,esc,'(',0,0,0,0
  96. ;
  97. begin:
  98.     ld    hl,0
  99.     add    hl,sp
  100.     ld    (stk_sav),hl
  101.     ld    sp,new_stk
  102.     ld    hl,rst_vec
  103.     ld    de,rst_sav
  104.     ld    bc,3
  105.     ldir
  106.     ld    hl,(bdos_adr)
  107.     ld    a,0c3h
  108.     ld    (rst_vec),a
  109.     ld    (rst_vec+1),hl
  110.     ld    de,ram_top_ofse
  111.     add    hl,de
  112.     ld    (ram_top_adr),hl
  113.     ld    c,19h        ;get default drive number
  114.     rst    38h
  115.     ld    (def_drive),a
  116.     ld    (cur_drv),a
  117.     ld    c,' '
  118.     ld    e,0ffh        ;get default user
  119.     rst    38h
  120.     ld    (def_usr),a
  121.     ld    (cur_user),a
  122.     xor    a
  123.     ld    (mpm_flag),a
  124.     ld    c,12        ;get operating system type
  125.     rst    38h
  126.     ld    a,h
  127.     cp    0
  128.     jr    z,is_cpm
  129.     ld    (mpm_flag),a
  130.     ld    c,45        ;set error mode (mpm only)
  131.     ld    e,0feh
  132.     rst    38h
  133. is_cpm:
  134.     ld    hl,fcb1+1
  135.     ld    de,l2ebb
  136.     ld    bc,11
  137.     ldir
  138.     ld    a,'?'
  139.     ld    (de),a
  140.     inc    de
  141.     ld    (de),a
  142.     inc    de
  143.     ld    (de),a
  144.     inc    de
  145.     ld    (de),a
  146.     ld    hl,0ffffh
  147.     ld    (total_files),hl
  148.     ld    (fil_cntr),hl
  149.     call    l1edc
  150.     ld    hl,dma_addr
  151.     ld    e,(hl)
  152.     ld    d,0
  153.     add    hl,de
  154.     inc    hl
  155.     ld    (hl),0
  156.     inc    hl
  157.     ld    (hl),0
  158.     ld    hl,81h
  159.     jp    l074d
  160. rst_drvs:
  161.     ld    c,13            ;reset all drives
  162.     rst    38h
  163.     call    pnt_title
  164.     ld    de,main_menu
  165.     call    cons_op_strg        ;show main menu at start
  166.     call    l1d72
  167.     call    in_lin_prnt
  168. ;
  169.     db    tab,'Drive ',0
  170. ;
  171.     ld    a,(cur_drv)
  172.     add    a,'A'
  173.     call    prnt_a_char
  174.     ld    a,(cur_user)
  175.     inc    a
  176.     jp    nz,l0212
  177.     ld    a,'*'
  178.     call    prnt_a_char
  179.     ld    a,'?'
  180.     jp    l0220
  181. l0212:
  182.     dec    a
  183.     push    af
  184.     ld    e,a
  185.     call    l175f
  186.     pop    af
  187.     ld    l,a
  188.     ld    h,0
  189.     call    l1c53
  190.     xor    a
  191. l0220:
  192.     ld    (l2eba),a
  193.     call    in_lin_prnt
  194. ;
  195.     db    ':',0
  196. ;
  197.     ld    hl,l2ebb
  198.     push    hl
  199.     call    l155d
  200.     call    in_lin_prnt
  201. ;
  202.     db    '  ',0
  203. ;
  204.     ld    hl,0ffffh
  205.     ld    (total_files),hl
  206.     inc    hl
  207.     ld    (free_space),hl
  208.     ld    (used_space),hl
  209.     call    get_dsk_fspc
  210.     ld    hl,new_stk
  211.     ld    de,l2eba
  212.     call    l138a
  213.     ld    a,l
  214.     or    h
  215.     dec    hl
  216.     jp    z,l0268
  217. l0254:
  218.     inc    hl
  219.     ld    (total_files),hl
  220.     call    l1a21
  221.     call    l1a65
  222.     call    l1b32
  223.     ld    hl,(l2e16)
  224.     dec    hl
  225.     ld    (total_files),hl
  226. l0268:
  227.     push    hl
  228.     call    l02f8
  229.     pop    hl
  230.     inc    hl
  231.     call    get_nxt_fcb
  232.     ld    (l2e1e),hl
  233.     ld    hl,0
  234.     ld    (fil_cntr),hl
  235.     ld    (blk_siz_tagd),hl
  236.     ld    (k_siz_tagd),hl
  237. disp_fname:
  238.     ld    sp,new_stk
  239.     ld    a,(cur_user)
  240.     ld    (l2e3a),a
  241.     call    bds_sel_dsk
  242.     ld    hl,(total_files)
  243.     inc    hl
  244.     ld    a,l
  245.     or    h
  246.     jp    nz,fil_found
  247.     call    in_lin_prnt
  248. ;
  249.     db    cr,lf,cr,lf,'No files found.  (X/L/S)?',0
  250. ;
  251.     call    get_key
  252.     cp    'X'
  253.     jp    z,exit
  254.     cp    'L'
  255.     jp    z,get_new_drv
  256.     cp    'S'
  257.     jp    z,get_drv_spc
  258.     jp    disp_fname
  259. fil_found:
  260.     call    cr_lf
  261.     ld    hl,(fil_cntr)
  262.     call    get_nxt_fcb
  263.     call    l1564
  264.     call    get_key
  265.     ld    b,a
  266.     ld    hl,disp_fname
  267.     push    hl
  268.     ld    hl,cmd_tbl
  269. l02d2:
  270.     ld    a,(hl)
  271.     or    a
  272.     ret    z
  273.     cp    b
  274.     inc    hl
  275.     jr    z,l02df
  276.     inc    hl
  277.     inc    hl
  278.     jr    l02d2
  279. l02df:
  280.     ld    e,(hl)
  281.     inc    hl
  282.     ld    d,(hl)
  283.     push    de
  284.     ret
  285. ;
  286. ;    #################### EXIT TO OPERATING SYSTEM ###############
  287. ;
  288. exit:
  289.     ld    a,(def_drive)
  290.     ld    e,a
  291.     ld    c,14            ;select drive
  292.     rst    38h
  293.     ld    a,(def_usr)
  294.     ld    e,a
  295.     call    l175f
  296.  
  297. ;Restoration of restart vectors necessary for Sorcerer + SCUAMON
  298. ; which uses RST 38 for its break point routines. May be needed for
  299. ; other applications and should have been done in NSWP v2.07.
  300.  
  301.     ld    hl,rst_sav        ;restore
  302.     ld    de,rst_vec        ;original
  303.     ld    bc,3            ;restart 38
  304.     ldir                ;vector
  305.  
  306. stk_sav    equ    $+1
  307.     ld    sp,0
  308.     ret
  309.  
  310. l02f8:
  311.     push    hl
  312.     call    l1bd9
  313.     ld    hl,(used_space)
  314.     ld    c,4
  315.     call    pnt_hl_in_dec
  316.     call    in_lin_prnt
  317. ;
  318.     db    'K in ',0
  319. ;
  320.     pop    hl
  321.     inc    hl
  322.     ld    c,4
  323.     call    pnt_hl_in_dec
  324.     call    in_lin_prnt
  325. ;
  326.     db    ' files.  ',0
  327. ;
  328.     ld    hl,(free_space)
  329.     ld    c,4
  330.     call    pnt_hl_in_dec
  331.     call    in_lin_prnt
  332. ;
  333.     db    'K free.',lf,0
  334. ;
  335.     ret
  336. ;
  337. ;    ####################### MAIN COMMAND TABLE ###############
  338. ;
  339. cmd_tbl:
  340.     db    ' '
  341.     dw    forward
  342.     db    cr
  343.     dw    forward
  344.     db    'B'
  345.     dw    back_up
  346.     db    'X'
  347.     dw    exit
  348.     db    'S'
  349.     dw    get_drv_spc
  350.     db    'D'
  351.     dw    delete
  352.     db    'T'
  353.     dw    tag
  354.     db    'U'
  355.     dw    un_tag
  356.     db    'V'
  357.     dw    view
  358.     db    'P'
  359.     dw    print
  360.     db    'E'
  361.     dw    erase
  362.     db    'L'
  363.     dw    get_new_drv
  364.     db    'C'
  365.     dw    copy
  366.     db    'M'
  367.     dw    mult_funct
  368.     db    'A'
  369.     dw    retag
  370.     db    'R'
  371.     dw    rename
  372.     db    'F'
  373.     dw    find
  374.     db    'W'
  375.     dw    wildcard
  376.     db    'Y'
  377.     dw    atributes
  378.     db    '?'
  379.     dw    menu1
  380.     db    'Q'
  381.     dw    sq_usq
  382.     db    0
  383. ;
  384. ;    ##################### FORWARD ONE ENTRY #############
  385. ;
  386. forward:
  387.     ld    de,(fil_cntr)
  388.     inc    de
  389.     ld    (fil_cntr),de
  390.     ld    hl,(total_files)
  391.     call    cmp_hl_de
  392.     jp    nc,disp_fname
  393.     ld    hl,0
  394.     ld    (fil_cntr),hl
  395.     call    cr_lf
  396.     jp    disp_fname
  397. ;
  398. ;    ################### BACK UP A FILE ########################
  399. ;
  400. back_up:
  401.     ld    hl,(fil_cntr)
  402.     ld    a,h
  403.     or    l
  404.     dec    hl
  405.     ld    (fil_cntr),hl
  406.     jp    nz,disp_fname
  407.     call    cr_lf
  408.     ld    hl,(total_files)
  409.     ld    (fil_cntr),hl
  410.     jp    disp_fname
  411.  
  412. get_drv_spc:
  413.     call    in_lin_prnt
  414. ;
  415.     db    '  Which drive? ',0
  416. ;
  417.     call    get_chr_strg
  418. l03c0:
  419.     ld    a,(cmd_strg_dat)
  420.     cp    'A'
  421. l03c5:
  422.     jp    c,disp_fname
  423.     cp    'Q'
  424.     jp    nc,disp_fname
  425.     push    af
  426.     ld    c,13            ;reset all drives
  427.     rst    38h
  428.     ld    a,(cur_drv)
  429.     ld    b,a
  430.     pop    af
  431.     sub    'A'
  432.     ld    (cur_drv),a
  433.     push    bc
  434.     push    af
  435.     call    cr_lf
  436.     call    l1d72
  437.     call    get_dsk_fspc
  438. l03e8:
  439.     call    cr_lf
  440.     ld    hl,(free_space)
  441.     ld    c,4
  442.     call    pnt_hl_in_dec
  443.     call    in_lin_prnt
  444. ;
  445.     db    'K remaining on drive ',0
  446. ;
  447.     pop    af
  448.     add    a,'A'
  449.     call    prnt_a_char
  450.     ld    a,':'
  451.     call    prnt_a_char
  452.     call    cr_lf
  453.     pop    bc
  454.     ld    a,b
  455.     ld    (cur_drv),a
  456.     call    l1d72
  457.     jp    disp_fname
  458. ;
  459. ;    ################### SET FILE ATTRIBUTES ###################
  460. ;
  461. atributes:
  462.     call    in_lin_prnt
  463. ;
  464.     db    '  Which flags (1-4,R,S,A)? ',0
  465. ;
  466.     call    get_chr_strg
  467.     ld    hl,dummy_fname
  468.     ld    b,0bh
  469. ;
  470. ;clear dummy file name
  471. ;
  472. clear_loop:
  473.     ld    (hl),0
  474.     inc    hl
  475.     djnz    clear_loop
  476.     ld    hl,cmd_strg_cnt
  477.     ld    a,(hl)
  478.     or    a
  479.     jp    z,disp_fname
  480.     inc    hl
  481.     ld    (l2e3e),hl
  482. l045f:
  483.     ld    hl,(l2e3e)
  484.     ex    de,hl
  485.     call    l1ed2
  486.     ex    de,hl
  487.     inc    hl
  488.     ld    (l2e3e),hl
  489.     or    a
  490.     jp    z,l048a
  491.     ld    hl,atrib_mask
  492.     ld    de,dummy_fname
  493.     ld    b,11
  494. l0477:
  495.     cp    (hl)
  496.     jp    z,l0484
  497.     inc    hl
  498.     inc    de
  499.     djnz    l0477
  500.     jp    l045f
  501.  
  502. l0484:
  503.     ld    a,80h
  504.     ld    (de),a
  505.     jp    l045f
  506. l048a:
  507.     ld    a,2
  508.     jp    l09d6
  509. ;
  510. atrib_mask:
  511.     db    '1234zzzzRSA'    ;file attribute mask
  512. ;
  513. ;    ####################### DELETE A FILE #######################
  514. ;
  515. delete:
  516.     call    in_lin_prnt
  517. ;
  518.     db    '  Delete file? ',0
  519. ;
  520.     call    get_key
  521.     cp    'Y'
  522.     jp    nz,disp_fname
  523.     ld    hl,(fil_cntr)
  524.     call    l04be
  525.     jp    disp_fname
  526. l04be:
  527.     call    get_nxt_fcb
  528.     push    hl
  529.     call    dec_tagd_siz
  530.     pop    hl
  531.     push    hl
  532.     ld    de,fcb1+1
  533.     xor    a
  534.     ld    (fcb1),a
  535.     ld    bc,11
  536.     ldir
  537.     push    hl
  538.     push    de
  539.     pop    hl
  540.     inc    de
  541.     ld    bc,22
  542.     ld    (hl),0
  543.     ldir
  544.     ld    e,0ffh
  545.     call    l175f
  546.     ld    e,a
  547.     pop    hl
  548.     push    de
  549.     ld    e,(hl)
  550.     call    l175f
  551.     ld    a,(operand_1)
  552.     and    80h
  553.     jp    z,l0521
  554.     call    in_lin_prnt
  555. ;
  556.     db    '  R/O. Delete? ',7,0
  557. ;
  558.     call    get_key
  559.     cp    'Y'
  560.     jp    z,l0511
  561.     pop    de
  562.     pop    hl
  563.     ret
  564. l0511:
  565.     ld    a,(operand_1)
  566.     and    7fh
  567.     ld    (operand_1),a
  568.     ld    de,fcb1
  569.     ld    c,30            ;set file attributes
  570.     rst    38h
  571. l0521:
  572.     ld    de,fcb1
  573.     ld    c,19            ;delete file
  574.     rst    38h
  575.     pop    de
  576.     call    l175f
  577.     ld    de,(total_files)
  578.     ld    hl,(fil_cntr)
  579.     ld    a,e
  580.     sub    l
  581.     ld    l,a
  582.     ld    a,d
  583.     sbc    a,h
  584.     ld    h,a
  585.     add    hl,hl
  586.     add    hl,hl
  587.     add    hl,hl
  588.     add    hl,hl
  589.     push    hl
  590.     pop    bc
  591.     pop    hl
  592.     push    hl
  593.     ld    de,16
  594.     add    hl,de
  595.     pop    de
  596.     ld    a,b
  597.     or    c
  598.     jp    z,l0556
  599. l054c:
  600.     ld    a,(hl)
  601.     ld    (de),a
  602.     inc    hl
  603.     inc    de
  604.     dec    bc
  605.     ld    a,b
  606.     or    c
  607.     jp    nz,l054c
  608. l0556:
  609.     ld    de,(total_files)
  610.     dec    de
  611.     ld    (total_files),de
  612.     ld    hl,(fil_cntr)
  613.     call    cmp_hl_de
  614.     ret    c
  615.     ret    z
  616.     dec    hl
  617.     ld    (fil_cntr),hl
  618.     ret
  619. ;
  620. ;    ##################### ERASE FILES - TAGGED OR UNTAGGED #####
  621. ;
  622. erase:
  623.     call    in_lin_prnt
  624. ;
  625.     db    cr,lf,'Erase Tagged or Untagged files (T/U)? ',0
  626. ;
  627.     call    get_key
  628.     cp    'T'
  629.     jp    z,chk_tag
  630.     cp    'U'
  631.     jp    nz,disp_fname
  632. chk_tag:
  633.     cp    'T'
  634.     ld    a,1
  635.     jp    z,set_t_u_flg
  636.     xor    a
  637. set_t_u_flg:
  638.     ld    (tag_utag_flg),a
  639. prmpt_yn:
  640.     call    in_lin_prnt
  641. ;
  642.     db    cr,lf,'Do you wish to be prompted (Y/N/A)? ',0
  643. ;
  644.     call    get_key
  645.     cp    3
  646.     jp    z,disp_fname
  647.     cp    'A'
  648.     jp    z,disp_fname
  649.     cp    'N'
  650.     jp    z,l05f5
  651.     cp    'Y'
  652.     ld    a,1
  653.     jp    nz,prmpt_yn
  654.     jp    set_prmpt_fl
  655. l05f5:
  656.     xor    a
  657. set_prmpt_fl:
  658.     ld    (prompt_flag),a
  659.     ld    hl,0
  660. l05fc:
  661.     push    hl
  662.     ld    (fil_cntr),hl
  663.     call    get_nxt_fcb
  664.     push    hl
  665.     call    inc_hl_12
  666.     ld    a,(hl)
  667.     and    1
  668.     ld    b,a
  669.     ld    a,(tag_utag_flg)
  670.     cp    b
  671.     pop    hl
  672.     jp    nz,l0666
  673.     push    hl
  674.     call    in_lin_prnt
  675. ;
  676.     db    cr,lf,'Deleting  ---> ',0
  677. ;
  678.     pop    hl
  679.     call    l151a
  680.     ld    a,(prompt_flag)
  681.     or    a
  682.     jp    z,del_file
  683. prompt:
  684.     call    in_lin_prnt
  685. ;
  686.     db    '  Delete (Y/N/A)? ',0
  687. ;
  688.     call    get_key
  689.     cp    'A'
  690.     jp    z,del_abort
  691.     cp    'Y'
  692.     jp    nz,l0666
  693. del_file:
  694.     call    l16e6
  695.     jp    z,l0683
  696.     pop    hl
  697.     push    hl
  698.     call    l04be
  699.     pop    hl
  700.     jp    l0668
  701.  
  702. l0666:
  703.     pop    hl
  704.     inc    hl
  705. l0668:
  706.     ex    de,hl
  707.     ld    hl,(total_files)
  708.     inc    hl
  709.     ld    a,l
  710.     or    h
  711.     jp    z,del_abort
  712.     dec    hl
  713.     call    cmp_hl_de
  714.     ex    de,hl
  715.     jp    nc,l05fc
  716. del_abort:
  717.     ld    hl,0
  718.     ld    (fil_cntr),hl
  719.     jp    disp_fname
  720. l0683:
  721.     ld    hl,0
  722.     ld    (fil_cntr),hl
  723.     jp    l0b9c
  724. sum_tagd_siz:
  725.     ld    a,(hl)
  726.     ld    (hl),1
  727.     cp    1
  728.     jp    z,pnt_tgd_siz
  729.     inc    hl
  730.     call    l1cec
  731.     push    hl
  732.     ld    hl,(k_siz_tagd)
  733.     add    hl,de
  734.     ld    (k_siz_tagd),hl
  735.     pop    hl
  736.     ex    de,hl
  737.     ld    hl,(blk_siz_tagd)
  738.     add    hl,de
  739.     ld    (blk_siz_tagd),hl
  740. pnt_tgd_siz:
  741.     ld    hl,(blk_siz_tagd)
  742.     ld    c,4
  743.     call    pnt_hl_in_dec
  744.     call    in_lin_prnt
  745. ;
  746.     db    'K (',0
  747. ;
  748.     ld    hl,(k_siz_tagd)
  749.     ld    c,4
  750.     call    pnt_hl_in_dec
  751.     call    in_lin_prnt
  752. ;
  753.     db    'K)',0
  754. ;
  755.     ret
  756. ;
  757. ;    ################### TAG A FILE ##########################
  758. ;
  759. tag:
  760.     call    tagd_files
  761.     ld    hl,(fil_cntr)
  762.     call    get_nxt_fcb
  763.     call    inc_hl_12
  764.     call    sum_tagd_siz
  765.     jp    forward
  766. tagd_files:
  767.     call    in_lin_prnt
  768. ;
  769.     db    '  Tagged files = ',0
  770. ;
  771.     ret
  772. ;
  773. ;    #################### UN-TAG A FILE ########################
  774. ;
  775. un_tag:
  776.     call    tagd_files
  777.     ld    hl,(fil_cntr)
  778.     call    get_nxt_fcb
  779.     call    dec_tagd_siz
  780.     call    pnt_tgd_siz
  781.     jp    forward
  782. dec_tagd_siz:
  783.     call    inc_hl_12
  784.     ld    a,(hl)
  785.     ld    (hl),0
  786.     cp    1
  787.     ret    nz
  788.     push    hl
  789.     inc    hl
  790.     call    l1cec
  791.     push    hl
  792.     ld    hl,(k_siz_tagd)
  793.     call    l107e
  794.     ld    (k_siz_tagd),hl
  795.     pop    de
  796.     ld    hl,(blk_siz_tagd)
  797.     call    l107e
  798.     ld    (blk_siz_tagd),hl
  799.     pop    hl
  800.     ret
  801. get_new_drv:
  802.     call    in_lin_prnt
  803. ;
  804.     db    '  New drive/user/mask? ',0
  805. ;
  806.     call    get_chr_strg
  807.     ld    hl,cmd_strg_cnt
  808.     ld    a,(hl)
  809.     or    a
  810.     jp    z,disp_fname
  811. l074d:
  812.     inc    hl
  813.     ld    (l2e3e),hl
  814.     push    hl
  815.     call    l1dd2
  816.     ld    a,(fcb1)
  817.     or    a
  818.     jp    nz,l0760
  819.     ld    a,(cur_drv)
  820.     inc    a
  821. l0760:
  822.     dec    a
  823.     ld    (cur_drv),a
  824.     ld    a,(new_user)
  825.     cp    0ffh
  826.     pop    hl
  827.     jp    nz,l0779
  828.     inc    hl
  829.     ld    a,(hl)
  830.     cp    '*'
  831.     ld    a,0ffh
  832.     jp    z,l0779
  833.     ld    a,(cur_user)
  834. l0779:
  835.     ld    (cur_user),a
  836.     ld    a,(fcb1+1)
  837.     cp    ' '
  838.     jp    nz,l0791
  839.     ld    hl,fcb1+1
  840.     ld    de,05eh
  841.     ld    bc,10
  842.     ld    (hl),'?'
  843.     ldir
  844. l0791:
  845.     ld    hl,fcb1
  846.     ld    de,l2eba
  847.     ld    bc,12
  848.     ldir
  849.     call    cr_lf
  850.     call    cr_lf
  851.     jp    rst_drvs
  852. l07a5:
  853.     push    hl
  854.     xor    a
  855.     ld    (verif_flag),a
  856. check_verify:
  857.     ld    a,(hl)
  858.     or    a
  859.     jp    z,l07b8
  860.     cp    'V'
  861.     inc    hl
  862.     jp    nz,check_verify
  863.     ld    (verif_flag),a
  864. l07b8:
  865.     pop    hl
  866.     ret
  867. l07ba:
  868.     call    in_lin_prnt
  869. ;
  870.     db    cr,lf,'Illegal drive code.',0
  871. ;
  872.     jp    disp_fname
  873. l07d6:
  874.     call    l07a5
  875.     ld    a,(cur_user)
  876.     ld    (new_user),a
  877.     ld    a,(cur_drv)
  878.     ld    (new_drive),a
  879.     ld    a,(hl)
  880.     cp    '0'
  881.     jp    c,l07ba
  882.     cp    ':'
  883.     jp    c,l0806
  884.     cp    'A'
  885.     jp    c,l07ba
  886.     cp    'Q'
  887.     jp    nc,l07ba
  888.     sub    'A'
  889.     ld    (new_drive),a
  890.     inc    hl            ;get next char
  891.     ld    a,(hl)
  892.     cp    ':'
  893.     ret    z
  894.     or    a            ;nothing is ok too
  895.     ret    z
  896. l0806:
  897.     cp    '*'            ;all users ?
  898.     jp    z,l083a
  899.     cp    '0'            ;valid digit?
  900.     ret    c
  901.     cp    ':'            ;valid digit?
  902.     ret    nc
  903.     sub    '0'            ;convert to units & save 1st digit in b
  904.     ld    b,a
  905.     inc    hl            ;get 2nd digit
  906.     ld    a,(hl)
  907.     cp    ':'            ;end?
  908.     jr    z,singl_digit
  909.     or    a            ;nothing is end too?
  910.     jr    z,singl_digit
  911.     cp    '0'            ;valid digit?
  912.     jr    c,singl_digit
  913.     cp    ':'
  914.     jr    nc,singl_digit        
  915.     sub    '0'            ;convert to units & hold 2nd digit
  916.     push    af
  917.     ld    a,b
  918.     add    a,a
  919.     add    a,a
  920.     add    a,b
  921.     add    a,a            ;a is x10
  922.     ld    b,a            ;hold 10's in b
  923.     pop    af
  924.     add    a,b
  925.     cp    20h
  926.     ret    nc
  927.     ld    (new_user),a        ;save user number
  928.     ret
  929. singl_digit:
  930.     ld    a,b
  931.     ld    (new_user),a
  932.     ret
  933. l083a:
  934.     ld    a,0ffh
  935.     ld    (new_user),a
  936.     ret
  937.  
  938. get_chr_strg:
  939.     ld    de,chr_strg_bfr
  940.     ld    c,10            ;console input line
  941.     rst    38h
  942.     ld    hl,cmd_strg_cnt
  943.     push    hl
  944.     ld    e,(hl)
  945.     inc    hl
  946.     ld    d,0
  947.     add    hl,de
  948.     ld    (hl),0
  949.     inc    hl
  950.     ld    (hl),b
  951.     pop    hl
  952. l0856:
  953.     inc    hl
  954.     ld    a,(hl)
  955.     or    a
  956.     ret    z
  957.     call    l1d69
  958.     ld    (hl),a
  959.     jp    l0856
  960. l0861:
  961.     call    in_lin_prnt
  962. ;
  963.     db    '  To which drive/user? ',0
  964. ;
  965.     call    get_chr_strg
  966.     ld    hl,cmd_strg_cnt
  967.     ld    a,(hl)
  968.     or    a
  969.     jp    z,disp_fname
  970.     push    hl
  971.     ld    c,13            ;reset all drives
  972.     rst    38h
  973.     call    l1d72
  974.     pop    hl
  975.     inc    hl
  976.     call    l07d6
  977.     ld    a,(cmd_save)
  978.     or    a
  979.     ret    nz
  980. l0899:
  981.     ld    a,(l2e3a)
  982.     ld    b,a
  983.     ld    a,(new_user)
  984.     cp    0ffh
  985.     jp    z,l08a7
  986.     cp    b
  987.     ret    nz
  988. l08a7:
  989.     ld    a,(new_drive)
  990.     ld    b,a
  991.     ld    a,(cur_drv)
  992.     cp    b
  993.     ret    nz
  994.     call    in_lin_prnt
  995. ;
  996.     db    cr,lf,'Can''t copy to same drive and user.',0
  997. ;
  998.     jp    disp_fname
  999. ;
  1000. ;    ###################### SINGLE FILE COPY ####################
  1001. ;
  1002. copy:
  1003.     ld    hl,(fil_cntr)
  1004.     call    get_nxt_fcb
  1005.     push    hl
  1006.     xor    a
  1007.     ld    (new_fil_fcb),a
  1008.     ld    de,new_fil_nam
  1009.     ld    bc,11
  1010.     ldir
  1011.     ld    a,(hl)
  1012.     ld    (l2e3a),a
  1013.     call    in_lin_prnt
  1014. ;
  1015.     db    '  Copy to (filespec)? ',0
  1016. ;
  1017.     call    get_chr_strg
  1018.     call    cr_lf
  1019.     ld    hl,cmd_strg_cnt
  1020.     ld    a,(hl)
  1021.     or    a
  1022.     jp    z,disp_fname
  1023.     inc    hl
  1024.     ld    (l2e3e),hl
  1025.     call    l1dd2
  1026.     ld    hl,(l2e3e)
  1027.     call    l07a5
  1028.     ld    a,(fcb1+1)
  1029.     cp    ' '
  1030.     jp    nz,l093e
  1031.     ld    hl,new_fil_nam
  1032.     ld    de,fcb1+1
  1033.     ld    b,0bh
  1034. l0934:
  1035.     ld    a,(hl)
  1036.     and    7fh
  1037.     ld    (de),a
  1038.     inc    hl
  1039.     inc    de
  1040.     djnz    l0934
  1041. l093e:
  1042.     ld    a,(fcb1)
  1043.     dec    a
  1044.     ld    (new_drive),a
  1045.     ld    hl,new_fil_nam
  1046.     ld    de,fcb1+1
  1047.     call    l114e
  1048.     jp    nz,l0954
  1049.     call    l0899
  1050. l0954:
  1051.     ld    hl,fcb1+1
  1052.     ld    de,new_fil_nam
  1053.     ld    b,11
  1054. l095c:
  1055.     ld    a,(de)
  1056.     and    80h
  1057.     or    (hl)
  1058.     ld    (hl),a
  1059.     inc    hl
  1060.     inc    de
  1061.     djnz    l095c
  1062.     ld    hl,fcb1
  1063.     ld    de,int_fcb
  1064.     ld    bc,12
  1065.     ldir
  1066.     ld    a,(cur_drv)
  1067.     ld    b,a
  1068.     ld    a,(new_drive)
  1069.     cp    b
  1070.     jp    z,l0985
  1071.     ld    c,13            ;reset all drives
  1072.     rst    38h
  1073.     call    l1d72
  1074. l0985:
  1075.     pop    hl
  1076.     call    l0dfb
  1077.     jp    disp_fname
  1078. ;
  1079. ;    ##################### SQ/USQ OR REVERSE FILES ############
  1080. ;
  1081. sq_usq:
  1082.     call    in_lin_prnt
  1083. ;
  1084.     db    cr,lf,'  Squeeze, Unsqueeze or Reverse (S,U,R)? ',0
  1085. ;
  1086.     call    get_key
  1087.     ld    (l2e01),a
  1088.     cp    'S'
  1089.     jp    z,val_sq_opt
  1090.     cp    'U'
  1091.     jp    z,val_sq_opt
  1092.     cp    'R'
  1093.     jp    nz,disp_fname
  1094. val_sq_opt:
  1095.     ld    a,1
  1096.     jp    l09d6
  1097. ;
  1098. ;    ################# MULTI-FILE FUNCTION ####################
  1099. ;
  1100. mult_funct:
  1101.     xor    a
  1102. l09d6:
  1103.     ld    (cmd_save),a
  1104.     push    af
  1105.     call    cr_lf
  1106.     ld    a,(cur_user)
  1107.     ld    (l2e3a),a
  1108.     pop    af
  1109.     cp    2
  1110.     jp    z,l09ec
  1111.     call    l0861
  1112. l09ec:
  1113.     ld    hl,0
  1114. l09ef:
  1115.     push    hl
  1116.     call    get_nxt_fcb
  1117.     push    hl
  1118.     call    inc_hl_12
  1119.     ld    a,(hl)
  1120.     cp    1
  1121.     dec    hl
  1122.     ld    b,(hl)
  1123.     pop    hl
  1124.     jp    nz,l0b83
  1125.     push    hl
  1126.     ld    a,b
  1127.     ld    (l2e3a),a
  1128.     ld    a,(cmd_save)
  1129.     or    a
  1130.     jp    nz,l0a4f
  1131.     ld    a,(cur_drv)
  1132.     ld    b,a
  1133.     ld    a,(new_drive)
  1134.     cp    b
  1135.     jp    nz,l0a4f
  1136.     ld    a,(l2e3a)
  1137.     ld    b,a
  1138.     ld    a,(new_user)
  1139.     cp    b
  1140.     jp    nz,l0a4f
  1141.     call    in_lin_prnt
  1142. ;
  1143.     db    cr,lf,'Skipping, same drive & user --> ',0
  1144. ;
  1145.     pop    hl
  1146.     call    l151a
  1147.     jp    l0b83
  1148. l0a4f:
  1149.     ld    a,(cmd_save)
  1150.     cp    1
  1151.     jp    z,l0a73
  1152.     cp    2
  1153.     jp    z,l0a8a
  1154.     call    in_lin_prnt
  1155. ;
  1156.     db    cr,lf,'Copying   --> ',0
  1157. ;
  1158.     jp    l0a9e
  1159. l0a73:
  1160.     call    in_lin_prnt
  1161. ;
  1162.     db    cr,lf,'SQ/USQ    --> ',0
  1163. ;
  1164.     jp    l0a9e
  1165. l0a8a:
  1166.     call    in_lin_prnt
  1167. ;
  1168.     db    cr,lf,'Changing  --> ',0
  1169. ;
  1170. l0a9e:
  1171.     pop    hl
  1172.     push    hl
  1173.     call    l151a
  1174.     ld    a,(cmd_save)
  1175.     cp    2
  1176.     jr    z,atrib_loop
  1177.     call    in_lin_prnt
  1178. ;
  1179.     db    ' to ',0
  1180. ;
  1181.     jp    l0b29
  1182.  
  1183. atrib_loop:
  1184.     call    in_lin_prnt
  1185.  ;
  1186.     db    ' attributes ',0
  1187. ;
  1188.     ld    hl,dummy_fname
  1189.     ld    de,l0b09
  1190.     ld    b,4
  1191. l0abb:
  1192.     ld    a,(hl)
  1193.     or    a
  1194.     call    nz,l0aea
  1195.     inc    hl
  1196.     inc    de
  1197.     inc    de
  1198.     inc    de
  1199.     djnz    l0abb
  1200.     ld    hl,ext_1
  1201.     ld    de,l0b15
  1202.     ld    a,(hl)
  1203.     or    a
  1204.     call    z,l0b01
  1205.     ld    de,l0b1a
  1206.     ld    b,3
  1207. l0ad8:
  1208.     ld    a,(hl)
  1209.     or    a
  1210.     call    nz,l0b01
  1211.     inc    hl
  1212.     inc    de
  1213.     inc    de
  1214.     inc    de
  1215.     inc    de
  1216.     inc    de
  1217.     djnz    l0ad8
  1218.     jp    l0b65
  1219. l0aea:
  1220.     push    hl
  1221.     push    de
  1222.     push    bc
  1223.     ld    b,3
  1224. l0aef:
  1225.     ex    de,hl
  1226. l0af0:
  1227.     ld    a,(hl)
  1228.     push    hl
  1229.     push    bc
  1230.     call    prnt_a_char
  1231.     pop    bc
  1232.     pop    hl
  1233.     inc    hl
  1234.     djnz    l0af0
  1235.     pop    bc
  1236.     pop    de
  1237.     pop    hl
  1238.     ret
  1239. l0b01:
  1240.     push    hl
  1241.     push    de
  1242.     push    bc
  1243.     ld    b,5
  1244.     jp    l0aef
  1245.  
  1246. l0b09:
  1247.     db    ' 1 '
  1248.     db    ' 2 '
  1249.     db    ' 3 '
  1250.     db    ' 4 '
  1251.  
  1252. l0b15:
  1253.     db    ' R/W '
  1254.  
  1255. l0b1a:
  1256.     db    ' R/O '
  1257.     db    ' SYS '
  1258.     db    ' ARC '
  1259.  
  1260. l0b29:
  1261.     ld    a,(new_drive)
  1262.     add    a,'A'
  1263.     call    prnt_a_char
  1264.     ld    a,(new_user)
  1265.     cp    0ffh
  1266.     jp    nz,l0b3c
  1267.     ld    a,(l2e3a)
  1268. l0b3c:
  1269.     ld    l,a
  1270.     ld    h,0
  1271.     cp    0ah
  1272.     ld    c,1
  1273.     jp    c,l0b47
  1274.     inc    c
  1275. l0b47:
  1276.     call    pnt_hl_in_dec
  1277.     ld    a,':'
  1278.     call    prnt_a_char
  1279.     ld    a,(verif_flag)
  1280.     or    a
  1281.     jp    z,l0b65
  1282.     call    in_lin_prnt
  1283. ;
  1284.     db    '  with CRC  ',0
  1285. ;
  1286. l0b65:
  1287.     pop    hl
  1288.     push    hl
  1289.     ld    a,(cmd_save)
  1290.     cp    1
  1291.     jp    z,l0b7a
  1292.     cp    2
  1293.     jp    z,l0bb4
  1294.     call    l0e01
  1295.     jp    l0b7d
  1296. l0b7a:
  1297.     call    l0c7a
  1298. l0b7d:
  1299.     pop    hl
  1300.     call    dec_tagd_siz
  1301.     ld    (hl),2
  1302. l0b83:
  1303.     call    l16e6
  1304.     jp    z,l0b9c
  1305.     pop    de
  1306.     inc    de
  1307.     ld    hl,(total_files)
  1308.     call    cmp_hl_de
  1309.     ex    de,hl
  1310.     jp    nc,l09ef
  1311.     call    cr_lf
  1312.     jp    l0bb1
  1313. l0b9c:
  1314.     call    in_lin_prnt
  1315. ;
  1316.     db    cr,lf,'--- Aborted ---',0
  1317. ;
  1318. l0bb1:
  1319.     jp    disp_fname
  1320. l0bb4:
  1321.     push    hl
  1322.     ld    de,new_fil_fcb
  1323.     xor    a
  1324.     ld    (de),a
  1325.     inc    de
  1326.     ld    bc,11
  1327.     ldir
  1328.     ld    a,(hl)
  1329.     push    af
  1330.     push    de
  1331.     pop    hl
  1332.     inc    de
  1333.     ld    (hl),0
  1334.     ld    bc,22
  1335.     ldir
  1336.     pop    af
  1337.     ld    (l2e3a),a
  1338.     call    bds_sel_dsk
  1339.     ld    hl,new_fil_nam
  1340.     ld    de,dummy_fname
  1341.     ld    b,0bh
  1342. l0bdb:
  1343.     ld    a,(hl)
  1344.     and    7fh
  1345.     ld    (hl),a
  1346.     ld    a,(de)
  1347.     or    (hl)
  1348.     ld    (hl),a
  1349.     inc    hl
  1350.     inc    de
  1351.     djnz    l0bdb
  1352.     ld    de,new_fil_fcb
  1353.     ld    c,30            ;set file attrubutes
  1354.     rst    38h
  1355.     ld    hl,new_fil_nam
  1356.     pop    de
  1357.     ld    bc,11
  1358.     ldir
  1359.     jp    l0b7d
  1360. ;
  1361. ;    ##################### RETAG 'TAGGED' FILES #################
  1362. ;
  1363. retag:
  1364.     ld    hl,0
  1365. l0bff:
  1366.     push    hl
  1367.     call    get_nxt_fcb
  1368.     push    hl
  1369.     call    inc_hl_12
  1370.     ld    a,(hl)
  1371.     cp    2
  1372.     jp    nz,l0c33
  1373.     call    in_lin_prnt
  1374. ;
  1375.     db    cr,lf,'Retagging --> ',0
  1376. ;
  1377.     pop    hl
  1378.     push    hl
  1379.     call    l151a
  1380.     ld    a,' '
  1381.     call    prnt_a_char
  1382.     pop    hl
  1383.     call    inc_hl_12
  1384.     call    sum_tagd_siz
  1385.     push    hl
  1386. l0c33:
  1387.     pop    hl
  1388.     pop    de
  1389.     inc    de
  1390.     ld    hl,(total_files)
  1391.     call    cmp_hl_de
  1392.     ex    de,hl
  1393.     jp    nc,l0bff
  1394.     jp    disp_fname
  1395. l0c44:
  1396.     call    l220f
  1397.     or    a
  1398.     ret    nz
  1399.     push    af
  1400.     push    de
  1401.     push    hl
  1402.     call    in_lin_prnt
  1403. ;
  1404.     db    '(',0
  1405. ;
  1406. l0c51:
  1407.     pop    hl
  1408.     push    hl
  1409. l0c53:
  1410.     ld    a,(hl)
  1411.     inc    hl
  1412.     or    a
  1413.     jp    z,l0c61
  1414.     push    hl
  1415.     call    prnt_a_char
  1416.     pop    hl
  1417.     jp    l0c53
  1418. l0c61:
  1419.     call    in_lin_prnt
  1420. ;
  1421.     db    ')',0
  1422. ;
  1423.     pop    hl
  1424.     pop    de
  1425.     pop    af
  1426.     ret
  1427. l0c6a:
  1428.     ld    a,(hl)
  1429.     cp    ' '
  1430.     push    hl
  1431.     push    bc
  1432.     call    nz,prnt_a_char
  1433.     pop    bc
  1434.     pop    hl
  1435.     inc    hl
  1436.     djnz    l0c6a
  1437.     ret
  1438. l0c7a:
  1439.     ld    (l2e02),hl
  1440.     call    l1706
  1441.     call    l0db5
  1442.     ex    de,hl
  1443.     ld    hl,(l2e1e)
  1444.     ld    (l2e22),hl
  1445.     ld    hl,(l2e02)
  1446.     jp    nz,l0df3
  1447.     ex    de,hl
  1448.     ld    de,lff76
  1449.     call    cmp_hl_de
  1450.     jp    nz,l0cad
  1451.     ld    hl,(l2e02)
  1452.     ld    a,(l2e01)
  1453.     cp    'U'
  1454.     jp    z,l0d24
  1455.     cp    'R'
  1456.     jp    z,l0d24
  1457.     jp    l0df3
  1458. l0cad:
  1459.     ld    hl,(l2e02)
  1460.     ld    a,(l2e01)
  1461.     cp    'R'
  1462.     jp    z,l0cbd
  1463.     cp    'U'
  1464.     jp    z,l0df3
  1465. l0cbd:
  1466.     ld    hl,l30f1
  1467.     call    l2382
  1468.     or    a
  1469.     jr    z,sqz_able
  1470.     call    in_lin_prnt
  1471.     db    cr,lf,bell,"Squeezed file not shorter than original."
  1472.     db    cr,lf,"Squeeze anyway (Y/N)? ",0
  1473.     call    get_key
  1474.     cp    'Y'
  1475. sqz_able:
  1476.     ld    hl,(l2e02)
  1477.     jp    nz,l0df3
  1478.     call    l1830
  1479.     ld    hl,new_fil_fcb
  1480.     ld    de,int_fcb
  1481.     ld    bc,12
  1482.     ld    (hl),0
  1483.     ldir
  1484.     ld    hl,ext_1
  1485.     ld    a,(hl)
  1486.     and    7fh
  1487.     cp    ' '
  1488.     jp    nz,l0cea
  1489.     ld    (hl),'Q'
  1490.     inc    hl
  1491.     ld    (hl),'Q'
  1492. l0cea:
  1493.     inc    hl
  1494.     ld    (hl),'Q'
  1495.     call    in_lin_prnt
  1496. ;
  1497.     db    ' (',0
  1498. ;
  1499. l0cf2:
  1500.     ld    hl,dummy_fname
  1501.     ld    b,8
  1502.     call    l0c6a
  1503.     push    hl
  1504.     ld    a,'.'
  1505.     call    prnt_a_char
  1506.     pop    hl
  1507.     ld    b,3
  1508.     call    l0c6a
  1509.     call    in_lin_prnt
  1510. ;
  1511.     db    ')',0
  1512. ;
  1513.     call    l1773
  1514.     ld    hl,(l2e02)
  1515.     call    l1706
  1516.     ld    hl,new_fil_fcb
  1517.     call    l2798
  1518.     call    l18eb
  1519.     call    l187d
  1520.     call    l1830
  1521.     ret
  1522. l0d24:
  1523.     ld    hl,l30f1
  1524.     call    l0c44
  1525.     or    a
  1526.     jp    z,l0d43
  1527.     call    in_lin_prnt
  1528. ;
  1529.     db    '  Not a Squeeze file.',0
  1530. ;
  1531.     ret
  1532. l0d43:
  1533.     ld    (l2e3e),hl
  1534.     ex    de,hl
  1535.     ld    (l2e42),hl
  1536.     ld    a,(new_user)
  1537.     push    af
  1538.     call    l1dc2
  1539.     pop    af
  1540.     ld    (new_user),a
  1541.     ld    hl,fcb1
  1542.     ld    de,int_fcb
  1543.     ld    (hl),0
  1544.     ld    bc,12
  1545.     ldir
  1546.     call    l1773
  1547.     ld    hl,0
  1548. l0d68:
  1549.     push    hl
  1550.     call    l22dc
  1551.     pop    hl
  1552.     jp    nz,l0d7c
  1553.     ld    e,a
  1554.     ld    d,0
  1555.     add    hl,de
  1556.     push    hl
  1557.     call    l18ce
  1558.     pop    hl
  1559.     jp    l0d68
  1560. l0d7c:
  1561.     ex    de,hl
  1562.     ld    hl,(l2e42)
  1563.     call    cmp_hl_de
  1564.     push    af
  1565.     call    l18eb
  1566.     call    l187d
  1567.     call    l1830
  1568.     pop    af
  1569.     ret    z
  1570.     call    in_lin_prnt
  1571. ;
  1572.     db    cr,lf,'ERROR - Checksum error in file ',0
  1573. ;
  1574.     ret
  1575. l0db5:
  1576.     call    l196e
  1577.     ret    nz
  1578.     push    af
  1579.     call    l196e
  1580.     ld    h,a
  1581.     pop    af
  1582.     ld    l,a
  1583.     cp    a
  1584.     ret
  1585. l0dc2:
  1586.     call    l0db5
  1587.     ret    z
  1588.     call    in_lin_prnt
  1589. ;
  1590.     db    cr,lf,'Premature EOF on file... aborted.',0
  1591. ;
  1592.     jp    disp_fname
  1593.     pop    hl
  1594.     or    a
  1595.     ret
  1596. l0df3:
  1597.     push    hl
  1598.     call    l1830
  1599.     pop    hl
  1600.     jp    l0e01
  1601. l0dfb:
  1602.     call    l1706
  1603.     jp    l0e2a
  1604. l0e01:
  1605.     ld    a,(new_drive)
  1606.     ld    b,a
  1607.     ld    a,(cur_drv)
  1608.     cp    b
  1609.     jp    nz,l0e18
  1610.     ld    a,(l2e3a)
  1611.     ld    b,a
  1612.     ld    a,(new_user)
  1613.     cp    0ffh
  1614.     ret    z
  1615.     cp    b
  1616.     ret    z
  1617. l0e18:
  1618.     call    l1706
  1619.     ld    hl,new_fil_fcb
  1620.     ld    de,int_fcb
  1621.     ld    bc,12
  1622.     ldir
  1623.     xor    a
  1624.     ld    (int_fcb),a
  1625. l0e2a:
  1626.     ld    hl,0
  1627.     ld    (l2e40),hl
  1628.     call    l1773
  1629.     call    bds_sel_dsk
  1630.     ld    hl,(l2e1e)
  1631.     ld    (l2e35),hl
  1632.     ld    a,(mpm_flag)
  1633.     or    a
  1634.     jp    nz,l0e96
  1635. l0e43:
  1636.     push    hl
  1637.     ex    de,hl
  1638.     ld    c,26            ;set file buffer address
  1639.     rst    38h
  1640.     ld    de,new_fil_fcb
  1641.     ld    c,20            ;sequential read
  1642.     rst    38h
  1643.     pop    hl
  1644.     or    a
  1645.     jp    nz,l0e6c
  1646.     ld    de,dma_addr
  1647.     add    hl,de
  1648.     ld    (l2e35),hl
  1649.     ex    de,hl
  1650.     ld    hl,(ram_top_adr)
  1651.     call    cmp_hl_de
  1652.     ex    de,hl
  1653.     call    c,l0fba
  1654.     jp    l0e43
  1655. l0e6c:
  1656.     call    l0fba
  1657.     call    l187d
  1658.     call    l1830
  1659.     call    l0f0c
  1660.     ret
  1661. l0e79:
  1662.     ld    b,7
  1663. l0e7b:
  1664.     xor    a
  1665.     rr    h
  1666.     rr    l
  1667.     djnz    l0e7b
  1668.     ret
  1669. l0e87:
  1670.     add    hl,hl
  1671.     add    hl,hl
  1672.     add    hl,hl
  1673.     add    hl,hl
  1674.     add    hl,hl
  1675.     add    hl,hl
  1676.     add    hl,hl
  1677.     ret
  1678. ;
  1679. ;    mpm record count
  1680. ;
  1681. l0e8f:
  1682.     ld    e,1
  1683.     ld    c,44            ;mpm set record count
  1684.     jp    bdos
  1685. ;
  1686. l0e96:
  1687.     ld    de,(l2e1e)
  1688.     push    de
  1689.     ld    hl,(ram_top_adr)
  1690.     call    l107e
  1691.     call    l0e79
  1692.     pop    de
  1693. l0ea5:
  1694.     push    hl
  1695.     ld    a,h
  1696.     or    a
  1697.     jp    nz,l0eb1
  1698.     ld    a,l
  1699.     cp    80h
  1700.     jp    c,l0eb3
  1701. l0eb1:
  1702.     ld    l,80h
  1703. l0eb3:
  1704.     ld    h,0
  1705.     push    hl
  1706.     push    de
  1707.     ld    e,l
  1708.     ld    c,44            ;mpm set record count
  1709.     rst    38h
  1710.     pop    de
  1711.     push    de
  1712.     ld    c,26            ;set file buffer address
  1713.     rst    38h
  1714.     ld    de,new_fil_fcb
  1715.     ld    c,20            ;sequential read
  1716.     rst    38h
  1717.     or    a
  1718.     jp    nz,l0ef0
  1719.     pop    de
  1720.     pop    hl
  1721.     call    l0e87
  1722.     add    hl,de
  1723.     ld    (l2e35),hl
  1724.     ex    de,hl
  1725.     pop    hl
  1726.     ld    bc,lff80
  1727.     add    hl,bc
  1728.     ld    a,h
  1729.     and    80h
  1730.     jp    nz,l0eea
  1731.     ld    a,h
  1732.     or    l
  1733.     jp    nz,l0ea5
  1734. l0eea:
  1735.     call    l0fba
  1736.     jp    l0e96
  1737. l0ef0:
  1738.     push    af
  1739.     push    hl
  1740.     call    l0e8f
  1741.     pop    hl
  1742.     pop    af
  1743.     cp    0ffh
  1744.     jp    z,disp_fname
  1745.     pop    de
  1746.     ld    l,h
  1747.     ld    h,0
  1748.     call    l0e87
  1749.     add    hl,de
  1750.     ld    (l2e35),hl
  1751.     pop    de
  1752.     pop    hl
  1753.     jp    l0e6c
  1754. l0f0c:
  1755.     ld    a,(verif_flag)
  1756.     or    a
  1757.     ret    z
  1758.     call    in_lin_prnt
  1759. ;
  1760.     db    'Verifying --> ',0
  1761. ;
  1762.     call    l1752
  1763.     ld    hl,l2e7a
  1764.     ld    de,l2e7b
  1765.     ld    bc,21
  1766.     ld    (hl),0
  1767.     ldir
  1768.     ld    de,int_fcb
  1769.     ld    c,15            ;open existing file
  1770.     rst    38h
  1771.     inc    a
  1772.     jp    nz,l0f59
  1773.     call    in_lin_prnt
  1774. ;
  1775.     db    ' Can''t open file!',0
  1776. ;
  1777.     jp    disp_fname
  1778. l0f59:
  1779.     ld    de,dma_addr
  1780.     ld    c,26            ;set file buffer address
  1781.     rst    38h
  1782.     ld    hl,(l2e40)
  1783.     ld    (l2e09),hl
  1784.     ld    hl,0
  1785.     ld    (l2e40),hl
  1786. l0f6d:
  1787.     ld    c,20            ;sequential read
  1788.     ld    de,int_fcb
  1789.     rst    38h
  1790.     or    a
  1791.     jp    nz,l0f85
  1792.     ld    hl,dma_addr
  1793.     ld    de,0100h
  1794.     call    l1f07
  1795.     jp    l0f6d
  1796. l0f85:
  1797.     call    l186d
  1798.     ld    de,(l2e09)
  1799.     ld    hl,(l2e40)
  1800.     call    cmp_hl_de
  1801.     jp    z,l0fad
  1802.     call    in_lin_prnt
  1803. ;
  1804.     db    'CRC verify error!',0
  1805. ;
  1806.     jp    disp_fname
  1807. l0fad:
  1808.     call    in_lin_prnt
  1809. ;
  1810.     db    'file ok.',0
  1811. ;
  1812.     ret
  1813. l0fba:
  1814.     ld    de,(l2e35)
  1815.     ld    hl,(l2e1e)
  1816.     call    cmp_hl_de
  1817.     ret    z
  1818.     call    l1f07
  1819.     call    l1752
  1820.     ld    hl,(l2e1e)
  1821.     ld    a,(mpm_flag)
  1822.     or    a
  1823.     jp    nz,l1002
  1824. l0fd5:
  1825.     push    hl
  1826.     ex    de,hl
  1827.     ld    c,26            ;set file buffer address
  1828.     rst    38h
  1829.     ld    de,int_fcb
  1830.     ld    c,21            ;sequential write
  1831.     rst    38h
  1832.     pop    hl
  1833.     or    a
  1834.     jp    nz,dsk_ful_msg
  1835.     ld    de,dma_addr
  1836.     add    hl,de
  1837.     ld    de,(l2e35)
  1838.     call    cmp_hl_de
  1839.     jp    nz,l0fd5
  1840. l0ff8:
  1841.     call    bds_sel_dsk
  1842.     ld    hl,(l2e1e)
  1843.     ld    (l2e35),hl
  1844.     ret
  1845. l1002:
  1846.     ld    de,(l2e1e)
  1847.     push    de
  1848.     ld    hl,(l2e35)
  1849.     call    l107e
  1850.     call    l0e79
  1851.     pop    de
  1852. l1011:
  1853.     push    hl
  1854.     push    de
  1855.     ld    a,h
  1856.     or    a
  1857.     jp    nz,l101e
  1858.     ld    a,l
  1859.     cp    80h
  1860.     jp    c,l1020
  1861. l101e:
  1862.     ld    l,80h
  1863. l1020:
  1864.     ld    e,l
  1865.     ld    c,44        ;mpm set record count
  1866.     rst    38h
  1867.     pop    de
  1868.     push    de
  1869.     ld    c,26        ;set file buffer address
  1870.     rst    38h
  1871.     ld    de,int_fcb
  1872.     ld    c,21        ;sequential write
  1873.     rst    38h
  1874.     or    a
  1875.     jp    nz,l1056
  1876.     pop    de
  1877.     pop    hl
  1878.     ex    de,hl
  1879.     ld    bc,l4000
  1880.     add    hl,bc
  1881.     ex    de,hl
  1882.     ld    bc,lff80
  1883.     add    hl,bc
  1884.     ld    a,h
  1885.     and    80h
  1886.     jp    nz,l1050
  1887.     ld    a,h
  1888.     or    l
  1889.     jp    nz,l1011
  1890. l1050:
  1891.     call    l0e8f
  1892.     jp    l0ff8
  1893. l1056:
  1894.     call    l0e8f
  1895.  
  1896. dsk_ful_msg:
  1897.     call    in_lin_prnt
  1898. ;
  1899.     db    cr,lf,'Destination disk full.',0
  1900. ;
  1901.     call    l1830
  1902.     call    l1857
  1903.     jp    disp_fname
  1904. l107e:
  1905.     ld    a,l
  1906.     sub    e
  1907.     ld    l,a
  1908.     ld    a,h
  1909.     sbc    a,d
  1910.     ld    h,a
  1911.     ret
  1912. ;
  1913. ;    ################### FIND A FILE ###########################
  1914. ;
  1915. find:
  1916.     call    in_lin_prnt
  1917. ;
  1918.     db    '  Find what ? ',0
  1919. ;
  1920.     call    get_chr_strg
  1921.     ld    hl,cmd_strg_dat
  1922.     ld    (l2e3e),hl
  1923.     call    l1dc2
  1924.     ld    hl,fcb1+1
  1925.     ld    a,(hl)
  1926.     cp    ' '
  1927.     jp    z,disp_fname
  1928.     ld    b,0bh
  1929. l10ad:
  1930.     ld    a,(hl)
  1931.     cp    ' '
  1932.     jp    nz,l10b5
  1933.     ld    (hl),'?'
  1934. l10b5:
  1935.     inc    hl
  1936.     djnz    l10ad
  1937.     call    in_lin_prnt
  1938. ;
  1939.     db    cr,lf,0
  1940. ;
  1941.     ld    hl,0ffffh
  1942.     call    l112f
  1943.     jp    nz,disp_fname
  1944.     ld    (fil_cntr),hl
  1945.     jp    disp_fname
  1946. ;
  1947. ;    ##################### WILDCARD FUNCTION ####################
  1948. ;
  1949. wildcard:
  1950.     call    in_lin_prnt
  1951. ;
  1952.     db    '  Tag what? ',0
  1953. ;
  1954.     call    get_chr_strg
  1955.     ld    hl,cmd_strg_dat
  1956.     ld    (l2e3e),hl
  1957.     call    l1dc2
  1958.     ld    hl,fcb1+1
  1959.     ld    a,(hl)
  1960.     cp    ' '
  1961.     jp    z,disp_fname
  1962.     call    in_lin_prnt
  1963. ;
  1964.     db    cr,lf,0
  1965. ;
  1966.     ld    hl,0ffffh
  1967. l10fd:
  1968.     call    l112f
  1969.     jp    nz,disp_fname
  1970.     push    hl
  1971.     call    in_lin_prnt
  1972. ;
  1973.     db    cr,lf,'Tagging --> ',0
  1974. ;
  1975.     pop    hl
  1976.     push    hl
  1977.     call    get_nxt_fcb
  1978.     push    hl
  1979.     call    l151a
  1980.     ld    a,' '
  1981.     call    prnt_a_char
  1982.     pop    hl
  1983.     call    inc_hl_12
  1984.     call    sum_tagd_siz
  1985.     pop    hl
  1986.     jp    l10fd
  1987. l112f:
  1988.     inc    hl
  1989.     ex    de,hl
  1990.     ld    hl,(total_files)
  1991.     call    cmp_hl_de
  1992.     jp    c,l114a
  1993.     ex    de,hl
  1994.     push    hl
  1995.     call    get_nxt_fcb
  1996.     ld    de,fcb1+1
  1997.     call    l114e
  1998.     pop    hl
  1999.     ret    z
  2000.     jp    l112f
  2001. l114a:
  2002.     ld    a,1
  2003.     or    a
  2004.     ret
  2005. l114e:
  2006.     ld    b,0bh
  2007.     ex    de,hl
  2008. l1151:
  2009.     ld    a,(hl)
  2010.     cp    '?'
  2011.     jp    z,l115c
  2012.     ld    a,(de)
  2013.     and    7fh
  2014.     cp    (hl)
  2015.     ret    nz
  2016. l115c:
  2017.     inc    hl
  2018.     inc    de
  2019.     djnz    l1151
  2020.     ret
  2021. ;
  2022. ;    #################### RENAME FUNCTION ########################
  2023. ;
  2024. rename:
  2025.     ld    hl,(fil_cntr)
  2026.     call    get_nxt_fcb
  2027.     ld    de,11
  2028.     add    hl,de
  2029.     ld    a,(hl)
  2030.     ld    (l2e3a),a
  2031.     call    in_lin_prnt
  2032. ;
  2033.     db    '  New name, or *? ',0
  2034. ;
  2035.     call    get_chr_strg
  2036.     ld    hl,cmd_strg_dat
  2037.     ld    (l2e3e),hl
  2038.     ld    hl,fcb2
  2039.     push    hl
  2040.     call    l1dd5
  2041.     pop    hl
  2042.     inc    hl
  2043.     ld    a,(hl)
  2044.     cp    ' '
  2045.     jp    z,disp_fname
  2046.     ld    b,11
  2047. l11a1:
  2048.     cp    '?'
  2049.     jp    z,l13f6
  2050.     inc    hl
  2051.     djnz    l11a1
  2052.     ld    a,(new_user)
  2053.     cp    0ffh
  2054.     jp    nz,l11b6
  2055.     ld    a,(l2e3a)
  2056. l11b6:
  2057.     ld    (hl),a
  2058.     ld    hl,(fil_cntr)
  2059.     call    get_nxt_fcb
  2060.     call    l11f9
  2061.     cp    '.'
  2062.     jp    nz,l11cd
  2063.     ld    c,13        ;reset all drives
  2064.     rst    38h
  2065.     call    l1d72
  2066. l11cd:
  2067.     ld    hl,(fil_cntr)
  2068.     push    hl
  2069.     ld    hl,(total_files)
  2070.     inc    hl
  2071.     ld    (total_files),hl
  2072.     call    l1a65
  2073.     call    l1b32
  2074.     ld    de,(l2e16)
  2075.     dec    de
  2076.     ld    (total_files),de
  2077.     pop    hl
  2078.     ld    (fil_cntr),hl
  2079.     call    cmp_hl_de
  2080.     jp    c,disp_fname
  2081.     ld    hl,0
  2082.     ld    (fil_cntr),hl
  2083.     jp    disp_fname
  2084.  
  2085. l11f9:
  2086.     push    hl
  2087.     ld    a,(cur_drv)
  2088.     ld    (new_drive),a
  2089.     ld    de,fcb1
  2090.     xor    a
  2091.     ld    (fcb1),a
  2092.     inc    de
  2093.     ld    bc,0bh
  2094.     ldir
  2095.     ld    b,4
  2096.     xor    a
  2097. l1210:
  2098.     ld    (de),a
  2099.     inc    de
  2100.     djnz    l1210
  2101.     call    bds_sel_dsk
  2102.     ld    a,(operand_1)
  2103.     and    80h
  2104.     jp    z,l1239
  2105.     ld    a,(operand_1)
  2106.     and    7fh
  2107.     ld    (operand_1),a
  2108.     ld    a,(operand_2)
  2109.     and    7fh
  2110.     ld    (operand_2),a
  2111.     ld    de,fcb1
  2112.     ld    c,30            ;set file attributes
  2113.     rst    38h
  2114. l1239:
  2115.     ld    a,(new_user)
  2116.     cp    0ffh
  2117.     ld    e,a
  2118.     ld    a,(l2e3a)
  2119.     jp    nz,l1246
  2120.     ld    e,a
  2121. l1246:
  2122.     call    l175f
  2123.     ld    hl,fcb2+1
  2124.     ld    de,new_fil_nam
  2125.     ld    bc,11
  2126.     ldir
  2127.     xor    a
  2128.     ld    (new_fil_fcb),a
  2129.     call    l16f9
  2130.     ld    de,new_fil_fcb
  2131.     ld    hl,(l2e1e)
  2132.     call    l138a
  2133.     ld    a,l
  2134.     or    h
  2135.     jp    z,l1292
  2136.     call    in_lin_prnt
  2137. ;
  2138.     db    cr,lf,'Destination file exists!',0
  2139. ;
  2140.     ld    c,13            ;reset all drives
  2141.     rst    38h
  2142.     call    l1d72
  2143.     jp    disp_fname
  2144. l1292:
  2145.     ld    a,(new_user)
  2146.     cp    0ffh
  2147.     jp    z,l12a2
  2148.     ld    b,a
  2149.     ld    a,(l2e3a)
  2150.     cp    b
  2151.     jp    nz,l12ca
  2152. l12a2:
  2153.     ld    a,(l2e3a)
  2154.     ld    e,a
  2155.     call    l175f
  2156.     ld    e,0ffh
  2157.     call    l175f
  2158.     push    af
  2159.     ld    de,fcb1
  2160.     ld    c,23            ;rename file
  2161.     rst    38h
  2162.     pop    af
  2163.     ld    e,a
  2164.     call    l175f
  2165.     xor    a
  2166. l12bd:
  2167.     pop    de
  2168.     push    af
  2169.     ld    hl,fcb2+1
  2170.     ld    bc,12
  2171.     ldir
  2172.     pop    af
  2173.     cp    a
  2174.     ret
  2175. l12ca:
  2176.     ld    a,(l2e3a)
  2177.     ld    e,a
  2178.     call    l175f
  2179.     ld    hl,fcb1
  2180.     ld    de,new_fil_fcb
  2181.     ld    bc,0ch
  2182.     ldir
  2183.     call    l16f9
  2184.     xor    a
  2185.     ld    (new_fil_fcb),a
  2186.     ld    a,'?'
  2187.     ld    (l2e54),a
  2188.     ld    hl,(l2e1e)
  2189.     ld    de,new_fil_fcb
  2190.     call    l138a
  2191.     ld    a,l
  2192.     or    h
  2193.     jp    z,l12bd
  2194.     ld    (l2e09),hl
  2195.     call    l16f9
  2196.     ld    de,new_fil_fcb
  2197.     ld    c,19            ;delete file
  2198.     rst    38h
  2199.     call    l1752
  2200.     ld    hl,fcb2+1
  2201.     ld    de,new_fil_nam
  2202.     ld    bc,11
  2203.     ldir
  2204.     call    l16f9
  2205.     ld    de,new_fil_fcb
  2206.     ld    c,19            ;delete file
  2207.     rst    38h
  2208.     ld    hl,0
  2209. l1320:
  2210.     push    hl
  2211.     add    hl,hl
  2212.     add    hl,hl
  2213.     add    hl,hl
  2214.     add    hl,hl
  2215.     add    hl,hl
  2216.     ex    de,hl
  2217.     ld    hl,(l2e1e)
  2218.     add    hl,de
  2219.     ld    de,12
  2220.     add    hl,de
  2221.     push    hl
  2222.     ld    de,l2e54
  2223.     ld    bc,4
  2224.     ldir
  2225.     ld    c,22            ;make new file
  2226.     ld    de,new_fil_fcb
  2227.     rst    38h
  2228.     inc    a
  2229.     jp    z,dir_ful_msg
  2230.     pop    hl
  2231.     ld    de,l2e54
  2232.     ld    bc,14h
  2233.     ldir
  2234.     ld    a,(l2e56)
  2235.     and    7fh
  2236.     ld    (l2e56),a
  2237.     ld    c,16            ;close output file
  2238.     ld    de,new_fil_fcb
  2239.     rst    38h
  2240.     ld    hl,(l2e09)
  2241.     dec    hl
  2242.     ld    (l2e09),hl
  2243.     ld    a,l
  2244.     or    h
  2245.     pop    hl
  2246.     inc    hl
  2247.     jp    nz,l1320
  2248.     ld    a,'.'
  2249.     jp    l12bd
  2250. ;
  2251. dir_ful_msg:
  2252.     call    in_lin_prnt
  2253. ;
  2254.     db    cr,lf,cr,lf,'Directory full.',0
  2255. ;
  2256.     jp    disp_fname
  2257. l138a:
  2258.     push    hl
  2259.     push    de
  2260.     ld    c,26            ;set file buffer address
  2261.     ld    de,dma_addr
  2262.     rst    38h
  2263.     pop    de
  2264.     push    de
  2265.     ld    c,17            ;search for first file
  2266.     rst    38h
  2267.     inc    a
  2268.     pop    de
  2269.     pop    hl
  2270.     ld    bc,0
  2271.     jp    nz,l13a8
  2272.     ld    hl,0
  2273.     ret
  2274. l13a8:
  2275.     push    de
  2276.     push    bc
  2277.     push    hl
  2278.     dec    a
  2279.     add    a,a
  2280.     add    a,a
  2281.     add    a,a
  2282.     add    a,a
  2283.     add    a,a
  2284.     ld    hl,dma_addr
  2285.     add    a,l
  2286.     ld    l,a
  2287.     pop    de
  2288.     ld    bc,' '
  2289.     ldir
  2290.     push    de
  2291.     inc    d
  2292.     ld    hl,(ram_top_adr)
  2293.     call    cmp_hl_de
  2294.     jp    nc,l13de
  2295.     call    in_lin_prnt
  2296. ;
  2297.     db    cr,lf,bell,bell,'OUT OF MEMORY?',0
  2298. ;
  2299.     jp    0
  2300. l13de:
  2301.     pop    de
  2302.     push    de
  2303.     pop    hl
  2304.     pop    bc
  2305.     inc    bc
  2306.     pop    de
  2307.     push    de
  2308.     push    bc
  2309.     push    hl
  2310.     ld    c,18            ;search for next file
  2311.     rst    38h
  2312.     inc    a
  2313.     pop    hl
  2314.     pop    bc
  2315.     pop    de
  2316.     jp    nz,l13a8
  2317.     ld    l,c
  2318.     ld    h,b
  2319.     ret
  2320. l13f6:
  2321.     call    in_lin_prnt
  2322. ;
  2323.     db    cr,lf,cr,lf,'Old name? ',0
  2324. ;
  2325.     call    get_chr_strg
  2326.     ld    hl,cmd_strg_dat
  2327.     ld    (l2e3e),hl
  2328.     ld    hl,l2e94
  2329.     call    l1dd5
  2330.     ld    a,(l2e95)
  2331.     cp    ' '
  2332.     jp    z,disp_fname
  2333.     ld    a,(new_user)
  2334.     ld    (tag_utag_flg),a
  2335.     call    in_lin_prnt
  2336. ;
  2337.     db    cr,lf,'New name? ',0
  2338. ;
  2339.     call    get_chr_strg
  2340.     ld    hl,cmd_strg_dat
  2341.     ld    (l2e3e),hl
  2342.     ld    hl,int_fcb
  2343.     call    l1dd5
  2344.     ld    a,(dummy_fname)
  2345.     cp    ' '
  2346.     jp    z,disp_fname
  2347.     call    cr_lf
  2348.     ld    hl,0
  2349. l1452:
  2350.     push    hl
  2351.     call    get_nxt_fcb
  2352.     push    hl
  2353.     ld    de,l2e95
  2354.     call    l14c5
  2355.     jp    nz,l14a2
  2356.     call    in_lin_prnt
  2357. ;
  2358.     db    cr,lf,'Renaming --> ',0
  2359. ;
  2360.     pop    hl
  2361.     push    hl
  2362.     call    l151a
  2363.     pop    hl
  2364.     push    hl
  2365.     ld    de,0bh
  2366.     add    hl,de
  2367.     ld    a,(hl)
  2368.     ld    (l2e3a),a
  2369.     call    in_lin_prnt
  2370. ;
  2371.     db    ' to ',0
  2372. ;    
  2373. l148a:
  2374.     pop    hl
  2375.     push    hl
  2376.     call    l14f2
  2377.     ld    hl,fcb2+1
  2378.     call    l151a
  2379.     pop    hl
  2380.     call    l11f9
  2381.     ld    b,a
  2382.     ld    a,(l14b4)
  2383.     or    b
  2384.     ld    (l14b4),a
  2385.     push    hl
  2386. l14a2:
  2387.     pop    hl
  2388.     pop    de
  2389.     inc    de
  2390.     ld    hl,(total_files)
  2391.     call    cmp_hl_de
  2392.     ex    de,hl
  2393.     jp    nc,l1452
  2394.     call    cr_lf
  2395.  
  2396. l14b4    equ    $+1
  2397.  
  2398.     ld    a,0
  2399.     cp    '.'
  2400.     jp    nz,l11cd
  2401.     ld    c,13            ;reset all drives
  2402.     rst    38h
  2403.     call    l1d72
  2404.     jp    l11cd
  2405. l14c5:
  2406.     ld    a,(hl)
  2407.     cp    0e5h
  2408.     jp    z,l14ef
  2409.     push    hl
  2410.     ld    bc,0bh
  2411.     add    hl,bc
  2412.     ld    b,(hl)
  2413.     pop    hl
  2414.     ld    a,(tag_utag_flg)
  2415.     cp    0ffh
  2416.     jp    z,l14dc
  2417.     cp    b
  2418.     ret    nz
  2419. l14dc:
  2420.     ld    a,(de)
  2421.     cp    '?'
  2422.     jp    z,l14e8
  2423.     ld    b,a
  2424.     ld    a,7fh
  2425.     and    (hl)
  2426.     cp    b
  2427.     ret    nz
  2428. l14e8:
  2429.     inc    hl
  2430.     inc    de
  2431.     dec    c
  2432.     jp    nz,l14dc
  2433.     ret
  2434. l14ef:
  2435.     xor    a
  2436.     cpl
  2437.     ret
  2438. l14f2:
  2439.     ld    de,dummy_fname
  2440.     ld    bc,fcb2+1
  2441.     ld    a,0bh
  2442. l14fa:
  2443.     push    af
  2444. l14fb:
  2445.     ld    a,(de)
  2446.     cp    '?'
  2447.     jp    nz,l1504
  2448.     ld    a,(hl)
  2449.     and    7fh
  2450. l1504:
  2451.     ld    (bc),a
  2452.     inc    hl
  2453.     inc    de
  2454.     inc    bc
  2455.     pop    af
  2456.     dec    a
  2457.     jp    nz,l14fa
  2458.     ld    a,(new_user)
  2459.     cp    0ffh
  2460.     jp    nz,l1518
  2461.     ld    a,(l2e3a)
  2462. l1518:
  2463.     ld    (bc),a
  2464.     ret
  2465. l151a:
  2466.     push    hl
  2467.     ld    a,(cur_drv)
  2468.     add    a,'A'
  2469.     call    prnt_a_char
  2470.     pop    hl
  2471.     push    hl
  2472.     ld    de,0bh
  2473.     add    hl,de
  2474.     ld    l,(hl)
  2475.     ld    h,0
  2476.     ld    a,l
  2477.     cp    lf
  2478.     ld    c,1
  2479.     jp    c,l1535
  2480.     inc    c
  2481. l1535:
  2482.     push    bc
  2483.     call    pnt_hl_in_dec
  2484.     ld    a,':'
  2485.     call    prnt_a_char
  2486.     pop    bc
  2487.     ld    a,c
  2488.     cp    2
  2489.     jp    z,l154a
  2490.     ld    a,' '
  2491.     call    prnt_a_char
  2492. l154a:
  2493.     ld    b,8
  2494.     pop    hl
  2495.     call    l15a7
  2496.     push    hl
  2497.     ld    a,'.'
  2498.     call    prnt_a_char
  2499.     pop    hl
  2500.     ld    b,3
  2501.     call    l15a7
  2502.     ret
  2503. l155d:
  2504.     pop    de
  2505.     pop    hl
  2506.     push    de
  2507.     push    hl
  2508.     jp    l154a
  2509. l1564:
  2510.     push    hl
  2511.     ld    hl,(fil_cntr)
  2512.     inc    hl
  2513.     ld    c,4
  2514.     call    pnt_hl_in_dec
  2515.     call    in_lin_prnt
  2516. ;
  2517.     db    '. ',0
  2518. ;
  2519.     pop    hl
  2520.     call    l151a
  2521.     inc    hl
  2522.     ld    a,(hl)
  2523.     push    af
  2524.     inc    hl
  2525.     push    hl
  2526.     ld    a,' '
  2527.     call    prnt_a_char
  2528.     pop    hl
  2529.     call    l1cec
  2530.     ld    c,4
  2531.     call    pnt_hl_in_dec
  2532.     call    in_lin_prnt
  2533. ;
  2534.     db    'K :',0
  2535. ;
  2536.     pop    af
  2537.     or    a
  2538.     ld    c,' '
  2539.     jp    z,l15a2
  2540.     cp    1
  2541.     ld    c,'*'
  2542.     jp    z,l15a2
  2543.     ld    c,'#'
  2544. l15a2:
  2545.     ld    a,c
  2546.     call    prnt_a_char
  2547.     ret
  2548. l15a7:
  2549.     push    bc
  2550.     push    hl
  2551.     ld    a,(hl)
  2552.     call    prnt_a_char
  2553.     pop    hl
  2554.     pop    bc
  2555.     dec    b
  2556.     inc    hl
  2557.     jp    nz,l15a7
  2558.     ret
  2559. ;
  2560. ;    ############### SEND A FILE TO PRINTER ##############
  2561. print:
  2562.     call    cr_lf
  2563.     ld    a,5
  2564.     ld    (l2e3d),a
  2565.     jp    l1610
  2566.  
  2567. ;    ############### VIEW A FILE ON THE CONSOLE ##########
  2568.  
  2569. view:
  2570.     call    cr_lf
  2571.     xor    a
  2572.     ld    (l2e3d),a
  2573.     inc    a
  2574.     ld    (lin_cntr),a
  2575. l15cb:
  2576.     ld    hl,cls_str
  2577.     call    pnt_2_zero
  2578.     call    in_lin_prnt
  2579. ;
  2580.     db    'Press X to abort, SP to advance a line, CR to advance a page.'
  2581.     db    cr,lf,0
  2582. ;
  2583.     ld    a,2
  2584. l1610:
  2585.     ld    (bdos_func),a
  2586.     ld    hl,(fil_cntr)
  2587.     call    get_nxt_fcb
  2588.     call    l1706            ;open the wanted file
  2589.     call    l0dc2            ;read the file
  2590.     ld    de,lff76
  2591.     call    cmp_hl_de
  2592.     ld    hl,l196e
  2593.     jp    nz,l1644
  2594.     ld    hl,(l2e1e)
  2595.     ld    (l2e22),hl
  2596.     ld    hl,l30f1
  2597.     call    l0c44            ;check if squeezed
  2598.     or    a
  2599.     jp    nz,l1644
  2600.     call    cr_lf
  2601.     ld    hl,l22dc
  2602.     jp    l164c
  2603. l1644:
  2604.     push    hl
  2605.     ld    hl,(l2e1e)
  2606.     ld    (l2e22),hl
  2607.     pop    hl
  2608. l164c:
  2609.     ld    (l1662),hl
  2610. l164f:
  2611.     call    dir_cons_ip
  2612.     and    05fh
  2613.     cp    'X'
  2614.     jp    z,end_view
  2615.     cp    3
  2616.     jp    z,end_view
  2617.     cp    13h
  2618.     jp    z,new_vw_page
  2619. l1662    equ    $+1
  2620.     call    l196e
  2621.     jp    nz,end_view
  2622.     cp    1ah
  2623.     jp    z,end_view
  2624.     and    7fh
  2625.     cp    1fh
  2626.     jp    nz,l1675
  2627.     ld    a,'-'
  2628. l1675:
  2629.     ld    e,a
  2630.     cp    cr
  2631.     jp    nz,l1682
  2632.     ld    a,(lin_cntr)
  2633.     inc    a
  2634.     ld    (lin_cntr),a
  2635. l1682:
  2636.     cp    tab
  2637.     jr    nz,l1682a
  2638.     ld    a,(bdos_func)
  2639.     cp    5
  2640.     jr    nz,l1682a
  2641.     ld    b,7
  2642.     ld    c,5
  2643.     ld    e,' '
  2644. l1682b:
  2645.     push    bc
  2646.     push    de
  2647.     rst    38h
  2648.     pop    de
  2649.     pop    bc
  2650.     djnz    l1682b
  2651. l1682a:
  2652.     ld    a,(bdos_func)
  2653.     ld    c,a
  2654.     rst    38h
  2655.     ld    a,(l2e3d)
  2656.     or    a
  2657.     jp    nz,l164f
  2658.     ld    a,(lin_cntr)
  2659.     ld    b,a
  2660.     ld    a,(nlines)
  2661.     cp    b
  2662.     jp    nz,l164f
  2663.     call    l16de
  2664.     cp    ' '            ;check if a Space first
  2665.     jp    z,dn_1_line
  2666.     and    05fh            ;convert other i/p to upper
  2667.     cp    'X'
  2668.     jp    z,end_view
  2669.     cp    3
  2670.     jp    z,end_view
  2671.     xor    a
  2672.     ld    (lin_cntr),a
  2673.     jp    l164f
  2674. dn_1_line:
  2675.     ld    a,(lin_cntr)
  2676.     dec    a
  2677.     ld    (lin_cntr),a
  2678.     jp    l164f
  2679. end_view:
  2680.     call    l1830
  2681.     jp    disp_fname
  2682. new_vw_page:
  2683.     call    l16de
  2684.     jp    l164f
  2685. cons_status:
  2686.     ld    c,11            ;console status check
  2687.     rst    38h
  2688.     or    a
  2689.     ret    z
  2690. get_key:
  2691.     ld    c,1            ;console input byte
  2692.     rst    38h
  2693.     jp    l1d69
  2694. l16de:
  2695. loop1:    call    dir_cons_ip
  2696.     or    a
  2697.     jp    z,loop1
  2698.     ret
  2699. l16e6:
  2700.     call    cons_status
  2701.     cp    3
  2702.     ret    z
  2703.     call    l1d69
  2704.     cp    'X'
  2705.     ret
  2706. dir_cons_ip:
  2707.     ld    e,0ffh
  2708.     ld    c,6            ;direct console i/o
  2709.     jp    bdos
  2710. l16f9:
  2711.     ld    hl,l2e54
  2712.     ld    de,l2e55
  2713.     ld    bc,20
  2714.     ld    (hl),0
  2715.     ldir
  2716.     ret
  2717.  
  2718. l1706:
  2719.     ld    de,new_fil_fcb
  2720.     xor    a
  2721.     ld    (new_fil_fcb),a
  2722.     inc    de
  2723.     ld    bc,11
  2724.     ldir
  2725.     ld    a,(hl)
  2726.     push    af
  2727.     call    l16f9
  2728.     pop    af
  2729.     ld    (l2e3a),a
  2730.     call    bds_sel_dsk
  2731.     ld    hl,(l2e1e)
  2732.     ld    (l2e22),hl
  2733.     ld    (l2e20),hl
  2734.     ld    de,new_fil_fcb
  2735.     ld    c,15            ;open file
  2736.     rst    38h
  2737.     inc    a
  2738.     ret    nz
  2739.     call    in_lin_prnt
  2740. ;
  2741.     db    cr,lf,'Can''t open file!',0
  2742. ;
  2743.     jp    disp_fname
  2744.     ld    e,0ffh
  2745.     call    l175f
  2746.     ld    e,a
  2747.     ret
  2748. l1752:
  2749.     ld    a,(new_drive)
  2750.     ld    e,a
  2751.     ld    c,14            ;select drive
  2752.     rst    38h
  2753.     ld    a,(new_user)
  2754. l175e:
  2755.     ld    e,a
  2756. l175f:
  2757.     ld    c,32            ;get/set user code
  2758.     jp    bdos
  2759. bds_sel_dsk:
  2760.     ld    a,(cur_drv)
  2761.     ld    e,a
  2762.     ld    c,14            ;select drive
  2763.     rst    38h
  2764.     ld    a,(l2e3a)
  2765.     jp    l175e
  2766. l1773:
  2767.     ld    hl,(l2e1e)
  2768.     ld    de,1400h
  2769.     add    hl,de
  2770.     ld    (l2e26),hl
  2771.     ld    (l2e24),hl
  2772.     ld    de,1000h
  2773.     add    hl,de
  2774.     ld    (l2e28),hl
  2775.     call    l1752
  2776.     call    l1822
  2777.     ld    de,int_fcb
  2778.     push    de
  2779.     ld    c,15            ;open file
  2780.     rst    38h
  2781.     inc    a
  2782.     jp    z,l17c2
  2783.     pop    de
  2784.     push    de
  2785.     ld    c,16            ;close file
  2786.     rst    38h
  2787.     ld    a,(ext_1)
  2788.     and    80h
  2789.     jp    z,l17bb
  2790.     ld    a,(ext_1)
  2791.     and    7fh
  2792.     ld    (ext_1),a
  2793.     call    l1822
  2794.     pop    de
  2795.     push    de
  2796.     ld    c,30            ;set file attributes
  2797.     rst    38h
  2798. l17bb:
  2799.     pop    de
  2800.     push    de
  2801.     ld    c,19            ;delete file
  2802.     rst    38h
  2803. l17c2:
  2804.     ld    hl,ext_1
  2805.     push    hl
  2806.     ld    de,l2e45
  2807.     ld    bc,3
  2808.     ldir
  2809.     pop    hl
  2810.     ld    (hl),'$'
  2811.     inc    hl
  2812.     ld    (hl),'$'
  2813.     inc    hl
  2814.     ld    (hl),'$'
  2815.     pop    de
  2816.     push    de
  2817.     ld    c,8
  2818. l17db:
  2819.     ld    a,(de)
  2820.     and    7fh
  2821.     ld    (de),a
  2822.     inc    de
  2823.     dec    c
  2824.     jp    nz,l17db
  2825.     call    l1822
  2826.     pop    de
  2827.     push    de
  2828.     ld    c,19            ;delete file
  2829.     rst    38h
  2830.     call    l1822
  2831.     pop    de
  2832.     ld    c,22            ;make new file
  2833.     rst    38h
  2834.     inc    a
  2835.     ret    nz
  2836.     call    in_lin_prnt
  2837. ;
  2838.     db    cr,lf,'Destination disk directory full.',0
  2839. ;
  2840.     jp    disp_fname
  2841. l1822:
  2842.     ld    hl,l2e7a
  2843.     ld    de,l2e7b
  2844.     ld    bc,16h
  2845.     ld    (hl),0
  2846.     ldir
  2847.     ret
  2848. l1830:
  2849.     call    bds_sel_dsk
  2850.     ld    de,new_fil_fcb
  2851.     ld    c,16            ;close output file
  2852.     rst    38h
  2853.     inc    a
  2854.     ret    nz
  2855. l183d:
  2856.     call    in_lin_prnt
  2857. ;
  2858.     db    cr,lf,'Can''t close file!',0
  2859. ;
  2860.     jp    disp_fname
  2861. l1857:
  2862.     call    l1752
  2863.     ld    de,int_fcb
  2864.     push    de
  2865.     ld    c,16            ;close output file
  2866.     rst    38h
  2867.     call    l1822
  2868.     pop    de
  2869.     ld    c,19            ;delete file
  2870.     rst    38h
  2871.     ret
  2872. l186d:
  2873.     call    l1752
  2874.     ld    de,int_fcb
  2875.     ld    c,16            ;close output file
  2876.     rst    38h
  2877.     inc    a
  2878.     jp    z,l183d
  2879.     ret
  2880. l187d:
  2881.     call    l186d
  2882.     call    l1822
  2883.     ld    hl,int_fcb
  2884.     ld    de,l2e7e
  2885.     ld    bc,10h
  2886.     ldir
  2887.     ld    hl,l2e45
  2888.     ld    de,l2e87
  2889.     ld    bc,3
  2890.     ldir
  2891.     ld    de,int_fcb
  2892.     ld    c,23            ;rename file
  2893.     rst    38h
  2894.     inc    a
  2895.     jp    z,l183d
  2896.     ld    hl,l2e45
  2897.     ld    de,ext_1
  2898.     ld    bc,3
  2899.     ldir
  2900.     ld    a,(l2e51)
  2901.     and    80h
  2902.     ld    b,a
  2903.     ld    a,(ext_1)
  2904.     or    b
  2905.     ld    (ext_1),a
  2906.     ld    a,(ext_3)
  2907.     and    7fh
  2908.     ld    (ext_3),a
  2909.     ld    de,int_fcb
  2910.     ld    c,30            ;set file attributes
  2911.     rst    38h
  2912.     ret
  2913. l18ce:
  2914.     ld    de,(l2e28)
  2915.     ld    hl,(l2e24)
  2916.     ld    b,a
  2917.     call    cmp_hl_de
  2918.     ld    a,b
  2919.     jp    z,l18e3
  2920.     ld    (hl),a
  2921.     inc    hl
  2922.     ld    (l2e24),hl
  2923.     ret
  2924. l18e3:
  2925.     push    af
  2926.     call    l18eb
  2927.     pop    af
  2928.     jp    l18ce
  2929. l18eb:
  2930.     ld    de,(l2e24)
  2931.     ld    hl,(l2e26)
  2932.     call    cmp_hl_de
  2933.     ret    z
  2934.     push    hl
  2935.     call    l1752
  2936.     pop    hl
  2937.     ld    a,(mpm_flag)
  2938.     or    a
  2939.     jp    nz,l192c
  2940. l1902:
  2941.     push    hl
  2942.     ex    de,hl
  2943.     ld    c,26            ;set file buffer address
  2944.     rst    38h
  2945.     ld    de,int_fcb
  2946.     ld    c,21            ;sequential write
  2947.     rst    38h
  2948.     or    a
  2949.     jp    nz,dsk_ful_msg
  2950.     pop    hl
  2951.     ld    de,dma_addr
  2952.     add    hl,de
  2953.     ld    de,(l2e24)
  2954.     call    cmp_hl_de
  2955.     jp    c,l1902
  2956. l1925:
  2957.     ld    hl,(l2e26)
  2958.     ld    (l2e24),hl
  2959.     ret
  2960. l192c:
  2961.     ld    de,(l2e26)
  2962.     push    de
  2963.     ld    hl,(l2e24)
  2964.     call    l107e
  2965.     ld    a,l
  2966.     and    7fh
  2967.     push    af
  2968.     call    l0e79
  2969.     pop    af
  2970.     jp    z,l1943
  2971.     inc    hl
  2972. l1943:
  2973.     ld    a,h
  2974.     or    a
  2975.     jp    nz,l194e
  2976.     ld    a,l
  2977.     cp    80h
  2978.     jp    c,l1950
  2979. l194e:
  2980.     ld    l,80h
  2981. ;        mpm-2 function
  2982. l1950:
  2983.     ld    e,l
  2984.     ld    c,44            ;set record count
  2985.     rst    38h
  2986.     pop    de
  2987.     ld    c,26            ;set file buffer address
  2988.     rst    38h
  2989.     ld    de,int_fcb
  2990.     ld    c,21            ;sequential write
  2991.     rst    38h
  2992.     or    a
  2993.     jp    nz,l1056
  2994.     call    l0e8f
  2995.     jp    l1925
  2996. l196e:
  2997.     ld    de,(l2e20)
  2998.     ld    hl,(l2e22)
  2999.     call    cmp_hl_de
  3000.     jp    z,l1982
  3001.     ld    a,(hl)
  3002.     inc    hl
  3003.     ld    (l2e22),hl
  3004.     cp    a
  3005.     ret
  3006. l1982:
  3007.     call    bds_sel_dsk
  3008.     ld    hl,(l2e1e)
  3009.     ld    (l2e22),hl
  3010.     ld    (l2e20),hl
  3011.     ld    b,' '
  3012.     ld    a,(mpm_flag)
  3013.     or    a
  3014.     jp    nz,l19cc
  3015. l1997:
  3016.     push    bc
  3017.     ex    de,hl
  3018.     ld    c,26            ;set file buffer address
  3019.     rst    38h
  3020.     ld    de,new_fil_fcb
  3021.     ld    c,20            ;sequential read
  3022.     rst    38h
  3023.     pop    bc
  3024.     or    a
  3025.     jp    nz,l19bc
  3026.     ld    hl,(l2e20)
  3027.     ld    de,dma_addr
  3028.     add    hl,de
  3029.     ld    (l2e20),hl
  3030.     djnz    l1997
  3031.     jp    l196e
  3032. l19bc:
  3033.     ld    de,(l2e22)
  3034.     ld    hl,(l2e20)
  3035.     call    cmp_hl_de
  3036.     jp    nz,l196e
  3037.     xor    a
  3038.     dec    a
  3039.     ret
  3040. ;        mpm-2 function
  3041. l19cc:
  3042.     ld    e,20h
  3043.     ld    c,44            ;set record count
  3044.     rst    38h
  3045.     ld    hl,(l2e22)
  3046.     ex    de,hl
  3047.     ld    c,26            ;set file buffer address
  3048.     rst    38h
  3049.     ld    de,new_fil_fcb
  3050.     ld    c,20            ;sequential read
  3051.     rst    38h
  3052.     or    a
  3053.     jp    nz,l19f8
  3054.     call    l0e8f
  3055.     ld    hl,(l2e22)
  3056.     ld    de,1000h
  3057.     add    hl,de
  3058.     ld    (l2e20),hl
  3059.     jp    l196e
  3060. l19f8:
  3061.     push    af
  3062.     push    hl
  3063.     call    l0e8f
  3064.     pop    hl
  3065.     pop    af
  3066.     cp    0ffh
  3067.     jp    z,disp_fname
  3068.     ld    l,h
  3069.     ld    h,0
  3070.     call    l0e87
  3071.     ld    de,(l2e22)
  3072.     add    hl,de
  3073.     ld    (l2e20),hl
  3074.     jp    l19bc
  3075. l1a15:
  3076.     ld    hl,(total_files)
  3077.     push    hl
  3078.     pop    bc
  3079.     ld    hl,new_stk
  3080.     ld    de,new_stk
  3081.     ret
  3082. l1a21:
  3083.     call    l1a15
  3084. l1a24:
  3085.     ld    a,(hl)
  3086.     cp    20h
  3087.     jp    nc,l1a56
  3088.     push    hl
  3089.     push    af
  3090.     inc    hl
  3091.     push    bc
  3092.     ld    bc,11
  3093.     ldir
  3094.     pop    bc
  3095.     pop    af
  3096.     ld    (de),a
  3097.     ld    a,(hl)
  3098.     push    af
  3099.     inc    hl
  3100.     inc    de
  3101.     xor    a
  3102.     ld    (de),a
  3103.     inc    hl
  3104.     inc    de
  3105.     ld    a,(hl)
  3106.     ld    (de),a
  3107.     inc    de
  3108.     pop    af
  3109.     ld    (de),a
  3110.     inc    de
  3111.     inc    hl
  3112.     ld    a,(hl)
  3113.     ld    (de),a
  3114.     inc    de
  3115.     pop    hl
  3116. l1a49:
  3117.     push    de
  3118.     ld    de,20h
  3119.     add    hl,de
  3120.     pop    de
  3121.     dec    bc
  3122.     ld    a,b
  3123.     or    c
  3124.     jp    nz,l1a24
  3125.     ret
  3126. l1a56:
  3127.     push    bc
  3128.     ld    b,10h
  3129.     ld    a,0e5h
  3130. l1a5b:
  3131.     ld    (de),a
  3132.     inc    de
  3133.     djnz    l1a5b
  3134.     pop    bc
  3135.     jp    l1a49
  3136. l1a65:
  3137.     ld    hl,(total_files)
  3138.     ld    (l2e1a),hl
  3139.     dec    hl
  3140.     ld    a,h
  3141.     or    l
  3142.     ret    z
  3143. l1a6f:
  3144.     ld    hl,(l2e1a)
  3145.     ld    a,h
  3146.     or    l
  3147.     ret    z
  3148.     xor    a
  3149.     ld    a,h
  3150.     rra
  3151.     ld    h,a
  3152.     ld    a,l
  3153.     rra
  3154.     ld    l,a
  3155.     ld    (l2e1a),hl
  3156.     or    h
  3157.     jp    nz,l1a84
  3158.     inc    hl
  3159. l1a84:
  3160.     ld    (l2e1c),hl
  3161.     ex    de,hl
  3162.     ld    hl,(total_files)
  3163.     dec    hl
  3164.     ld    a,l
  3165.     sub    e
  3166.     ld    l,a
  3167.     ld    a,h
  3168.     sbc    a,d
  3169.     ld    h,a
  3170.     ld    (l2e16),hl
  3171.     ld    hl,0
  3172.     ld    (l2e14),hl
  3173. l1a9b:
  3174.     ld    hl,(l2e14)
  3175.     ld    (fil_cntr),hl
  3176. l1aa1:
  3177.     ld    de,(fil_cntr)
  3178.     ld    hl,(l2e1c)
  3179.     add    hl,de
  3180.     ld    (l2e18),hl
  3181.     call    l1ae6
  3182.     jp    z,l1ad2
  3183.     jp    c,l1ad2
  3184.     call    l1b17
  3185.     ld    de,(l2e1c)
  3186.     ld    hl,(fil_cntr)
  3187.     ld    a,l
  3188.     sub    e
  3189.     ld    l,a
  3190.     ld    a,h
  3191.     sbc    a,d
  3192.     ld    h,a
  3193.     ld    (fil_cntr),hl
  3194.     jp    m,l1ad2
  3195.     or    l
  3196.     jp    z,l1ad2
  3197.     jp    l1aa1
  3198. l1ad2:
  3199.     ld    de,(l2e14)
  3200.     inc    de
  3201.     ld    (l2e14),de
  3202.     ld    hl,(l2e16)
  3203.     call    cmp_hl_de
  3204.     jp    c,l1a6f
  3205.     jp    l1a9b
  3206. l1ae6:
  3207.     ld    hl,(fil_cntr)
  3208.     call    get_nxt_fcb
  3209.     ld    (l2e0e),hl
  3210.     push    hl
  3211.     ld    hl,(l2e18)
  3212.     call    get_nxt_fcb
  3213.     ld    (l2e10),hl
  3214.     pop    de
  3215.     ld    b,0bh
  3216. l1afc:
  3217.     ld    a,(hl)
  3218.     and    7fh
  3219.     ld    c,a
  3220.     ld    a,(de)
  3221.     and    7fh
  3222.     cp    c
  3223.     ret    nz
  3224.     inc    hl
  3225.     inc    de
  3226.     djnz    l1afc
  3227.     ld    b,5
  3228. l1b0d:
  3229.     ld    a,(de)
  3230.     cp    (hl)
  3231.     ret    nz
  3232.     inc    hl
  3233.     inc    de
  3234.     djnz    l1b0d
  3235.     ret
  3236. l1b17:
  3237.     ld    de,(l2e0e)
  3238.     ld    hl,(l2e10)
  3239.     ld    c,10h
  3240. l1b20:
  3241.     ld    b,(hl)
  3242.     ld    a,(de)
  3243.     ld    (hl),a
  3244.     ld    a,b
  3245.     ld    (de),a
  3246.     inc    de
  3247.     inc    hl
  3248.     dec    c
  3249.     jp    nz,l1b20
  3250.     ret
  3251. cmp_hl_de:
  3252.     ld    a,h
  3253.     cp    d
  3254.     ret    nz
  3255.     ld    a,l
  3256.     cp    e
  3257.     ret
  3258. l1b32:
  3259.     ld    hl,0
  3260.     ld    (fil_cntr),hl
  3261.     ld    (l2e16),hl
  3262.     inc    hl
  3263.     ld    (l2e14),hl
  3264.     ld    hl,(total_files)
  3265.     ld    (l2e09),hl
  3266. l1b45:
  3267.     call    l1b7f
  3268.     jp    z,l1b51
  3269.     call    l1b9f
  3270.     call    z,l1b68
  3271. l1b51:
  3272.     ld    hl,(l2e14)
  3273.     ld    (fil_cntr),hl
  3274.     inc    hl
  3275.     ld    (l2e14),hl
  3276.     ld    hl,(l2e09)
  3277.     dec    hl
  3278.     ld    (l2e09),hl
  3279.     ld    a,h
  3280.     or    l
  3281.     jp    nz,l1b45
  3282.     ret
  3283. l1b68:
  3284.     ld    hl,(l2e16)
  3285.     call    get_nxt_fcb
  3286.     ex    de,hl
  3287.     ld    hl,(l2e0e)
  3288.     ld    bc,10h
  3289.     ldir
  3290.     ld    hl,(l2e16)
  3291.     inc    hl
  3292.     ld    (l2e16),hl
  3293.     ret
  3294. l1b7f:
  3295.     ld    hl,(fil_cntr)
  3296.     call    get_nxt_fcb
  3297.     ld    (l2e0e),hl
  3298.     push    hl
  3299.     ld    hl,(l2e14)
  3300.     call    get_nxt_fcb
  3301.     ld    (l2e10),hl
  3302.     pop    de
  3303.     ld    b,0ch
  3304. l1b95:
  3305.     ld    a,(de)
  3306.     cp    (hl)
  3307.     ret    nz
  3308.     inc    hl
  3309.     inc    de
  3310.     djnz    l1b95
  3311.     ret
  3312. l1b9f:
  3313.     ld    hl,(l2e0e)
  3314.     ld    a,(hl)
  3315.     cp    0e5h
  3316.     jp    z,l1bd7
  3317.     push    hl
  3318.     ld    de,11
  3319.     add    hl,de
  3320.     ld    b,(hl)
  3321.     pop    hl
  3322.     ld    de,l2ebb
  3323.     ld    c,11
  3324.     ld    a,b
  3325.     cp    20h
  3326.     jp    nc,l1bd7
  3327.     ld    a,(cur_user)
  3328.     cp    0ffh
  3329.     jp    z,l1bc4
  3330.     cp    b
  3331.     ret    nz
  3332. l1bc4:
  3333.     ld    a,(de)
  3334.     cp    '?'
  3335.     jp    z,l1bd0
  3336.     ld    b,a
  3337.     ld    a,7fh
  3338.     and    (hl)
  3339.     cp    b
  3340.     ret    nz
  3341. l1bd0:
  3342.     inc    hl
  3343.     inc    de
  3344.     dec    c
  3345.     jp    nz,l1bc4
  3346.     ret
  3347. l1bd7:
  3348.     or    a
  3349.     ret
  3350. l1bd9:
  3351.     ld    hl,0
  3352.     ld    (used_space),hl
  3353.     ld    hl,(total_files)
  3354.     inc    hl
  3355.     ld    a,l
  3356.     or    h
  3357.     ret    z
  3358.     push    hl
  3359.     pop    bc
  3360.     ld    hl,l3d94
  3361.     ld    de,10h
  3362. l1bee:
  3363.     push    hl
  3364.     push    de
  3365.     push    bc
  3366.     call    l1cec
  3367.     ld    de,(used_space)
  3368.     add    hl,de
  3369.     ld    (used_space),hl
  3370.     pop    bc
  3371.     pop    de
  3372.     pop    hl
  3373.     add    hl,de
  3374.     dec    bc
  3375.     ld    a,b
  3376.     or    c
  3377.     jp    nz,l1bee
  3378.     ret
  3379. pnt_hl_in_dec:
  3380.     push    hl
  3381.     ld    de,2710h
  3382.     call    cmp_hl_de
  3383.     jp    c,l1c16
  3384.     ld    d,5
  3385.     jp    l1c3f
  3386. l1c16:
  3387.     ld    de,l03e8
  3388.     call    cmp_hl_de
  3389.     jp    c,l1c24
  3390.     ld    d,4
  3391.     jp    l1c3f
  3392. l1c24:
  3393.     ld    de,64h
  3394.     call    cmp_hl_de
  3395.     jp    c,l1c32
  3396.     ld    d,3
  3397.     jp    l1c3f
  3398. l1c32:
  3399.     ld    a,l
  3400.     cp    lf
  3401.     jp    c,l1c3d
  3402.     ld    d,2
  3403.     jp    l1c3f
  3404. l1c3d:
  3405.     ld    d,1
  3406. l1c3f:
  3407.     ld    a,c
  3408.     sub    d
  3409.     jp    z,l1c52
  3410.     jp    c,l1c52
  3411. l1c47:
  3412.     push    af
  3413.     ld    a,' '
  3414.     call    prnt_a_char
  3415.     pop    af
  3416.     dec    a
  3417.     jp    nz,l1c47
  3418. l1c52:
  3419.     pop    hl
  3420. l1c53:
  3421.     push    af
  3422.     push    bc
  3423.     push    de
  3424.     push    hl
  3425.     ld    bc,lfff6
  3426.     ld    de,0ffffh
  3427. l1c5d:
  3428.     add    hl,bc
  3429.     inc    de
  3430.     jp    c,l1c5d
  3431.     ld    bc,lf
  3432.     add    hl,bc
  3433.     ex    de,hl
  3434.     ld    a,h
  3435.     or    l
  3436.     call    nz,l1c53
  3437.     ld    a,e
  3438.     add    a,'0'
  3439.     call    prnt_a_char
  3440.     pop    hl
  3441.     pop    de
  3442.     pop    bc
  3443.     pop    af
  3444.     ret
  3445. ;
  3446. ;    get disk free space
  3447. ;
  3448. get_dsk_fspc:
  3449.     ld    c,12            ;get system identification
  3450.     rst    38h
  3451.     ld    a,h            ;mpm if h=1
  3452.     cp    0            ;test for cp/m
  3453.     jp    nz,mpm_dsk_fspc        ; if not, jump
  3454.     ld    a,l            ;cpm2.2 if l=22h
  3455.     cp    30h            ;test if cpm3.x or turbodos
  3456.     jp    nc,mpm_dsk_fspc        ;these also use bdos diskspace call
  3457.  
  3458.     ld    hl,(l30e7)
  3459.     inc    hl
  3460.     push    hl
  3461.     pop    bc
  3462.     push    hl
  3463.     ld    hl,(alv_vect)
  3464.     ld    de,0
  3465. l1c8f:
  3466.     ld    a,(hl)
  3467.     push    hl
  3468.     ld    l,8
  3469. l1c93:
  3470.     rla
  3471.     jp    nc,l1c98
  3472.     inc    de
  3473. l1c98:
  3474.     ld    h,a
  3475.     dec    bc
  3476.     ld    a,b
  3477.     or    c
  3478.     jp    z,l1ca9
  3479.     ld    a,h
  3480.     dec    l
  3481.     jp    nz,l1c93
  3482.     pop    hl
  3483.     inc    hl
  3484.     jp    l1c8f
  3485. l1ca9:
  3486.     pop    hl
  3487.     pop    hl
  3488.     ld    a,l
  3489.     sub    e
  3490.     ld    l,a
  3491.     ld    a,h
  3492.     sbc    a,d
  3493.     ld    h,a
  3494.     ld    a,(l2e2a)
  3495.     or    a
  3496. l1cb5:
  3497.     jp    z,l1cbd
  3498.     add    hl,hl
  3499.     dec    a
  3500.     jp    l1cb5
  3501. l1cbd:
  3502.     ld    (free_space),hl
  3503.     ret
  3504. mpm_dsk_fspc:
  3505.     ld    de,dma_addr
  3506.     ld    c,26            ;set file buffer address
  3507.     rst    38h
  3508.     ld    a,(cur_drv)
  3509.     ld    e,a
  3510.     ld    c,46            ;mpm get disk free space
  3511.     rst    38h
  3512.     ld    hl,(dma_addr)
  3513.     ld    a,(dma_addr+2)
  3514.     ld    b,a
  3515.     ld    c,3
  3516. l1cdb:
  3517.     or    a
  3518.     ld    a,b
  3519.     rra
  3520.     ld    b,a
  3521.     ld    a,h
  3522.     rra
  3523.     ld    h,a
  3524.     ld    a,l
  3525.     rra
  3526.     ld    l,a
  3527.     dec    c
  3528.     jp    nz,l1cdb
  3529.     jp    l1cbd
  3530. l1cec:
  3531.     ld    d,0
  3532.     ld    e,(hl)
  3533.     ex    de,hl
  3534.     add    hl,hl
  3535.     add    hl,hl
  3536.     add    hl,hl
  3537.     add    hl,hl
  3538.     add    hl,hl
  3539.     ex    de,hl
  3540.     inc    hl
  3541.     ld    a,(hl)
  3542.     push    hl
  3543.     ld    h,0
  3544.     ld    l,a
  3545.     add    hl,de
  3546.     add    hl,hl
  3547.     add    hl,hl
  3548.     add    hl,hl
  3549.     add    hl,hl
  3550.     pop    de
  3551.     inc    de
  3552.     ld    a,(de)
  3553.     rrca
  3554.     rrca
  3555.     rrca
  3556.     push    af
  3557.     and    1fh
  3558.     add    a,l
  3559.     ld    l,a
  3560.     jp    nc,l1d10
  3561.     inc    h
  3562. l1d10:
  3563.     pop    af
  3564.     and    0e0h
  3565.     jp    z,l1d17
  3566.     inc    hl
  3567. l1d17:
  3568.     push    hl
  3569.     pop    de
  3570.     ld    a,(l2e2a)
  3571.     or    a
  3572.     ret    z
  3573.     cp    1
  3574.     jp    z,l1d5a
  3575.     cp    2
  3576.     jp    z,l1d4b
  3577.     cp    3
  3578.     jp    z,l1d3c
  3579.     ld    a,l
  3580.     and    0fh
  3581.     ret    z
  3582.     push    de
  3583.     ld    a,0f0h
  3584.     and    l
  3585.     ld    l,a
  3586.     ld    de,10h
  3587.     add    hl,de
  3588.     pop    de
  3589.     ret
  3590. l1d3c:
  3591.     ld    a,l
  3592.     and    7
  3593.     ret    z
  3594.     push    de
  3595.     ld    de,8
  3596.     add    hl,de
  3597.     ld    a,l
  3598.     and    0f8h
  3599.     ld    l,a
  3600.     pop    de
  3601.     ret
  3602. l1d4b:
  3603.     ld    a,l
  3604.     and    3
  3605.     ret    z
  3606.     ld    a,l
  3607.     and    0fch
  3608.     ld    l,a
  3609.     push    de
  3610.     ld    de,4
  3611.     add    hl,de
  3612.     pop    de
  3613.     ret
  3614. l1d5a:
  3615.     ld    a,l
  3616.     and    1
  3617.     ret    z
  3618.     inc    hl
  3619.     ret
  3620. l1d69:
  3621.     cp    61h
  3622.     ret    c
  3623.     cp    7bh
  3624.     ret    nc
  3625.     and    5fh
  3626.     ret
  3627. l1d72:
  3628.     ld    a,(cur_drv)
  3629.     ld    e,a
  3630.     ld    c,14            ;select drive
  3631.     rst    38h
  3632.     inc    a
  3633.     jp    z,disp_fname
  3634.     ld    c,31            ;get disk parameters
  3635.     rst    38h
  3636.     ld    de,fil_bfr_addr
  3637.     ld    bc,0fh
  3638.     ldir
  3639.     ld    a,(l30e4)
  3640.     sub    a,3
  3641.     ld    (l2e2a),a
  3642.     ld    c,27            ;get allocation vector
  3643.     rst    38h
  3644.     ld    (alv_vect),hl
  3645.     ret
  3646. menu1:
  3647.     ld    hl,cls_str
  3648.     call    pnt_2_zero
  3649.     jr    menu2
  3650. menu:
  3651.  
  3652.     ld    de,title_msg
  3653.     call    cons_op_strg
  3654. menu2:
  3655.     ld    de,main_menu
  3656.     call    cons_op_strg
  3657.     call    tab_it
  3658.     ld    hl,(total_files)
  3659.     call    l02f8
  3660.     call    cr_lf
  3661.     call    tab_it
  3662.     call    tagd_files
  3663.     call    pnt_tgd_siz
  3664.     call    cr_lf
  3665.     ret
  3666. pnt_title:
  3667.     ld    hl,cls_str
  3668.     call    pnt_2_zero
  3669.     ld    de,title_msg
  3670.     jp    cons_op_strg
  3671. l1dc2:
  3672.     ld    hl,(l2e3e)
  3673.     ex    de,hl
  3674.     call    l1ed2
  3675.     ld    hl,fcb1
  3676.     xor    a
  3677.     ld    (hl),a
  3678.     dec    a
  3679.     jp    l1e4c
  3680. l1dd2:
  3681.     ld    hl,fcb1
  3682. l1dd5:
  3683.     push    hl
  3684.     ld    hl,(l2e3e)
  3685.     ex    de,hl
  3686.     call    l1ed2
  3687.     pop    hl
  3688.     ld    a,(cur_drv)
  3689.     inc    a
  3690.     ld    b,a
  3691.     ld    c,0ffh
  3692.     ld    a,(de)
  3693.     or    a
  3694.     jp    z,l1e2d
  3695.     push    de
  3696.     cp    '0'
  3697.     jp    c,l1df5
  3698.     cp    ':'
  3699.     jp    c,l1e08
  3700. l1df5:
  3701.     sbc    a,'@'
  3702.     ld    b,a
  3703.     inc    de
  3704.     ld    a,(de)
  3705.     cp    ':'
  3706.     jp    z,l1e37
  3707.     or    a
  3708.     jp    z,l1e37
  3709.     cp    '*'
  3710.     jp    z,l1e0b
  3711. l1e08:
  3712.     sub    '0'
  3713.     ld    c,a
  3714. l1e0b:
  3715.     inc    de
  3716.     ld    a,(de)
  3717.     cp    ':'
  3718.     jp    z,l1e37
  3719.     and    a
  3720.     jr    z,l1e37
  3721.     ld    a,c
  3722.     add    a,a
  3723.     add    a,a
  3724.     add    a,c
  3725.     add    a,a
  3726.     ld    c,a
  3727. ;
  3728.     ld    a,(de)
  3729.     sub    '0'
  3730.     add    a,c
  3731.     ld    c,a
  3732.     inc    de
  3733.     ld    a,(de)
  3734.     cp    ':'
  3735.     jr    z,l1e37
  3736.     or    a
  3737.     jr    z,l1e37
  3738. l1e2c:
  3739.     pop    de
  3740. l1e2d:
  3741.     ld    a,(cur_drv)
  3742.     inc    a
  3743.     ld    (hl),a
  3744.     ld    a,0ffh
  3745.     jp    l1e4c
  3746. l1e37:
  3747.     ld    a,b
  3748.     cp    17
  3749.     jp    nc,l1e2c
  3750.     ld    a,c
  3751.     cp    0ffh
  3752.     jp    z,l1e48
  3753.     cp    32
  3754.     jr    nc,l1e2c
  3755. l1e48:
  3756.     pop    af
  3757.     ld    (hl),b
  3758.     inc    de
  3759.     ld    a,c
  3760. l1e4c:
  3761.     ld    (new_user),a
  3762.     ld    b,8
  3763. l1e51:
  3764.     call    chk_delims
  3765.     jp    z,l1e72
  3766.     inc    hl
  3767.     cp    '*'
  3768.     jp    nz,l1e62
  3769.     ld    (hl),'?'
  3770.     jp    l1e64
  3771. l1e62:
  3772.     ld    (hl),a
  3773.     inc    de
  3774. l1e64:
  3775.     djnz    l1e51
  3776. l1e68:
  3777.     call    chk_delims
  3778.     jp    z,l1e79
  3779.     inc    de
  3780.     jp    l1e68
  3781. l1e72:
  3782.     inc    hl
  3783.     ld    (hl),' '
  3784.     djnz    l1e72
  3785. l1e79:
  3786.     ld    b,3
  3787.     cp    '.'
  3788.     jp    nz,l1ea2
  3789.     inc    de
  3790. l1e81:
  3791.     call    chk_delims
  3792.     jp    z,l1ea2
  3793.     inc    hl
  3794.     cp    '*'
  3795.     jp    nz,l1e92
  3796.     ld    (hl),'?'
  3797.     jp    l1e94
  3798. l1e92:
  3799.     ld    (hl),a
  3800.     inc    de
  3801. l1e94:
  3802.     djnz    l1e81
  3803. l1e98:
  3804.     call    chk_delims
  3805.     jp    z,l1ea9
  3806.     inc    de
  3807.     jp    l1e98
  3808. l1ea2:
  3809.     inc    hl
  3810.     ld    (hl),' '
  3811.     djnz    l1ea2
  3812. l1ea9:
  3813.     ld    b,3
  3814. l1eab:
  3815.     inc    hl
  3816.     ld    (hl),0
  3817.     djnz    l1eab
  3818.     ex    de,hl
  3819.     ld    (l2e3e),hl
  3820.     ret
  3821. chk_delims:
  3822.     ld    a,(de)
  3823.     or    a
  3824.     ret    z
  3825.     cp    ' '
  3826.     ret    z
  3827.     cp    '='
  3828.     ret    z
  3829.     cp    5fh
  3830.     ret    z
  3831.     cp    '.'
  3832.     ret    z
  3833.     cp    ':'
  3834.     ret    z
  3835.     cp    ';'
  3836.     ret    z
  3837.     cp    '<'
  3838.     ret    z
  3839.     cp    '>'
  3840.     ret
  3841.  
  3842. l1ed2:
  3843.     ld    a,(de)
  3844.     or    a
  3845.     ret    z
  3846.     cp    ' '
  3847.     ret    nz
  3848.     inc    de
  3849.     jp    l1ed2
  3850.  
  3851. l1edc:
  3852.     ld    hl,l2ee0
  3853.     ld    c,0
  3854. l1ee1:
  3855.     ex    de,hl
  3856.     ld    hl,0
  3857.     ld    a,c
  3858.     push    bc
  3859.     ld    b,8
  3860.     xor    h
  3861.     ld    h,a
  3862. l1eeb:
  3863.     add    hl,hl
  3864.     jp    nc,l1ef7
  3865.     ld    a,10h
  3866.     xor    h
  3867.     ld    h,a
  3868.     ld    a,'!'
  3869.     xor    l
  3870.     ld    l,a
  3871. l1ef7:
  3872.     djnz    l1eeb
  3873.     pop    bc
  3874.     ex    de,hl
  3875.     ld    (hl),d
  3876.     inc    h
  3877.     ld    (hl),e
  3878.     dec    h
  3879.     inc    hl
  3880.     inc    c
  3881.     jp    nz,l1ee1
  3882.     ret
  3883. l1f07:
  3884.     ld    a,(verif_flag)
  3885.     or    a
  3886.     ret    z
  3887. l1f0c:
  3888.     ld    a,(hl)
  3889.     call    l1f18
  3890.     inc    hl
  3891.     call    cmp_hl_de
  3892.     jp    nz,l1f0c
  3893.     ret
  3894. l1f18:
  3895.     push    bc
  3896.     push    hl
  3897.     push    de
  3898.     ld    hl,(l2e40)
  3899.     ex    de,hl
  3900.     ld    b,0
  3901.     xor    d
  3902.     ld    c,a
  3903.     ld    hl,l2ee0
  3904.     add    hl,bc
  3905.     ld    a,(hl)
  3906.     xor    e
  3907.     ld    d,a
  3908.     inc    h
  3909.     ld    e,(hl)
  3910.     ld    (l2e40),de
  3911.     pop    de
  3912.     pop    hl
  3913.     pop    bc
  3914.     ret
  3915. inc_hl_12:
  3916.     ld    de,0ch
  3917.     add    hl,de
  3918.     ret
  3919. tab_it:
  3920.     call    in_lin_prnt
  3921.     db    tab,tab,0
  3922.     ret
  3923. cr_lf:
  3924.     call    in_lin_prnt
  3925.     db    cr,lf,0
  3926.     ret
  3927.  
  3928. in_lin_prnt:
  3929.     pop    hl
  3930.     ld    a,(hl)
  3931.     or    a
  3932.     inc    hl
  3933.     push    hl
  3934.     ret    z
  3935.     call    prnt_a_char
  3936.     jp    in_lin_prnt
  3937.  
  3938. cons_op_strg:
  3939.     ld    c,9            ;console output string
  3940.     jp    bdos
  3941.  
  3942. prnt_a_char:
  3943.     ld    e,a
  3944.     and    80h
  3945.     ld    a,e
  3946.     jp    z,l1f64
  3947.     push    af
  3948.     call    set_inv_on
  3949.     pop    af
  3950.     call    l1f64
  3951.     call    set_inv_off
  3952.     ret
  3953. l1f64:
  3954.     and    7fh
  3955.     ld    e,a
  3956.     ld    c,2            ;console output byte
  3957.     jp    bdos
  3958. ;
  3959. set_inv_on:
  3960.     ld    hl,inv_on
  3961.     jr    pnt_2_zero
  3962. set_inv_off:
  3963.     ld    hl,inv_off
  3964. pnt_2_zero:
  3965.     ld    a,(hl)
  3966.     inc    hl
  3967.     or    a
  3968.     ret    z
  3969.     ld    b,a
  3970. l1f7a:
  3971.     push    hl
  3972.     push    bc
  3973.     ld    a,(hl)
  3974.     call    l1f64
  3975.     pop    bc
  3976.     pop    hl
  3977.     inc    hl
  3978.     djnz    l1f7a
  3979.     ret
  3980. get_nxt_fcb:
  3981.     add    hl,hl
  3982.     add    hl,hl
  3983.     add    hl,hl
  3984.     add    hl,hl
  3985.     ld    de,new_stk
  3986.     add    hl,de
  3987.     ret
  3988. ;
  3989. l220f:
  3990.     ld    de,10h
  3991.     ld    (l2378),hl
  3992.     add    hl,de
  3993.     ld    (l237a),hl
  3994.     ld    hl,0
  3995.     add    hl,sp
  3996.     ld    (l228d),hl
  3997.     call    l2363
  3998.     ld    de,lff76
  3999.     call    cmp_hl_de
  4000.     ld    a,1
  4001.     ret    nz
  4002.     xor    a
  4003.     ld    (l2374),a
  4004.     ld    (l2377),a
  4005.     call    l2363
  4006.     ld    (l237e),hl
  4007.     ld    hl,(l2378)
  4008. l223c:
  4009.     push    hl
  4010.     call    l196e
  4011.     pop    hl
  4012.     push    af
  4013.     call    l229d
  4014.     ld    b,a
  4015.     pop    af
  4016.     ld    (hl),b
  4017.     inc    hl
  4018.     jp    nz,l228c
  4019.     or    a
  4020.     jp    nz,l223c
  4021.     call    l2363
  4022.     ld    (l2380),hl
  4023.     ld    de,0102h
  4024.     call    cmp_hl_de
  4025.     jp    c,l2263
  4026.     ld    a,2
  4027.     or    a
  4028.     ret
  4029. l2263:
  4030.     ld    de,(l237a)
  4031. l2268:
  4032.     ld    (l237c),hl
  4033.     ld    a,h
  4034.     or    l
  4035.     jp    z,l2293
  4036.     push    de
  4037.     call    l2363
  4038.     pop    de
  4039.     ex    de,hl
  4040.     ld    (hl),e
  4041.     inc    hl
  4042.     ld    (hl),d
  4043.     inc    hl
  4044.     push    hl
  4045.     call    l2363
  4046.     ex    de,hl
  4047.     pop    hl
  4048.     ld    (hl),e
  4049.     inc    hl
  4050.     ld    (hl),d
  4051.     inc    hl
  4052.     ex    de,hl
  4053.     ld    hl,(l237c)
  4054.     dec    hl
  4055.     jp    l2268
  4056. l228c:
  4057. l228d    equ    $+1
  4058.     ld    sp,0
  4059.     ld    a,3
  4060.     or    a
  4061.     ret
  4062. l2293:
  4063.     ld    hl,(l2378)
  4064.     ld    de,(l237e)
  4065.     xor    a
  4066.     ret
  4067. l229d:
  4068.     cp    'a'
  4069.     ret    c
  4070.     cp    '{'
  4071.     ret    nc
  4072.     and    5fh
  4073.     ret
  4074. ;
  4075. ;    ####################### USQ section #######################
  4076. ;
  4077. l22dc:
  4078.     ld    hl,0
  4079.     add    hl,sp
  4080.     ld    (l228d),hl
  4081.     ld    a,(l2377)
  4082.     or    a
  4083.     jp    z,l22f3
  4084.     dec    a
  4085.     ld    (l2377),a
  4086.     ld    a,(l2376)
  4087.     cp    a
  4088.     ret
  4089. l22f3:
  4090.     call    l2315
  4091.     cp    90h
  4092.     jp    nz,l2310
  4093.     call    l2315
  4094.     or    a
  4095.     jp    nz,l2306
  4096.     ld    a,90h
  4097.     cp    a
  4098.     ret
  4099. l2306:
  4100.     dec    a
  4101.     dec    a
  4102.     ld    (l2377),a
  4103.     ld    a,(l2376)
  4104.     cp    a
  4105.     ret
  4106. l2310:
  4107.     ld    (l2376),a
  4108.     cp    a
  4109.     ret
  4110. l2315:
  4111.     ld    de,0
  4112.     ld    a,(l2375)
  4113.     ld    c,a
  4114. l231c:
  4115.     ld    a,(l2374)
  4116.     or    a
  4117.     jp    nz,l232e
  4118.     push    de
  4119.     call    l196e
  4120.     jp    nz,l228c
  4121.     pop    de
  4122.     ld    c,a
  4123.     ld    a,8
  4124. l232e:
  4125.     dec    a
  4126.     ld    (l2374),a
  4127.     ld    a,c
  4128.     rrca
  4129.     ld    c,a
  4130.     ld    hl,(l237a)
  4131.     jp    nc,l233d
  4132.     inc    hl
  4133.     inc    hl
  4134. l233d:
  4135.     add    hl,de
  4136.     add    hl,de
  4137.     add    hl,de
  4138.     add    hl,de
  4139.     ld    e,(hl)
  4140.     inc    hl
  4141.     ld    d,(hl)
  4142.     ld    a,d
  4143.     and    80h
  4144.     jp    z,l231c
  4145.     ld    a,c
  4146.     ld    (l2375),a
  4147.     ld    a,d
  4148.     cp    0feh
  4149.     ld    a,1ah
  4150.     jp    z,l235a
  4151.     ld    a,e
  4152.     cpl
  4153.     cp    a
  4154.     ret
  4155. l235a:
  4156.     pop    hl
  4157.     or    a
  4158.     ret
  4159.  
  4160. l2363:
  4161.     call    l196e
  4162.     jp    nz,l228c
  4163.     push    af
  4164.     call    l196e
  4165.     jp    nz,l228c
  4166.     ld    h,a
  4167.     pop    af
  4168.     ld    l,a
  4169.     ret
  4170. ;
  4171. l2382:
  4172.     ld    a,0ffh
  4173.     ld    (l2be8),a
  4174.     ld    (l2c42),hl
  4175.     ld    hl,0
  4176.     add    hl,sp
  4177.     ld    (l2c82),hl
  4178.     ld    sp,l2c82
  4179.     ld    hl,(l2c42)
  4180.     ld    a,l
  4181.     and    0fch
  4182.     ld    l,a
  4183.     ld    a,4
  4184.     call    l2b8d
  4185.     ld    (l2be9),hl
  4186.     ld    de,0400h
  4187.     add    hl,de
  4188.     ld    (l2c3e),hl
  4189.     ld    de,0400h
  4190.     add    hl,de
  4191.     ld    (l2c40),hl
  4192.     call    l2b26
  4193.     xor    a
  4194.     ld    (l2bee),a
  4195.     call    l2b57
  4196.     jp    nz,l23c3
  4197.     ld    a,2
  4198.     jp    l2790
  4199. l23c3:
  4200.     ld    de,lff76
  4201.     call    cmp_hl_de
  4202.     jp    nz,l23d1
  4203.     ld    a,1
  4204.     jp    l2790
  4205. l23d1:
  4206.     ld    a,l
  4207.     ld    (l2bed),a
  4208.     push    hl
  4209.     call    l2b08
  4210.     pop    hl
  4211.     ld    a,h
  4212.     jp    l23e4
  4213. l23de:
  4214.     call    l2b63
  4215.     jp    z,l243f
  4216. l23e4:
  4217.     ld    hl,l2bed
  4218.     cp    (hl)
  4219.     jp    z,l2419
  4220.     inc    hl
  4221.     inc    (hl)
  4222.     dec    (hl)
  4223.     jp    z,l2436
  4224.     push    af
  4225.     ld    a,(hl)
  4226.     ld    (hl),0
  4227.     cp    3
  4228.     jp    nc,l240a
  4229.     ld    b,a
  4230.     dec    hl
  4231.     ld    a,(hl)
  4232. l23fd:
  4233.     push    af
  4234.     call    l2b08
  4235.     pop    af
  4236.     djnz    l23fd
  4237.     pop    af
  4238.     jp    l2436
  4239. l240a:
  4240.     push    af
  4241.     ld    a,90h
  4242.     call    l2b11
  4243.     pop    af
  4244.     inc    a
  4245.     call    l2b11
  4246.     pop    af
  4247.     jp    l2436
  4248. l2419:
  4249.     cp    90h
  4250.     jp    z,l2436
  4251.     inc    hl
  4252.     inc    (hl)
  4253.     ld    a,(hl)
  4254.     cp    0ffh
  4255.     jp    nz,l23de
  4256.     push    hl
  4257.     ld    a,90h
  4258.     call    l2b11
  4259.     pop    hl
  4260.     ld    a,(hl)
  4261.     ld    (hl),0
  4262.     call    l2b11
  4263.     ld    a,(l2bed)
  4264. l2436:
  4265.     ld    (l2bed),a
  4266.     call    l2b08
  4267.     jp    l23de
  4268. l243f:
  4269.     ld    a,(l2bee)
  4270.     or    a
  4271.     jp    z,l2451
  4272.     push    af
  4273.     ld    a,90h
  4274.     call    l2b11
  4275.     pop    af
  4276.     inc    a
  4277.     call    l2b11
  4278. l2451:
  4279.     ld    b,0
  4280.     ld    hl,(l2c3e)
  4281. l2456:
  4282.     ld    e,(hl)
  4283.     inc    hl
  4284.     ld    d,(hl)
  4285.     inc    hl
  4286.     ld    c,(hl)
  4287.     inc    hl
  4288.     ld    a,d
  4289.     or    e
  4290.     or    c
  4291.     jp    nz,l246c
  4292.     inc    hl
  4293.     djnz    l2456
  4294.     ld    a,2
  4295.     jp    l2790
  4296. l246c:
  4297.     dec    b
  4298.     ld    a,(hl)
  4299.     push    hl
  4300.     ld    hl,(l2c40)
  4301.     ld    (hl),a
  4302.     inc    hl
  4303.     ld    (hl),e
  4304.     inc    hl
  4305.     ld    (hl),d
  4306.     inc    hl
  4307.     ld    (hl),c
  4308.     inc    hl
  4309.     ld    (l2bfb),hl
  4310.     pop    hl
  4311.     ld    a,1
  4312.     ld    (l2bef),a
  4313.     inc    hl
  4314. l2484:
  4315.     ld    e,(hl)
  4316.     inc    hl
  4317.     ld    d,(hl)
  4318.     inc    hl
  4319.     ld    c,(hl)
  4320.     inc    hl
  4321.     ld    a,(hl)
  4322.     inc    hl
  4323.     ld    (l2c3c),a
  4324.     ld    a,e
  4325.     or    d
  4326.     or    c
  4327.     jp    z,l24f3
  4328.     push    hl
  4329.     push    bc
  4330.     ld    a,(l2bef)
  4331.     ld    b,a
  4332.     ld    hl,(l2c40)
  4333.     inc    hl
  4334. l249f:
  4335.     push    hl
  4336.     call    l2bae
  4337.     jp    c,l24b6
  4338.     pop    hl
  4339.     inc    hl
  4340.     inc    hl
  4341.     inc    hl
  4342.     inc    hl
  4343.     djnz    l249f
  4344.     ld    a,c
  4345.     ld    (l2c3d),a
  4346.     jp    l24d2
  4347. l24b6:
  4348.     ld    hl,(l2bfb)
  4349.     ld    a,c
  4350.     ld    (l2c3d),a
  4351.     pop    bc
  4352.     push    bc
  4353.     dec    bc
  4354.     ld    a,l
  4355.     sub    c
  4356.     ld    c,a
  4357.     ld    a,h
  4358.     sbc    a,b
  4359.     ld    b,a
  4360.     push    de
  4361.     ld    d,h
  4362.     ld    e,l
  4363.     inc    de
  4364.     inc    de
  4365.     inc    de
  4366.     dec    hl
  4367.     lddr
  4368.     pop    de
  4369.     pop    hl
  4370. l24d2:
  4371.     dec    hl
  4372.     pop    bc
  4373.     ld    a,(l2c3c)
  4374.     ld    (hl),a
  4375.     inc    hl
  4376.     ld    (hl),e
  4377.     inc    hl
  4378.     ld    (hl),d
  4379.     inc    hl
  4380.     ld    a,(l2c3d)
  4381.     ld    (hl),a
  4382.     ld    hl,(l2bfb)
  4383.     inc    hl
  4384.     inc    hl
  4385.     inc    hl
  4386.     inc    hl
  4387.     ld    (l2bfb),hl
  4388.     ld    a,(l2bef)
  4389.     inc    a
  4390.     ld    (l2bef),a
  4391.     pop    hl
  4392. l24f3:
  4393.     djnz    l2484
  4394.     ld    a,(l2bef)
  4395.     ld    hl,l2a82
  4396.     ld    b,7
  4397.     or    a
  4398.     jp    z,l2515
  4399. l2503:
  4400.     inc    (hl)
  4401.     dec    (hl)
  4402.     jp    nz,l250c
  4403.     cp    (hl)
  4404.     jp    nz,l2510
  4405. l250c:
  4406.     cp    (hl)
  4407.     jp    nc,l2515
  4408. l2510:
  4409.     inc    hl
  4410.     djnz    l2503
  4411. l2515:
  4412.     inc    b
  4413.     inc    b
  4414.     inc    b
  4415.     ld    hl,l2a81
  4416.     ld    (hl),b
  4417.     xor    a
  4418.     ld    (l2c37),a
  4419.     ld    (l2c38),a
  4420. l2523:
  4421.     call    l2a6c
  4422.     xor    a
  4423.     ld    h,a
  4424.     ld    (l2bee),a
  4425.     ld    (l2bfa),a
  4426.     inc    a
  4427.     ld    l,a
  4428.     ld    (l2bed),a
  4429.     ld    (l2bf8),hl
  4430.     inc    a
  4431.     ld    (l2bf4),a
  4432.     ld    hl,(l2be9)
  4433.     ld    (l2bf6),hl
  4434.     ld    hl,0
  4435.     ld    (l2c0b),hl
  4436.     ld    (l2c0d),hl
  4437.     ld    hl,l2c24
  4438.     ld    de,l2c25
  4439.     ld    bc,10h
  4440.     ld    (hl),0
  4441.     ldir
  4442.     ld    a,(l2c37)
  4443.     or    a
  4444.     jp    nz,l258d
  4445. l255e:
  4446.     call    l2a54
  4447.     jp    z,l2654
  4448.     call    l2aa5
  4449.     jp    z,l25c5
  4450.     ld    b,a
  4451.     ld    a,(l2bed)
  4452.     cp    c
  4453.     jp    z,l257a
  4454. l2572:
  4455.     call    l290d
  4456.     inc    a
  4457.     cp    c
  4458.     jp    nz,l2572
  4459. l257a:
  4460.     ld    a,(l2bf4)
  4461.     cp    1
  4462.     jp    z,l25ca
  4463.     ld    hl,l2bee
  4464.     inc    (hl)
  4465.     ld    a,b
  4466.     call    l2993
  4467.     jp    l255e
  4468. l258d:
  4469.     call    l2a54
  4470.     jp    z,l2654
  4471.     ld    b,a
  4472. l2594:
  4473.     ld    hl,l2bed
  4474.     ld    a,(l2a81)
  4475.     cp    (hl)
  4476.     jp    c,l25c6
  4477.     ld    a,(hl)
  4478.     ld    hl,l2c13
  4479.     call    l2b8d
  4480.     ld    a,(l2bee)
  4481.     cp    (hl)
  4482.     jp    nz,l25b2
  4483.     call    l290d
  4484.     jp    l2594
  4485. l25b2:
  4486.     ld    a,(l2bf4)
  4487.     cp    1
  4488.     jp    z,l25ca
  4489.     ld    hl,l2bee
  4490.     inc    (hl)
  4491.     ld    a,b
  4492.     call    l2993
  4493.     jp    l258d
  4494. l25c5:
  4495.     ld    b,a
  4496. l25c6:
  4497.     push    bc
  4498.     jp    l25ce
  4499. l25ca:
  4500.     push    bc
  4501. l25cb:
  4502.     call    l290d
  4503. l25ce:
  4504.     ld    hl,l2bf0
  4505.     ld    a,(hl)
  4506.     cp    0feh
  4507.     jp    c,l25e2
  4508.     ld    a,(l2bed)
  4509.     cp    7
  4510.     ld    a,(hl)
  4511.     jp    nc,l25e2
  4512.     ld    a,0fdh
  4513. l25e2:
  4514.     inc    a
  4515.     inc    a
  4516.     ld    b,a
  4517.     ld    a,(l2bf4)
  4518.     add    a,a
  4519.     sub    b
  4520.     jp    nc,l2622
  4521.     ld    a,(l2bf4)
  4522.     or    a
  4523.     rla
  4524.     jp    nc,l25fa
  4525.     rra
  4526.     rra
  4527.     jp    l2602
  4528. l25fa:
  4529.     rra
  4530.     call    l2aed
  4531.     or    a
  4532.     jp    z,l25cb
  4533. l2602:
  4534.     ld    (l2bf5),a
  4535.     pop    bc
  4536.     jp    l2610
  4537. l2609:
  4538.     call    l2a54
  4539.     jp    z,l2654
  4540.     ld    b,a
  4541. l2610:
  4542.     ld    hl,l2bee
  4543.     inc    (hl)
  4544.     ld    a,(l2bf5)
  4545.     cp    (hl)
  4546.     jp    c,l25ca
  4547.     ld    a,b
  4548.     call    l2993
  4549.     jp    l2609
  4550. l2622:
  4551.     ld    (l2bf5),a
  4552.     pop    bc
  4553.     jp    l2630
  4554. l2629:
  4555.     call    l2a54
  4556.     jp    z,l2654
  4557.     ld    b,a
  4558. l2630:
  4559.     ld    hl,l2bee
  4560.     inc    (hl)
  4561.     ld    a,(l2bf5)
  4562.     cp    (hl)
  4563.     ld    a,b
  4564.     jp    c,l2642
  4565.     call    l2993
  4566.     jp    l2629
  4567. l2642:
  4568.     call    l290d
  4569.     jp    l264e
  4570. l2648:
  4571.     call    l2a54
  4572.     jp    z,l2654
  4573. l264e:
  4574.     call    l2993
  4575.     jp    l2648
  4576. l2654:
  4577.     ld    a,(l2c38)
  4578.     or    a
  4579.     push    af
  4580.     call    nz,l2a39
  4581.     pop    af
  4582.     jp    nz,l272f
  4583.     ld    a,(l2c37)
  4584.     or    a
  4585.     jp    nz,l2691
  4586.     ld    hl,l2c0b
  4587.     ld    de,l2c0f
  4588.     ld    bc,4
  4589.     ldir
  4590.     ld    hl,l2c24
  4591.     ld    de,l2c13
  4592.     ld    bc,11h
  4593.     ldir
  4594.     ld    a,(l2be2)
  4595.     dec    a
  4596.     ld    (l2c35),a
  4597.     ld    a,0ffh
  4598.     ld    (l2c37),a
  4599.     ld    (l2c39),a
  4600.     jp    l2709
  4601. l2691:
  4602.     ld    a,0ffh
  4603.     ld    (l2c39),a
  4604.     ld    hl,l2c0b
  4605.     ld    de,l2c0f
  4606.     ld    b,4
  4607.     call    l2bbb
  4608.     jp    c,l26d2
  4609. l26a4:
  4610.     xor    a
  4611.     ld    (l2c39),a
  4612. l26a8:
  4613.     ld    hl,l2c13
  4614.     ld    a,(l2c35)
  4615.     call    l2b8d
  4616.     ld    a,(l2c3a)
  4617.     ld    c,(hl)
  4618.     ld    (hl),a
  4619.     ld    a,(l2c36)
  4620.     cpl
  4621.     inc    a
  4622.     cp    0ffh
  4623.     jp    z,l2709
  4624.     ld    b,a
  4625.     ld    a,(l2c3b)
  4626.     sub    c
  4627.     cp    2
  4628.     jp    nc,l2709
  4629.     inc    (hl)
  4630.     ld    a,b
  4631.     ld    (l2c36),a
  4632.     jp    l26f3
  4633. l26d2:
  4634.     ld    hl,l2c24
  4635.     ld    de,l2c13
  4636.     ld    bc,11h
  4637.     ldir
  4638. l26de:
  4639.     ld    hl,l2c13
  4640.     ld    a,(l2c35)
  4641.     call    l2b8d
  4642.     ld    a,(hl)
  4643.     ld    (l2c3a),a
  4644.     ld    a,(l2c36)
  4645.     add    a,(hl)
  4646.     jp    m,l26a8
  4647.     ld    (hl),a
  4648. l26f3:
  4649.     ld    a,(l2c39)
  4650.     or    a
  4651.     jp    z,l2523
  4652.     ld    hl,l2c0b
  4653.     ld    de,l2c0f
  4654.     ld    bc,4
  4655.     ldir
  4656.     jp    l2523
  4657. l2709:
  4658.     ld    a,0ffh
  4659.     ld    (l2c36),a
  4660.     ld    a,(l2a81)
  4661.     ld    hl,l2c35
  4662.     inc    (hl)
  4663.     cp    (hl)
  4664.     jp    nc,l2721
  4665.     ld    a,0ffh
  4666.     ld    (l2c38),a
  4667.     jp    l2523
  4668. l2721:
  4669.     ld    a,(hl)
  4670.     ld    hl,l2c13
  4671.     call    l2b8d
  4672.     ld    a,(hl)
  4673.     ld    (l2c3b),a
  4674.     jp    l26de
  4675. l272f:
  4676.     ld    hl,l2c0b
  4677.     ld    bc,0403h
  4678.     call    l2c84
  4679.     xor    a
  4680.     ld    (l2be8),a
  4681.     ld    hl,(l2bf8)
  4682.     add    hl,hl
  4683.     add    hl,hl
  4684.     ld    a,0fh
  4685.     call    l2b8d
  4686.     ld    de,l2c0b
  4687.     ld    (l2c02),hl
  4688.     ld    hl,0
  4689.     ld    (l2c04),hl
  4690.     ld    hl,l2c02
  4691.     ld    b,4
  4692.     call    l2b92
  4693.     ex    de,hl
  4694.     ld    a,(hl)
  4695.     or    7fh
  4696.     ld    (hl),a
  4697.     ex    de,hl
  4698.     ld    (hl),1
  4699.     push    hl
  4700.     inc    hl
  4701.     xor    a
  4702.     ld    (hl),a
  4703.     inc    hl
  4704.     ld    (hl),a
  4705.     inc    hl
  4706.     ld    (hl),a
  4707.     pop    hl
  4708.     ld    b,4
  4709.     call    l2b92
  4710.     ex    de,hl
  4711.     ld    bc,0407h
  4712.     call    l2c84
  4713.     ld    hl,l2bff
  4714.     ld    bc,0307h
  4715.     call    l2c84
  4716.     ld    de,(l2bff)
  4717.     ld    hl,(l2c0b)
  4718.     call    cmp_hl_de
  4719.     ld    a,3
  4720.     jp    nc,l2790
  4721.     xor    a
  4722. l2790:
  4723.     ld    hl,(l2c82)
  4724.     ld    sp,hl
  4725.     ld    hl,(l2c0b)
  4726.     ret
  4727. l2798:
  4728.     ld    a,(l2be8)
  4729.     or    a
  4730.     jp    z,l27a1
  4731.     xor    a
  4732.     ret
  4733. l27a1:
  4734.     ld    (l2c44),hl
  4735.     ld    hl,0
  4736.     add    hl,sp
  4737.     ld    (l2c82),hl
  4738.     ld    sp,l2c82
  4739.     ld    hl,lff76
  4740.     call    l28fe
  4741.     ld    hl,(l2bfd)
  4742.     call    l28fe
  4743.     ex    de,hl
  4744.     ld    hl,0
  4745.     call    l2ba1
  4746.     ld    (l2bfd),hl
  4747.     ld    hl,(l2c44)
  4748.     inc    hl
  4749.     ld    b,8
  4750. l27ca:
  4751.     ld    a,(hl)
  4752.     cp    ' '
  4753.     jp    z,l27d8
  4754.     call    l2903
  4755.     inc    hl
  4756.     djnz    l27ca
  4757. l27d8:
  4758.     ld    a,'.'
  4759.     call    l2903
  4760.     ld    a,b
  4761.     call    l2b8d
  4762.     ld    b,3
  4763. l27e3:
  4764.     ld    a,(hl)
  4765.     cp    ' '
  4766.     jp    z,l27f1
  4767.     call    l2903
  4768.     inc    hl
  4769.     djnz    l27e3
  4770. l27f1:
  4771.     xor    a
  4772.     call    l2903
  4773.     ld    hl,(l2bf8)
  4774.     call    l28fe
  4775.     add    hl,hl
  4776.     add    hl,hl
  4777.     ex    de,hl
  4778.     ld    hl,(l2be9)
  4779. l2801:
  4780.     ld    a,(hl)
  4781.     call    l2903
  4782.     inc    hl
  4783.     dec    de
  4784.     ld    a,d
  4785.     or    e
  4786.     jp    nz,l2801
  4787.     xor    a
  4788.     ld    (l2bec),a
  4789.     ld    (l2bee),a
  4790.     ld    a,8
  4791.     ld    (l2beb),a
  4792.     call    l2b63
  4793.     jp    l2876
  4794. l281e:
  4795.     call    l2b63
  4796.     jp    z,l287f
  4797.     ld    hl,l2bed
  4798.     cp    (hl)
  4799.     jp    z,l2859
  4800.     inc    hl
  4801.     inc    (hl)
  4802.     dec    (hl)
  4803.     jp    z,l2876
  4804.     push    af
  4805.     ld    a,(hl)
  4806.     ld    (hl),0
  4807.     cp    3
  4808.     jp    nc,l284a
  4809.     ld    b,a
  4810.     dec    hl
  4811.     ld    a,(hl)
  4812. l283d:
  4813.     push    af
  4814.     call    l28c5
  4815.     pop    af
  4816.     djnz    l283d
  4817.     pop    af
  4818.     jp    l2876
  4819. l284a:
  4820.     push    af
  4821.     ld    a,90h
  4822.     call    l28ce
  4823.     pop    af
  4824.     inc    a
  4825.     call    l28ce
  4826.     pop    af
  4827.     jp    l2876
  4828. l2859:
  4829.     cp    90h
  4830.     jp    z,l2876
  4831.     inc    hl
  4832.     inc    (hl)
  4833.     ld    a,(hl)
  4834.     cp    0ffh
  4835.     jp    nz,l281e
  4836.     push    hl
  4837.     ld    a,90h
  4838.     call    l28ce
  4839.     pop    hl
  4840.     ld    a,(hl)
  4841.     ld    (hl),0
  4842.     call    l28ce
  4843.     ld    a,(l2bed)
  4844. l2876:
  4845.     ld    (l2bed),a
  4846.     call    l28c5
  4847.     jp    l281e
  4848. l287f:
  4849.     ld    a,(l2bee)
  4850.     or    a
  4851.     jp    z,l2891
  4852.     push    af
  4853.     ld    a,90h
  4854.     call    l28ce
  4855.     pop    af
  4856.     inc    a
  4857.     call    l28ce
  4858. l2891:
  4859.     ld    a,0ffh
  4860.     call    l2b81
  4861.     inc    hl
  4862.     inc    hl
  4863.     inc    hl
  4864.     call    l28d3
  4865.     ld    a,(l2beb)
  4866.     cp    8
  4867.     jp    z,l28b0
  4868.     ld    b,a
  4869.     ld    a,(l2bec)
  4870. l28a8:
  4871.     rra
  4872.     djnz    l28a8
  4873.     call    l2903
  4874. l28b0:
  4875.     ld    a,0ffh
  4876.     ld    (l2be8),a
  4877.     ld    hl,(l2bfd)
  4878.     ld    a,h
  4879.     or    l
  4880.     ld    a,1
  4881.     jp    nz,l28c0
  4882.     xor    a
  4883. l28c0:
  4884.     ld    hl,(l2c82)
  4885.     ld    sp,hl
  4886.     ret
  4887. l28c5:
  4888.     cp    90h
  4889.     jp    nz,l28ce
  4890.     call    l28ce
  4891.     xor    a
  4892. l28ce:
  4893.     push    bc
  4894.     call    l2b81
  4895.     pop    bc
  4896. l28d3:
  4897.     push    bc
  4898.     ld    b,(hl)
  4899.     inc    hl
  4900.     ld    e,(hl)
  4901.     inc    hl
  4902.     ld    d,(hl)
  4903.     ld    a,(l2beb)
  4904.     ld    c,a
  4905. l28dd:
  4906.     ld    a,e
  4907.     rla
  4908.     ld    e,a
  4909.     ld    a,d
  4910.     rla
  4911.     ld    d,a
  4912.     ld    a,(l2bec)
  4913.     rra
  4914.     dec    c
  4915.     jp    nz,l28f1
  4916.     call    l2903
  4917.     ld    c,8
  4918.     xor    a
  4919. l28f1:
  4920.     ld    (l2bec),a
  4921.     djnz    l28dd
  4922.     ld    a,c
  4923.     ld    (l2beb),a
  4924.     pop    bc
  4925.     ret
  4926. l28fe:
  4927.     ld    a,l
  4928.     call    l2903
  4929.     ld    a,h
  4930. l2903:
  4931.     push    bc
  4932.     push    de
  4933.     push    hl
  4934.     call    l18ce
  4935.     pop    hl
  4936.     pop    de
  4937.     pop    bc
  4938.     ret
  4939. l290d:
  4940.     push    af
  4941.     push    bc
  4942.     ld    a,(l2c38)
  4943.     or    a
  4944.     jp    z,l2949
  4945.     ld    a,(l2bf4)
  4946.     ld    de,(l2bf8)
  4947.     ld    hl,(l2bf6)
  4948.     ld    b,a
  4949.     ld    a,(l2bfa)
  4950.     ld    c,a
  4951. l2925:
  4952.     ld    (hl),e
  4953.     inc    hl
  4954.     ld    (hl),d
  4955.     inc    hl
  4956.     ld    a,l
  4957.     and    2
  4958.     jp    nz,l2930
  4959.     inc    c
  4960. l2930:
  4961.     inc    de
  4962.     ld    a,d
  4963.     or    a
  4964.     jp    z,l293a
  4965.     cp    e
  4966.     jp    z,l2960
  4967. l293a:
  4968.     djnz    l2925
  4969.     ld    (l2bf6),hl
  4970.     ex    de,hl
  4971.     ld    (l2bf8),hl
  4972.     ld    a,c
  4973.     ld    (l2bfa),a
  4974. l2949:
  4975.     ld    hl,l2bed
  4976.     inc    (hl)
  4977.     ld    a,(hl)
  4978.     cp    11h
  4979.     jp    nc,l2960
  4980.     xor    a
  4981.     ld    (l2bee),a
  4982.     ld    hl,l2bf4
  4983.     ld    a,(hl)
  4984.     add    a,a
  4985.     ld    (hl),a
  4986.     pop    bc
  4987.     pop    af
  4988.     ret
  4989. l2960:
  4990.     pop    bc
  4991.     pop    af
  4992.     pop    hl
  4993.     ld    a,(l2a81)
  4994.     dec    a
  4995.     ld    b,a
  4996.     jp    nz,l2970
  4997.     ld    a,4
  4998.     jp    p,l2790
  4999. l2970:
  5000.     ld    a,(l2c38)
  5001.     or    a
  5002.     jp    nz,l297e
  5003.     ld    a,(l2c37)
  5004.     or    a
  5005.     jp    nz,l26a4
  5006. l297e:
  5007.     ld    hl,l2a81
  5008.     ld    (hl),b
  5009.     ld    a,(l2c38)
  5010.     or    a
  5011.     jp    z,l2523
  5012.     xor    a
  5013.     ld    (l2c38),a
  5014.     ld    (l2c37),a
  5015.     jp    l2523
  5016. l2993:
  5017.     push    af
  5018.     call    l2b81
  5019. l2997:
  5020.     ld    a,(l2bed)
  5021.     ld    (hl),a
  5022.     inc    hl
  5023.     push    hl
  5024.     ld    hl,(l2bf2)
  5025.     dec    hl
  5026.     ld    (l2c07),a
  5027.     ld    de,l2c05
  5028.     ld    bc,3
  5029.     xor    a
  5030.     ld    (de),a
  5031.     dec    de
  5032.     lddr
  5033.     ld    hl,0
  5034.     ld    (l2c08),hl
  5035.     ld    (l2c09),hl
  5036.     ld    b,4
  5037.     ld    de,l2c07
  5038.     ld    hl,l2c02
  5039.     call    l2d65
  5040.     ld    de,l2c0b
  5041.     ld    hl,l2c02
  5042.     ld    b,4
  5043.     call    l2b92
  5044.     ld    a,(l2bed)
  5045.     ld    hl,l2c24
  5046.     call    l2b8d
  5047.     inc    (hl)
  5048.     ld    hl,l2bf4
  5049.     dec    (hl)
  5050.     ld    a,(l2c38)
  5051.     or    a
  5052.     jp    nz,l29e7
  5053.     pop    hl
  5054.     pop    af
  5055.     ret
  5056. l29e7:
  5057.     ld    hl,(l2bf6)
  5058.     ld    de,0
  5059.     ld    (hl),0ffh
  5060.     ld    a,(l2bfa)
  5061.     ld    c,a
  5062. l29f3:
  5063.     ld    a,l
  5064.     and    2
  5065.     jp    z,l29fa
  5066.     scf
  5067. l29fa:
  5068.     ld    a,d
  5069.     rra
  5070.     ld    d,a
  5071.     ld    a,e
  5072.     rra
  5073.     ld    e,a
  5074.     ld    a,(hl)
  5075.     cp    3
  5076.     jp    c,l2a1f
  5077.     ld    b,c
  5078. l2a07:
  5079.     dec    hl
  5080.     ld    a,(hl)
  5081.     dec    hl
  5082.     push    af
  5083.     ld    a,l
  5084.     and    2
  5085.     jp    z,l2a12
  5086.     dec    c
  5087. l2a12:
  5088.     pop    af
  5089.     or    a
  5090.     jp    nz,l2a07
  5091.     ld    a,(hl)
  5092.     cp    b
  5093.     jp    z,l29f3
  5094.     jp    l2a07
  5095. l2a1f:
  5096.     pop    hl
  5097.     ld    (hl),e
  5098.     inc    hl
  5099.     ld    (hl),d
  5100.     ld    hl,(l2bf6)
  5101.     pop    af
  5102.     cpl
  5103.     ld    (hl),a
  5104.     inc    hl
  5105.     ld    (hl),0ffh
  5106.     inc    hl
  5107.     ld    (l2bf6),hl
  5108.     ld    a,l
  5109.     and    2
  5110.     ret    nz
  5111.     ld    hl,l2bfa
  5112.     inc    (hl)
  5113.     ret
  5114. l2a39:
  5115.     ld    a,0ffh
  5116.     call    l2b81
  5117.     inc    hl
  5118.     inc    hl
  5119.     inc    hl
  5120.     push    hl
  5121.     ld    hl,l2a49
  5122.     ex    (sp),hl
  5123.     call    l2997
  5124. l2a49:
  5125.     ld    hl,(l2bf6)
  5126.     ld    a,0feh
  5127.     dec    hl
  5128.     ld    (hl),a
  5129.     dec    hl
  5130.     inc    a
  5131.     ld    (hl),a
  5132.     ret
  5133. l2a54:
  5134.     ld    hl,(l2bf0)
  5135.     ld    a,l
  5136.     or    h
  5137.     ret    z
  5138.     dec    hl
  5139.     ld    (l2bf0),hl
  5140.     ld    hl,(l2bf2)
  5141.     ld    a,(hl)
  5142.     inc    hl
  5143.     ld    d,h
  5144.     ld    e,l
  5145.     inc    hl
  5146.     inc    hl
  5147.     inc    hl
  5148.     ld    (l2bf2),hl
  5149.     ret
  5150. l2a6c:
  5151.     ld    a,(l2bef)
  5152.     ld    l,a
  5153.     ld    h,0
  5154.     or    a
  5155.     jp    nz,l2a77
  5156.     inc    h
  5157. l2a77:
  5158.     ld    (l2bf0),hl
  5159.     ld    hl,(l2c40)
  5160.     ld    (l2bf2),hl
  5161.     ret
  5162. l2a81:
  5163.     db    00h
  5164. l2a82:
  5165.     db    80h,40h,20h,10h,08h,04h,02h
  5166. l2a89:
  5167.     db    0ffh,0ffh
  5168.     db    000h,30h
  5169.     db    000h,18h
  5170.     db    000h,0ch
  5171.     db    000h,06h
  5172.     db    000h,03h
  5173.     db    080h,01h
  5174.     db    0c0h,00h
  5175.     db    060h,00h
  5176.     db    030h,00h
  5177.     db    018h,00h
  5178.     db    00ch,00h
  5179.     db    006h,00h
  5180.     db    003h,00h
  5181.  
  5182. l2aa5:
  5183.     push    af
  5184.     call    l2ad4
  5185.     ld    de,(l2c02)
  5186.     ld    c,1
  5187.     ld    hl,l2a89
  5188.     ld    a,(l2a81)
  5189.     ld    b,a
  5190. l2ab6:
  5191.     ld    a,(hl)
  5192.     inc    hl
  5193.     push    hl
  5194.     ld    h,(hl)
  5195.     ld    l,a
  5196.     call    l2ba1
  5197.     pop    hl
  5198.     jp    c,l2acd
  5199.     inc    c
  5200.     inc    hl
  5201.     djnz    l2ab6
  5202.     pop    af
  5203.     ld    b,a
  5204.     xor    a
  5205.     ld    a,b
  5206.     ret
  5207. l2acd:
  5208.     pop    af
  5209.     or    a
  5210.     ret    nz
  5211.     dec    a
  5212.     ld    a,0
  5213.     ret
  5214. l2ad4:
  5215.     ex    de,hl
  5216.     ld    de,l2c02
  5217.     push    de
  5218.     xor    a
  5219.     ld    (de),a
  5220.     inc    de
  5221.     ld    (de),a
  5222.     inc    de
  5223.     ld    bc,3
  5224.     ldir
  5225.     pop    hl
  5226.     ld    de,l2be3
  5227.     ld    b,5
  5228.     jp    l2ca4
  5229. l2aed:
  5230.     ld    b,0
  5231. l2aef:
  5232.     sub    3
  5233.     jp    c,l2af8
  5234.     inc    b
  5235.     jp    l2aef
  5236. l2af8:
  5237.     ld    a,b
  5238.     ret
  5239. l2afa:
  5240.     ld    hl,l2be3
  5241.     inc    (hl)
  5242.     ret    nz
  5243.     inc    hl
  5244.     inc    (hl)
  5245.     ret    nz
  5246.     inc    hl
  5247.     inc    (hl)
  5248.     ret    nz
  5249.     inc    hl
  5250.     inc    (hl)
  5251.     ret
  5252. l2b08:
  5253.     cp    90h
  5254.     jp    nz,l2b11
  5255.     call    l2b11
  5256.     xor    a
  5257. l2b11:
  5258.     call    l2afa
  5259.     ld    l,a
  5260.     ld    h,0
  5261.     add    hl,hl
  5262.     add    hl,hl
  5263.     ld    de,(l2c3e)
  5264.     add    hl,de
  5265.     inc    (hl)
  5266.     ret    nz
  5267.     inc    hl
  5268.     inc    (hl)
  5269.     ret    nz
  5270.     inc    hl
  5271.     inc    (hl)
  5272.     ret
  5273. l2b26:
  5274.     xor    a
  5275.     ld    b,a
  5276.     ld    c,a
  5277.     ld    hl,(l2c3e)
  5278. l2b2c:
  5279.     ld    (hl),a
  5280.     inc    hl
  5281.     ld    (hl),a
  5282.     inc    hl
  5283.     ld    (hl),a
  5284.     inc    hl
  5285.     ld    (hl),c
  5286.     inc    hl
  5287.     inc    c
  5288.     djnz    l2b2c
  5289.     ld    hl,l2be3
  5290.     ld    (hl),a
  5291.     inc    hl
  5292.     ld    (hl),a
  5293.     inc    hl
  5294.     ld    (hl),a
  5295.     inc    hl
  5296.     ld    (hl),a
  5297.     inc    hl
  5298.     ld    hl,l2be3
  5299.     ld    de,l2bff
  5300.     ld    bc,4
  5301.     ldir
  5302.     ld    hl,0
  5303.     ld    (l2bfd),hl
  5304.     ret
  5305.  
  5306. l2b57:
  5307.     call    l2b63
  5308.     ret    z
  5309.     ld    l,a
  5310.     push    hl
  5311.     call    l2b63
  5312.     pop    hl
  5313.     ld    h,a
  5314.     ret
  5315.  
  5316. l2b63:
  5317.     call    l196e
  5318.     jp    z,l2b6b
  5319.     cp    a
  5320.     ret
  5321.  
  5322. l2b6b:
  5323.     push    af
  5324.     ld    hl,(l2bfd)
  5325.     call    l2b8d
  5326.     ld    (l2bfd),hl
  5327.     pop    af
  5328.     ld    hl,l2bff
  5329.     inc    (hl)
  5330.     ret    nz
  5331.     inc    hl
  5332.     inc    (hl)
  5333.     ret    nz
  5334.     inc    hl
  5335.     inc    (hl)
  5336.     ret
  5337. l2b81:
  5338.     ld    hl,(l2c3e)
  5339.     ld    b,a
  5340.     call    l2b8d
  5341.     ld    a,b
  5342.     call    l2b8d
  5343.     ld    a,b
  5344. l2b8d:
  5345.     add    a,l
  5346.     ld    l,a
  5347.     ret    nc
  5348.     inc    h
  5349.     ret
  5350.  
  5351. l2b92:
  5352.     push    hl
  5353.     push    de
  5354.     or    a
  5355. l2b95:
  5356.     ld    a,(de)
  5357.     adc    a,(hl)
  5358.     ld    (de),a
  5359.     inc    de
  5360.     inc    hl
  5361.     djnz    l2b95
  5362.     pop    de
  5363.     pop    hl
  5364.     ret
  5365. l2ba1:
  5366.     ld    a,l
  5367.     sub    e
  5368.     ld    l,a
  5369.     ld    a,h
  5370.     sbc    a,d
  5371.     ld    h,a
  5372.     ret
  5373. l2bae:
  5374.     inc    hl
  5375.     inc    hl
  5376.     ld    a,(hl)
  5377.     cp    c
  5378.     ret    nz
  5379.     dec    hl
  5380.     ld    a,(hl)
  5381.     cp    d
  5382.     ret    nz
  5383.     dec    hl
  5384.     ld    a,(hl)
  5385.     cp    e
  5386.     ret
  5387. l2bbb:
  5388.     ld    c,b
  5389.     ld    b,0
  5390.     add    hl,bc
  5391.     ex    de,hl
  5392.     add    hl,bc
  5393. l2bc1:
  5394.     dec    hl
  5395.     dec    de
  5396.     ld    a,(de)
  5397.     cp    (hl)
  5398.     ret    nz
  5399.     dec    c
  5400.     jp    nz,l2bc1
  5401.     cp    (hl)
  5402.     ret
  5403. ;
  5404. l2c84:
  5405.     ld    a,c
  5406.     or    a
  5407.     ret    z
  5408.     ld    a,b
  5409.     or    a
  5410.     ret    z
  5411.     ld    e,b
  5412.     ld    d,0
  5413.     add    hl,de
  5414.     dec    hl
  5415.     or    a
  5416. l2c90:
  5417.     push    af
  5418.     ld    b,a
  5419.     ld    e,l
  5420.     ld    d,h
  5421. l2c94:
  5422.     rr    (hl)
  5423.     dec    hl
  5424.     djnz    l2c94
  5425.     ld    l,e
  5426.     ld    h,d
  5427.     pop    af
  5428.     dec    c
  5429.     jp    nz,l2c90
  5430.     ret
  5431. l2ca4:
  5432.     ld    a,b
  5433.     or    a
  5434.     jp    z,l2d47
  5435.     ld    (l2d4c),hl
  5436.     ld    (l2d4e),de
  5437.     ld    c,b
  5438.     ld    l,c
  5439.     ld    h,0
  5440.     add    hl,hl
  5441.     add    hl,hl
  5442.     add    hl,hl
  5443.     inc    hl
  5444.     ld    (l2d54),hl
  5445.     ld    hl,l2d57
  5446.     ld    de,l2d5e
  5447.     ld    b,c
  5448.     xor    a
  5449. l2cc3:
  5450.     ld    (hl),a
  5451.     ld    (de),a
  5452.     inc    hl
  5453.     inc    de
  5454.     djnz    l2cc3
  5455.  
  5456.     ld    hl,l2d57
  5457.     ld    (l2d50),hl
  5458.     ld    hl,l2d5e
  5459.     ld    (l2d52),hl
  5460.     ld    hl,(l2d4e)
  5461.     ld    b,c
  5462.     xor    a
  5463. l2cdc:
  5464.     or    (hl)
  5465.     inc    hl
  5466.     djnz    l2cdc
  5467.     or    a
  5468.     jp    z,l2d43
  5469.     or    a
  5470. l2ce7:
  5471.     ld    b,c
  5472.     ld    hl,(l2d4c)
  5473. l2ceb:
  5474.     rl    (hl)
  5475.     inc    hl
  5476.     djnz    l2ceb
  5477.     ld    hl,l2d54
  5478.     dec    (hl)
  5479.     jp    nz,l2cff
  5480.     inc    hl
  5481.     dec    (hl)
  5482.     jp    m,l2d47
  5483. l2cff:
  5484.     ld    hl,(l2d50)
  5485.     ld    b,c
  5486. l2d03:
  5487.     rl    (hl)
  5488.     inc    hl
  5489.     djnz    l2d03
  5490.     push    bc
  5491.     ld    a,c
  5492.     ld    (l2d56),a
  5493.     ld    hl,(l2d52)
  5494.     ld    b,h
  5495.     ld    c,l
  5496.     ld    de,(l2d50)
  5497.     ld    hl,(l2d4e)
  5498.     or    a
  5499. l2d1d:
  5500.     ld    a,(de)
  5501.     sbc    a,(hl)
  5502.     ld    (bc),a
  5503.     inc    hl
  5504.     inc    de
  5505.     inc    bc
  5506.     ld    a,(l2d56)
  5507.     dec    a
  5508.     ld    (l2d56),a
  5509.     jp    nz,l2d1d
  5510.     pop    bc
  5511.     ccf
  5512.     jp    nc,l2ce7
  5513.     ld    de,(l2d50)
  5514.     ld    hl,(l2d52)
  5515.     ld    (l2d50),hl
  5516.     ex    de,hl
  5517.     ld    (l2d52),hl
  5518.     jp    l2ce7
  5519.  
  5520. l2d43:
  5521.     scf
  5522.     jr    l2d48
  5523. l2d47:
  5524.     or    a
  5525. l2d48:
  5526.     ld    hl,(l2d50)
  5527.     ret
  5528. ;
  5529. l2d65:
  5530.     ld    a,b
  5531.     or    a
  5532.     ret    z
  5533.     ld    c,b
  5534.     ld    b,0
  5535.     add    hl,bc
  5536.     ex    de,hl
  5537.     ld    (l2dcd),hl
  5538.     ld    hl,l2dcf
  5539.     add    hl,bc
  5540.     ld    (l2dcb),hl
  5541.     ld    l,c
  5542.     ld    h,b
  5543.     add    hl,hl
  5544.     add    hl,hl
  5545.     add    hl,hl
  5546.     inc    hl
  5547.     ld    (l2dc9),hl
  5548.     ld    b,c
  5549.     ld    hl,l2dcf
  5550. l2d84:
  5551.     ld    (hl),0
  5552.     inc    hl
  5553.     djnz    l2d84
  5554.     or    a
  5555. l2d8c:
  5556.     ld    b,c
  5557.     ld    hl,(l2dcb)
  5558. l2d90:
  5559.     dec    hl
  5560.     rr    (hl)
  5561.     djnz    l2d90
  5562.     ld    l,e
  5563.     ld    h,d
  5564.     ld    b,c
  5565. l2d9b:
  5566.     dec    hl
  5567.     rr    (hl)
  5568.     djnz    l2d9b
  5569.     jp    nc,l2dba
  5570.     push    de
  5571.     ld    de,(l2dcd)
  5572.     ld    hl,l2dcf
  5573.     ld    b,c
  5574.     or    a
  5575. l2db0:
  5576.     ld    a,(de)
  5577.     adc    a,(hl)
  5578.     ld    (hl),a
  5579.     inc    de
  5580.     inc    hl
  5581.     djnz    l2db0
  5582.     pop    de
  5583. l2dba:
  5584.     ld    hl,l2dc9
  5585.     dec    (hl)
  5586.     jp    nz,l2d8c
  5587.     inc    hl
  5588.     inc    (hl)
  5589.     dec    (hl)
  5590.     ret    z
  5591.     dec    (hl)
  5592.     jp    l2d8c
  5593. ;
  5594. title_msg:
  5595.     db    tab,tab            ;'Z80 Turbo SWEEP  '
  5596. vers_date
  5597.     db    cr,lf,lf,'$'
  5598. main_menu:
  5599.     db    TAB,TAB,TAB,'C O M M A N D    M E N U'
  5600.     db    cr,lf,lf
  5601.     db    TAB,'A - Retag files         |  B - Back one file'
  5602.     db    cr,lf
  5603.     db    TAB,'C - Copy file           |  D - Delete file'
  5604.     db    cr,lf
  5605.     db    tab,'E - Erase T/U files     |  F - Find file'
  5606.     db    cr,lf
  5607.     db    tab,'L - Log new disk/user   |  M - Mass file copy'
  5608.     db    cr,lf
  5609.     db    tab,'P - Print file          |  Q - Squeeze/Unsqueeze tagged files'
  5610.     db    cr,lf
  5611.     db    tab,'R - Rename file(s)      |  S - Check remaining space'
  5612.     db    cr,lf
  5613.     db    tab,'T - Tag file for mass   |  U - Untag file'
  5614.     db    cr,lf
  5615.     db    tab,'V - View file           |  W - Wildcard tag of files'
  5616.     db    cr,lf
  5617.     db    tab,'X - Exit to CP/M        |  Y - Set file attributes.'
  5618.     db    cr,lf
  5619.     db    tab,'? - Display this help   |  cr, sp - Forward one file'
  5620.     db    cr,lf,lf,lf,'$'
  5621. ;
  5622. chr_strg_bfr:
  5623.     db    12h
  5624. cmd_strg_cnt:
  5625.     db    0
  5626. cmd_strg_dat:
  5627.     db    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5628. ;
  5629. rst_sav:
  5630.     ds    3        ;save address for possible rst address
  5631. l2374:    db    0
  5632. l2375:    db    0
  5633. l2376:    db    0
  5634. l2377:    db    0
  5635. l2378:    dw    0
  5636. l237a:    dw    0
  5637. l237c:    dw    0
  5638. l237e:    dw    0
  5639. l2380:    dw    0
  5640. ;
  5641. l2be2:    db    4
  5642. l2be3:    db    0,0,0,0,0
  5643. l2be8:    db    0ffh
  5644. l2be9:    dw    0
  5645. l2beb:    db    0
  5646. l2bec:    db    0
  5647. l2bed:    db    0
  5648. l2bee:    db    0
  5649. l2bef:    db    0
  5650. l2bf0:    dw    0
  5651. l2bf2:    dw    0
  5652. l2bf4:    db    0
  5653. l2bf5:    db    0
  5654. l2bf6:    dw    0
  5655. l2bf8:    dw    0
  5656. l2bfa:    db    0
  5657. l2bfb:    dw    0
  5658. l2bfd:    dw    0
  5659. l2bff:    db    0,0,0
  5660. l2c02:    dw    0
  5661. l2c04:    db    0
  5662. l2c05:    dw    0
  5663. l2c07:    db    0
  5664. l2c08:    db    0
  5665. l2c09:    dw    0
  5666. l2c0b:    dw    0
  5667. l2c0d:    dw    0
  5668. l2c0f:    db    0,0,0,0
  5669. l2c13:    db    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5670. l2c24:    db    0
  5671. l2c25:    db    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5672. l2c35:    db    0
  5673. l2c36:    db    0
  5674. l2c37:    db    0
  5675. l2c38:    db    0
  5676. l2c39:    db    0
  5677. l2c3a:    db    0
  5678. l2c3b:    db    0
  5679. l2c3c:    db    0
  5680. l2c3d:    db    0
  5681. l2c3e:    dw    0
  5682. l2c40:    dw    0
  5683. l2c42:    dw    0
  5684. l2c44:    db    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5685.     db    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5686.     db    0,0,0,0,0,0
  5687. l2c82:    dw    0
  5688. ;
  5689. l2d4c:    dw    0
  5690. l2d4e:    dw    0
  5691. l2d50:    dw    0
  5692. l2d52:    dw    0
  5693. l2d54:    db    0,0
  5694. l2d56:    db    0
  5695. l2d57:    db    0,0,0,0,0,0,0
  5696. l2d5e:    db    0,0,0,0,0,0,0
  5697. ;
  5698. l2dc9:    dw    0
  5699. l2dcb:    dw    0
  5700. l2dcd:    dw    0
  5701. l2dcf:    db    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5702.     db    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5703. mpm_flag:
  5704.     db    0
  5705. l2e01:    db    0
  5706. l2e02:    dw    0
  5707. verif_flag:
  5708.     db    0
  5709. def_drive:
  5710.     db    0
  5711. cur_drv:
  5712.     db    0
  5713. def_usr:
  5714.     db    0
  5715. cur_user:
  5716.     db    0
  5717. l2e09:    dw    0
  5718. total_files:
  5719.     dw    0
  5720. tag_utag_flg:
  5721.     db    0
  5722. l2e0e:    db    0
  5723.     db    0
  5724. l2e10:    dw    0
  5725. fil_cntr:
  5726.     dw    0
  5727. l2e14:    dw    0
  5728. l2e16:    dw    0
  5729. l2e18:    dw    0
  5730. l2e1a:    dw    0
  5731. l2e1c:    dw    0
  5732. l2e1e:    dw    0
  5733. l2e20:    dw    0
  5734. l2e22:    dw    0
  5735. l2e24:    dw    0
  5736. l2e26:    dw    0
  5737. l2e28:    dw    0
  5738. l2e2a:    db    0
  5739. free_space:
  5740.     dw    0
  5741. used_space:
  5742.     dw    0
  5743. blk_siz_tagd:
  5744.     dw    0
  5745. k_siz_tagd:
  5746.     dw    0
  5747. lin_cntr:
  5748.     db    0
  5749. prompt_flag:
  5750.     db    0
  5751. l2e35:    dw    0
  5752. ram_top_adr:
  5753.     dw    0
  5754. new_drive:
  5755.     db    0
  5756. l2e3a:    db    0
  5757. new_user:
  5758.     db    0
  5759. bdos_func:
  5760.     db    0
  5761. l2e3d:    db    0
  5762. l2e3e:    dw    0
  5763. l2e40:    dw    0
  5764. l2e42:    dw    0
  5765. cmd_save:
  5766.     db    0
  5767. l2e45:    dw    0
  5768.     db    0
  5769. new_fil_fcb:
  5770.     db    0
  5771. new_fil_nam:
  5772.     db    0,0,0,0,0,0,0,0
  5773. l2e51:    db    0,0,0
  5774. l2e54:    db    0
  5775. l2e55:    db    0
  5776. l2e56:    db    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5777. int_fcb:
  5778.     db    0
  5779. dummy_fname:
  5780.     db    0,0,0,0,0,0,0,0
  5781. ext_1:    db    0
  5782. ext_2:    db    0
  5783. ext_3:    db    0
  5784. l2e7a:    db    0
  5785. l2e7b:    db    0,0,0
  5786. l2e7e:    db    0,0,0,0,0,0,0,0,0
  5787. l2e87:    db    0,0,0,0,0,0,0,0,0,0,0,0,0
  5788. l2e94:    db    0
  5789. l2e95:    db    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5790.     db    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5791. l2eba:    db    0
  5792. l2ebb:    db    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5793.     db    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5794. l2ee0:    db    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5795.     db    0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  5796. ;
  5797.     .dephase
  5798. ;
  5799.     end
  5800.