home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_asm / assign / assign5.asm < prev    next >
Encoding:
Assembly Source File  |  1992-08-11  |  64.7 KB  |  2,470 lines

  1. ;        Disassembly of file :ASSIGN.COM
  2. ;
  3. ;        Define common ASCII control codes.
  4. ;
  5. HT       EQU   9
  6. LF       EQU   10
  7. FF       EQU   12
  8. CR       EQU   13
  9. EOF      EQU   26
  10. ;
  11. ;        Define MSDOS/PCDOS functions.
  12. ;
  13. _SELDISK EQU   14
  14. _GETDISK EQU   25
  15. _GETVER  EQU   48
  16. _TSR     EQU   49
  17. _CLOSEH  EQU   62
  18. _DEALLOC EQU   73
  19. _EXIT    EQU   76
  20. _GETPSP  EQU   98
  21. ;
  22. ;      Macro to generate MSDOS/PCDOS calls.
  23. ;
  24. MSDOS    MACRO  name
  25.          IFDEF  &name
  26.          MOV    AH,&name
  27.          ENDIF
  28.          INT    21H
  29.          ENDM
  30. ;
  31. ;
  32. ;
  33. Code_Seg SEGMENT PUBLIC
  34. ;
  35.          ASSUME CS:Code_Seg,DS:Code_Seg
  36. ;
  37. ;   ENV STUFF ...
  38. ;
  39.          ORG   02CH
  40. L002CH:  DW    ?
  41. ;
  42.          ORG   00100H
  43. L0100H:  JMP   L072BH  
  44. L0103H:  DB    01H,02H,03H,04H,05H,06H
  45.          DB    07H,08H,09H,0AH,0BH,0CH
  46.          DB    0DH,0EH,0FH,10H,11H,12H
  47.          DB    13H,14H,15H,16H,17H,18H
  48.          DB    19H,1AH
  49. L011DH:  DB    0
  50. L011EH:  DB    0
  51. L011FH:  DW    0
  52. L0121H:  DB    0
  53. ;
  54. L0122H:  DW    0            ;INT 21H
  55. L0124H:  DW    0
  56. ;
  57. L0126H:  DW    0            ;INT 25H
  58. L0128H:  DW    0
  59. ;
  60. L012AH:  DW    0            ;INT 26H
  61. L012CH:  DW    0
  62. ;
  63. L012EH:  DW    0            ;INT 2FH
  64. L0130H:  DW    0
  65. ;
  66. L0132H:  DW    0
  67. L0134H:  DW    0
  68. ;
  69. L0136H:  DW    0
  70. ;
  71. L0138H:  DW    9000H
  72. ;
  73. ;           JUMP TABLE FOR INTERRUPT 21H
  74. ;
  75. L013AH:  DW    L0249H,024CH,024CH           ;0,1,2
  76.          DW    024CH,024CH,L024CH           ;3
  77.          DW    L024CH,L024CH,L024CH         ;6
  78.          DW    024CH,024CH,024CH            ;9
  79.          DW    024CH,L0249H,L0534H          ;0CH,0DH,0EH
  80.          DW    L0253H,L0253H,0253H          ;0FH
  81.          DW    0253H,0253H,0253H            ;12H
  82.          DW    L0253H,L0253H,L0253H
  83.          DW    L0249H,0523H,0249H
  84.          DW    0249H,0351H,L0249H
  85.          DW    L0249H,L0249H,L0249H
  86.          DW    0253H,0253H,0253H
  87.          DW    0253H,L0249H,L0249H
  88.          DW    L0253H,L0253H,0249H
  89.          DW    0249H,0249H,0249H
  90.          DW    L0249H,L0249H,L0249H
  91.          DW    L0249H,0249H,0351H
  92.          DW    0249H,0249H,L0249H
  93.          DW    L0351H,L0249H,L0249H
  94.          DW    02AEH,02AEH,02AEH
  95.          DW    02AEH,L02AEH,L0249H
  96.          DW    L0249H,L0249H,02AEH
  97.          DW    0249H,02AEH,03A6H
  98.          DW    L0249H,L0249H,L0351H
  99.          DW    L0249H,0249H,0249H
  100.          DW    044EH,0249H,L0249H
  101.          DW    L02AEH,L0249H,L0249H
  102.          DW    0249H,0249H,0249H
  103.          DW    0249H,L0249H,L04BBH
  104.          DW    L0249H,L0249H,0249H
  105.          DW    02AEH,02AEH,0249H
  106.          DW    L0249H,L0249H,L0249H
  107.          DW    L046BH,0249H,0249H           ;5EH,5FH,60H
  108.          DW    0249H,03FEH,03FEH            ;61H,62H,63H
  109.          DW    03FEH,03FEH,03FEH
  110.          DW    03FEH,024CH,024CH
  111.          DW    02FEH                        ;6AH
  112. ;
  113. ;
  114. ;       INTERRUPT 21H
  115. ;
  116. ;
  117. L0214H:  MOV   WORD PTR CS:[L0136H],0200H
  118.          PUSH  AX
  119.          PUSH  BX
  120.          CMP   AH,6CH
  121.          JA    L024CH                           ; exit to dos...
  122.          MOV   AL,AH
  123.          CBW                     ;Convert byte (AL) to word (AX).
  124.          SHL   AX,1
  125.          MOV   BX,AX
  126.          JMP   WORD PTR CS:[BX]+offset L013AH   ; jump on jump table..
  127. ;
  128. ;       CRITICAL SECTION STUFF ...
  129. ;
  130. L022EH:  CALL  L0241H  
  131.          PUSH  AX
  132.          MOV   AX,8008H
  133.          INT   2AH
  134.          POP   AX
  135.          RET
  136. ;
  137. L0239H:  PUSH  AX
  138.          MOV   AX,8108H
  139.          INT   2AH
  140.          POP   AX
  141.          RET
  142. ;
  143. L0241H:  PUSH  AX
  144.          MOV   AX,8908H
  145.          INT   2AH
  146.          POP   AX
  147.          RET
  148. ;
  149. L0249H:  CALL  L0241H  
  150. ;
  151. L024CH:  POP   BX                           ; EXIT INT 21H
  152.          POP   AX
  153.          JMP   DWORD PTR CS:[L0122H]
  154. ;
  155. L0253H:  MOV   BX,DX
  156.          MOV   AL,BYTE PTR [BX]
  157.          CMP   AL,0FFH
  158.          JNZ   L0260H  
  159.          ADD   BX,7
  160.          MOV   AL,BYTE PTR [BX]
  161. L0260H:  OR    AL,AL
  162.          JNZ   L0268H  
  163.          MOV   AL,BYTE PTR CS:[L011DH]
  164. L0268H:  CALL  L022EH  
  165.          MOV   BYTE PTR CS:[L011EH],AL
  166.          CALL  L05A2H  
  167.          MOV   BYTE PTR [BX],AL
  168.          MOV   WORD PTR CS:[L011FH],BX
  169.          POP   BX
  170.          POP   AX
  171.          POP   WORD PTR CS:[L0132H]
  172.          POP   WORD PTR CS:[L0134H]
  173.          CALL  L0576H  
  174.          CALL  DWORD PTR CS:[L0122H]
  175.          PUSHF                   ;Push flag register.
  176.          CALL  L058AH  
  177.          PUSH  AX
  178.          PUSH  BX
  179.          MOV   BX,WORD PTR CS:[L011FH]
  180.          MOV   AL,BYTE PTR CS:[L011EH]
  181.          MOV   BYTE PTR [BX],AL
  182.          POP   BX
  183.          POP   AX
  184.          PUSH  WORD PTR CS:[L0134H]
  185.          PUSH  WORD PTR CS:[L0132H]
  186.          CALL  L0239H  
  187.          IRET                    ;Return from interupt.
  188. ;
  189. L02AEH:  MOV   BX,DX
  190.          CMP   BYTE PTR [BX]+1,':'
  191.          JNZ   L024CH  
  192.          MOV   AL,BYTE PTR [BX]
  193.          CALL  L022EH  
  194.          MOV   BYTE PTR CS:[L011EH],AL
  195.          CALL  L05C4H  
  196.          MOV   BYTE PTR [BX],AL
  197.          MOV   WORD PTR CS:[L011FH],BX
  198.          POP   BX
  199.          POP   AX
  200.          POP   WORD PTR CS:[L0132H]
  201.          POP   WORD PTR CS:[L0134H]
  202.          CALL  L0576H  
  203.          CALL  DWORD PTR CS:[L0122H]
  204.          PUSHF                   ;Push flag register.
  205.          CALL  L058AH  
  206.          PUSH  AX
  207.          PUSH  BX
  208.          MOV   BX,WORD PTR CS:[L011FH]
  209.          MOV   AL,BYTE PTR CS:[L011EH]
  210.          MOV   BYTE PTR [BX],AL
  211.          POP   BX
  212.          POP   AX
  213.          PUSH  WORD PTR CS:[L0134H]
  214.          PUSH  WORD PTR CS:[L0132H]
  215.          CALL  L0239H  
  216.          IRET                    ;Return from interupt.
  217. L02FEH:  MOV   BX,SI
  218.          CMP   BYTE PTR [BX]+1,':'
  219.          JZ    L0309H  
  220.          JMP   L024CH  
  221. L0309H:  MOV   AL,BYTE PTR [BX]
  222.          CALL  L022EH  
  223.          MOV   BYTE PTR CS:[L011EH],AL
  224.          CALL  L05C4H  
  225.          MOV   BYTE PTR [BX],AL
  226.          MOV   WORD PTR CS:[L011FH],BX
  227.          POP   BX
  228.          POP   AX
  229.          POP   WORD PTR CS:[L0132H]
  230.          POP   WORD PTR CS:[L0134H]
  231.          CALL  L0576H  
  232.          CALL  DWORD PTR CS:[L0122H]
  233.          PUSHF                   ;Push flag register.
  234.          CALL  L058AH  
  235.          PUSH  AX
  236.          PUSH  BX
  237.          MOV   BX,WORD PTR CS:[L011FH]
  238.          MOV   AL,BYTE PTR CS:[L011EH]
  239.          MOV   BYTE PTR [BX],AL
  240.          POP   BX
  241.          POP   AX
  242.          PUSH  WORD PTR CS:[L0134H]
  243.          PUSH  WORD PTR CS:[L0132H]
  244.          CALL  L0239H  
  245.          IRET                    ;Return from interupt.
  246. ;
  247. L0351H:  OR    DL,DL
  248.          JNZ   L0358H  
  249.          JMP   L024CH  
  250. L0358H:  MOV   AL,DL
  251.          CALL  L022EH  
  252.          MOV   BYTE PTR CS:[L011EH],AL
  253.          CALL  L05A2H  
  254.          MOV   DL,AL
  255.          POP   BX
  256.          POP   AX
  257.          MOV   BYTE PTR CS:[L0138H],AH
  258.          POP   WORD PTR CS:[L0132H]
  259.          POP   WORD PTR CS:[L0134H]
  260.          CALL  L0576H  
  261.          CALL  DWORD PTR CS:[L0122H]
  262.          PUSHF                   ;Push flag register.
  263.          CALL  L058AH  
  264.          CMP   BYTE PTR CS:[L0138H],'6'
  265.          JZ    L0398H  
  266.          CMP   BYTE PTR CS:[L0138H],1CH
  267.          JZ    L0398H  
  268.          MOV   DL,BYTE PTR CS:[L011EH]
  269. L0398H:  PUSH  WORD PTR CS:[L0134H]
  270.          PUSH  WORD PTR CS:[L0132H]
  271.          CALL  L0239H  
  272.          IRET                    ;Return from interupt.
  273. ;
  274. L03A6H:  POP   BX
  275.          POP   AX
  276.          PUSH  AX
  277.          PUSH  BX
  278.          CMP   AX,4404H
  279.          JZ    L03BEH  
  280.          CMP   AX,4405H
  281.          JZ    L03BEH  
  282.          CMP   AX,4408H
  283.          JZ    L03BEH  
  284.          CMP   AX,4409H
  285.          JNZ   L03FBH  
  286. L03BEH:  OR    BX,BX
  287.          JZ    L03FBH  
  288.          MOV   AL,BL
  289.          CALL  L022EH  
  290.          MOV   BYTE PTR CS:[L011EH],AL
  291.          CALL  L05A2H  
  292.          MOV   BL,AL
  293.          POP   AX
  294.          POP   AX
  295.          POP   WORD PTR CS:[L0132H]
  296.          POP   WORD PTR CS:[L0134H]
  297.          CALL  L0576H  
  298.          CALL  DWORD PTR CS:[L0122H]
  299.          PUSHF                   ;Push flag register.
  300.          CALL  L058AH  
  301.          MOV   BL,BYTE PTR CS:[L011EH]
  302.          PUSH  WORD PTR CS:[L0134H]
  303.          PUSH  WORD PTR CS:[L0132H]
  304.          CALL  L0239H  
  305.          IRET                    ;Return from interupt.
  306. L03FBH:  JMP   L024CH  
  307. ;
  308. L03FEH:  POP   BX
  309.          POP   AX
  310.          PUSH  AX
  311.          PUSH  BX
  312.          CMP   AH,69H
  313.          JNZ   L044AH  
  314.          OR    BL,BL
  315.          JZ    L0445H  
  316.          MOV   AL,BL
  317.          CALL  L022EH  
  318.          MOV   BYTE PTR CS:[L011EH],AL
  319.          CALL  L05A2H  
  320.          MOV   BL,AL
  321.          POP   AX
  322.          POP   AX
  323.          POP   WORD PTR CS:[L0132H]
  324.          POP   WORD PTR CS:[L0134H]
  325.          CALL  L0576H  
  326.          CALL  DWORD PTR CS:[L0122H]
  327.          PUSHF                   ;Push flag register.
  328.          CALL  L058AH  
  329.          MOV   BL,BYTE PTR CS:[L011EH]
  330.          PUSH  WORD PTR CS:[L0134H]
  331.          PUSH  WORD PTR CS:[L0132H]
  332.          CALL  L0239H  
  333.          JMP   SHORT L0448H  
  334. L0445H:  JMP   L024CH  
  335. L0448H:  JMP   SHORT L044DH  
  336. L044AH:  JMP   L024CH  
  337. L044DH:  IRET                    ;Return from interupt.
  338. ;
  339. L044EH:  POP   BX
  340.          POP   AX
  341.          PUSH  AX
  342.          PUSH  BX
  343.          OR    AL,AL
  344.          JNZ   L0468H  
  345.          MOV   BX,DX
  346.          CMP   BYTE PTR [BX]+1,':'
  347.          JNZ   L0465H  
  348.          MOV   AL,BYTE PTR [BX]
  349.          CALL  L05C4H  
  350.          MOV   BYTE PTR [BX],AL
  351. L0465H:  JMP   L024CH  
  352. L0468H:  JMP   L02AEH  
  353. ;
  354. L046BH:  MOV   BX,SI
  355.          CMP   BYTE PTR [BX]+1,':'
  356.          JNZ   L0465H  
  357.          MOV   AL,BYTE PTR [BX]
  358.          CALL  L022EH  
  359.          MOV   BYTE PTR CS:[L011EH],AL
  360.          CALL  L05C4H  
  361.          MOV   BYTE PTR [BX],AL
  362.          MOV   WORD PTR CS:[L011FH],BX
  363.          POP   BX
  364.          POP   AX
  365.          POP   WORD PTR CS:[L0132H]
  366.          POP   WORD PTR CS:[L0134H]
  367.          CALL  L0576H  
  368.          CALL  DWORD PTR CS:[L0122H]
  369.          PUSHF                   ;Push flag register.
  370.          CALL  L058AH  
  371.          PUSH  AX
  372.          PUSH  BX
  373.          MOV   BX,WORD PTR CS:[L011FH]
  374.          MOV   AL,BYTE PTR CS:[L011EH]
  375.          MOV   BYTE PTR [BX],AL
  376.          POP   BX
  377.          POP   AX
  378.          PUSH  WORD PTR CS:[L0134H]
  379.          PUSH  WORD PTR CS:[L0132H]
  380.          CALL  L0239H  
  381.          IRET                    ;Return from interupt.
  382. ;
  383. L04BBH:  MOV   BX,DX
  384.          MOV   AX,WORD PTR [BX]
  385.          CALL  L022EH  
  386.          MOV   BYTE PTR CS:[L011EH],AL
  387.          MOV   WORD PTR CS:[L011FH],BX
  388.          CMP   AH,':'
  389.          JNZ   L04D5H  
  390.          CALL  L05C4H  
  391.          MOV   BYTE PTR [BX],AL
  392. L04D5H:  MOV   AX,WORD PTR ES:[DI]
  393.          MOV   BYTE PTR CS:[L0121H],AL
  394.          CMP   AH,':'
  395.          JNZ   L04E7H  
  396.          CALL  L05C4H  
  397.          MOV   BYTE PTR ES:[DI],AL
  398. L04E7H:  POP   BX
  399.          POP   AX
  400.          POP   WORD PTR CS:[L0132H]
  401.          POP   WORD PTR CS:[L0134H]
  402.          CALL  L0576H  
  403.          CALL  DWORD PTR CS:[L0122H]
  404.          PUSHF                   ;Push flag register.
  405.          CALL  L058AH  
  406.          PUSH  AX
  407. L0500H:  PUSH  BX
  408.          MOV   AL,BYTE PTR CS:[L0121H]
  409.          MOV   BYTE PTR ES:[DI],AL
  410.          MOV   BX,WORD PTR CS:[L011FH]
  411.          MOV   AL,BYTE PTR CS:[L011EH]
  412.          MOV   BYTE PTR [BX],AL
  413.          POP   BX
  414.          POP   AX
  415.          PUSH  WORD PTR CS:[L0134H]
  416.          PUSH  WORD PTR CS:[L0132H]
  417.          CALL  L0239H  
  418.          IRET                    ;Return from interupt.
  419. ;
  420. L0523H:  CALL  L0603H  
  421.          JNZ   L052BH  
  422.          JMP   L024CH  
  423. L052BH:  POP   BX
  424.          POP   AX
  425.          MOV   AL,BYTE PTR CS:[L011DH]
  426.          DEC   AL
  427.          IRET                    ;Return from interupt.
  428. ;
  429. ;       FUCTION 0EH , SELECT DISK
  430. ;
  431. L0534H:  POP   BX
  432.          POP   AX
  433.          MOV   AL,DL
  434.          INC   AL
  435.          CALL  L022EH  
  436.          MOV   BYTE PTR CS:[L011EH],AL
  437.          CALL  L05A2H  
  438.          DEC   AL
  439.          MOV   DL,AL
  440.          MOV   BYTE PTR CS:[L0121H],AL
  441.          PUSHF                   ;Push flag register.
  442.          CALL  DWORD PTR CS:[L0122H]
  443.          PUSH  AX
  444.          MOV   AH,19H
  445.          PUSHF                   ;Push flag register.
  446.          CALL  DWORD PTR CS:[L0122H]
  447.          MOV   DL,BYTE PTR CS:[L011EH]
  448.          DEC   DL
  449.          CMP   AL,BYTE PTR CS:[L0121H]
  450.          JNZ   L0571H  
  451.          MOV   AL,BYTE PTR CS:[L011EH]
  452.          MOV   BYTE PTR CS:[L011DH],AL
  453. L0571H:  POP   AX
  454.          CALL  L0239H  
  455.          IRET                    ;Return from interupt.
  456. ;
  457. L0576H:  PUSH  AX
  458.          PUSH  BP
  459.          MOV   BP,SP
  460.          MOV   AX,WORD PTR [BP]+6
  461.          AND   WORD PTR CS:[L0136H],AX
  462.          AND   WORD PTR [BP]+6,0FDFFH
  463.          POP   BP
  464.          POP   AX
  465.          RET
  466. ;
  467. L058AH:  PUSH  AX
  468.          PUSH  BP
  469.          MOV   BP,SP
  470.          MOV   AX,WORD PTR CS:[L0136H]
  471.          OR    WORD PTR [BP]+6,AX
  472.          POP   BP
  473.          POP   AX
  474.          RET
  475. ;
  476. L0598H:  INC   AL
  477.          JZ    L059FH  
  478.          CALL  L05A2H  
  479. L059FH:  DEC   AL
  480.          RET
  481. ;
  482. L05A2H:  CMP   AL,EOF
  483.          JA    L05C3H  
  484.          CMP   AL,0
  485.          JNZ   L05B2H  
  486.          MOV   AL,BYTE PTR CS:[L011DH]
  487.          MOV   BYTE PTR CS:[L011EH],AL
  488. L05B2H:  PUSH  BX
  489.          PUSH  CX
  490.          MOV   CH,AH
  491.          CBW                     ;Convert byte (AL) to word (AX).
  492.          MOV   BX,0102H
  493.          ADD   BX,AX
  494.          MOV   AL,BYTE PTR CS:[BX]
  495.          MOV   AH,CH
  496.          POP   CX
  497.          POP   BX
  498. L05C3H:  RET
  499. ;
  500. L05C4H:  CMP   AL,'A'
  501.          JC    L05DDH  
  502.          CMP   AL,'Z'
  503.          JBE   L05D4H  
  504.          CMP   AL,'a'
  505.          JC    L05DDH  
  506.          CMP   AL,'z'
  507.          JA    L05DDH  
  508. L05D4H:  OR    AL,20H
  509.          SUB   AL,60H
  510.          CALL  L05A2H  
  511.          ADD   AL,40H
  512. L05DDH:  RET
  513. ;
  514. ;
  515. ;
  516. ;
  517. ;       INTERRUPT 25H
  518. ;
  519. L05DEH:  CALL  L0598H  
  520.          JMP   DWORD PTR CS:[L0126H]
  521. ;
  522. ;       INTERRUPT 26H
  523. ;
  524. L05E6H:  CALL  L0598H  
  525.          JMP   DWORD PTR CS:[L012AH]
  526. ;
  527. ;       INTERRUPT 2FH
  528. ;
  529. L05EEH:  CMP   AH,6
  530.          JZ    L05F8H  
  531.          JMP   DWORD PTR CS:[L012EH]
  532. L05F8H:  CMP   AL,1
  533.          JA    L0602H  
  534.          JNZ   L0600H  
  535.          PUSH  CS
  536.          POP   ES
  537. L0600H:  MOV   AL,0FFH
  538. L0602H:  IRET            ;Return from interupt.
  539. ;
  540. ;
  541. ;
  542. ;
  543. ;
  544. L0603H:  PUSH  SI
  545.          PUSH  AX
  546. L0605H:  PUSH  CX
  547.          XOR   AX,AX
  548.          MOV   SI,AX
  549.          MOV   CX,001AH
  550. L060DH:  MOV   AL,BYTE PTR CS:[SI]+0103H
  551.          INC   SI
  552.          CMP   AX,SI
  553.          JNZ   L061BH  
  554.          LOOP  L060DH            ;Dec CX, loop if CX<>0.
  555.          XOR   AX,AX
  556. L061BH:  POP   CX
  557.          POP   AX
  558.          POP   SI
  559.          RET
  560. L061FH:  DB    0
  561. L0620H:  DB    0
  562. L0621H:  DB    0
  563. L0622H:  DB    0,0
  564. L0624H:  DB    'n'
  565. L0625H:  DB    'n'
  566. L0626H:  DB    0,0
  567. L0628H:  DB    0
  568. L0629H:  DB    0,0
  569. L062BH:  DB    0,0
  570. L062DH:  DB    0,0
  571. L062FH:  DB    0,0
  572. ;
  573. ;
  574. L0631H:  DW    0                        ; LIST OF LIST SAVE_BX
  575. L0633H:  DW    0                        ;      "       SAVE_ES
  576. ;
  577. ;
  578.          DB    0
  579.          DB    0,0
  580.          DB    0
  581. L0639H:  DB    '@',6,1,3,';+=',0
  582.          DB    1,'I',6,2,'S',6,'l'
  583.          DB    6,10H,' ',2,0,0FEH
  584.          DB    6,'x',6,0,0,0,0,2
  585.          DB    0
  586. L0657H:  DB    0FEH,6,0,0,3
  587. L065CH:  DB    '/STATUS',0
  588. L0664H:  DB    '/STA',0
  589. L0669H:  DB    '/S',0,0,0,0,0,0FEH
  590.          DB    6,0,0,1,'/?',0
  591. L0678H:  DB    3,0,0,EOF,'A',0CAH
  592.          DB    6,'B',0CCH,6,'C',0CEH
  593.          DB    6,'D',0D0H,6,'E',0D2H
  594.          DB    6,'F',0D4H,6,'G',0D6H
  595.          DB    6,'H',0D8H,6,'I',0DAH
  596.          DB    6,'J',0DCH,6,'K',0DEH
  597.          DB    6,'L',0E0H,6,'M',0E2H
  598.          DB    6,'N',0E4H,6
  599. L06A6H:  DB    'O',0E6H,6
  600. L06A9H:  DB    'P',0E8H,6,'Q',0EAH
  601.          DB    6,'R',0ECH,6,'S',0EEH
  602.          DB    6,'T',0F0H,6,'U',0F2H
  603.          DB    6,'V',0F4H,6,'W',0F6H
  604.          DB    6,'X',0F8H,6,'Y',0FAH
  605.          DB    6
  606. L06C7H:  DB    'Z',0FCH,6,'A',0,'B'
  607.          DB    0,'C',0,'D',0,'E',0
  608.          DB    'F',0,'G',0,'H',0
  609.          DB    'I',0,'J',0,'K',0
  610.          DB    'L',0,'M',0,'N',0
  611.          DB    'O',0,'P',0,'Q',0
  612.          DB    'R',0,'S',0,'T',0
  613.          DB    'U',0,'V',0,'W',0
  614.          DB    'X',0,'Y',0,'Z',0
  615. L06FEH:  DB    0
  616. L06FFH:  DB    0
  617. L0700H:  DB    0,0,0,0,0,0
  618. L0706H:  DB    0BH,0
  619. L0708H:  DB    0,0
  620. L070AH:  DB    0,0,0,10H,'(',1,' '
  621. L0711H:  DB    0,0
  622. L0713H:  DB    0,0
  623. L0715H:  DB    0BH,0,11H,7
  624. L0719H:  DB    0,0,1,10H,0,1,' ',0BH
  625.          DB    0,13H,7
  626. L0724H:  DB    0,0,2,10H,0,1,' '
  627. ;
  628. ;
  629. ;       INIT STUFF...
  630. ;
  631. ;
  632. L072BH:  PUSH  AX
  633.          MOV   AX,DS
  634.          MOV   WORD PTR [L0719H],AX
  635.          MOV   WORD PTR [L0724H],AX
  636.          POP   AX
  637.          CALL  L0B3FH  
  638.          JNC   L0740H  
  639.          CALL  L0C53H  
  640.          CALL  L096FH  
  641. L0740H:  MOV   AX,WORD PTR [L002CH]
  642.          OR    AX,AX
  643.          JZ    L074FH  
  644.          PUSH  ES
  645.          MOV   ES,AX
  646.          MSDOS _DEALLOC          ;Free allocated memory.
  647.          POP   ES
  648. L074FH:  PUSH  ES
  649.          MOV   AH,52H                   ; LIST OF LIST ....
  650.          MSDOS
  651.          MOV   WORD PTR [L0631H],BX
  652.          MOV   WORD PTR [L0633H],ES
  653.          POP   ES
  654.          CLD                     ;Set forward direction flag.
  655.          MOV   DI,OFFSET L0639H
  656.          MOV   SI,0081H
  657.          XOR   CX,CX
  658.          XOR   DX,DX
  659.          MOV   WORD PTR [L062DH],SI
  660.          MOV   WORD PTR [L062FH],SI
  661.          CALL  L1422H  
  662.          MOV   WORD PTR [L0626H],AX
  663. L0776H:  CMP   AX,00H
  664.          JNZ   L078AH  
  665.          CALL  L081AH  
  666.          MOV   WORD PTR [L062FH],SI
  667.          CALL  L1422H  
  668.          MOV   WORD PTR [L0626H],AX
  669.          JMP   SHORT L0776H  
  670. L078AH:  CMP   BYTE PTR [L0622H],0
  671.          JZ    L079AH  
  672.          CALL  L08CDH  
  673.          MOV   AX,000H
  674.          CALL  L096FH  
  675. L079AH:  CMP   AX,0FFFFH
  676.          JZ    L07AAH  
  677.          PUSH  AX
  678.          MOV   AX,WORD PTR [L062FH]
  679.          MOV   WORD PTR [L062DH],AX
  680.          POP   AX
  681.          CALL  L0974H  
  682. L07AAH:  CMP   BYTE PTR [L0625H],'y'
  683.          JNZ   L07E4H  
  684.          CMP   AX,00H
  685.          JLE   L07BCH  
  686.          MOV   AX,000AH
  687.          CALL  L0974H  
  688. L07BCH:  XOR   AX,AX
  689.          MOV   AL,BYTE PTR [L0620H]
  690.          MOV   BX,0002H
  691.          DIV   BL
  692.          CMP   AH,0
  693.          JZ    L07D1H  
  694.          MOV   AX,000AH
  695.          CALL  L0974H  
  696. L07D1H:  CMP   BYTE PTR [L0624H],'n'
  697.          JNZ   L07E4H  
  698.          CMP   BYTE PTR [L0621H],1
  699.          JNZ   L07E4H  
  700.          MOV   BYTE PTR [L061FH],1
  701. L07E4H:  CMP   BYTE PTR [L061FH],0
  702.          JNZ   L07F3H  
  703.          CALL  L09BDH  
  704.          CALL  L0A00H  
  705.          JMP   SHORT L07F9H  
  706. L07F3H:  CALL  L091DH  
  707.          CALL  L096FH  
  708. ;
  709. L07F9H:
  710.          MOV   AH,19H
  711.          INT   21H               ;Get current disk into (AL).
  712.          PUSH  AX
  713.          MOV   AX,0601H
  714.          INT   2FH
  715.          MOV   SI,OFFSET L0103H
  716.          MOV   DI,SI
  717.          MOV   CX,001AH
  718.          CLI                     ;Disable interupts.
  719.          REPZ MOVSB              ;Move byt, (SI)+- to (DI)+-.
  720.          STI                     ;Enable interupts.
  721.          POP   DX
  722.          MSDOS _SELDISK          ;Select disk in (AL).
  723.          CALL  L096FH  
  724.          INT   20H
  725.          RET
  726. ;
  727. L081AH:  XOR   CX,CX
  728.          XOR   AX,AX
  729.          MOV   AL,BYTE PTR [L0620H]
  730.          MOV   BX,0002H
  731.          DIV   BL
  732.          CMP   BYTE PTR [L06FEH],2
  733.          JNZ   L0850H  
  734.          CMP   AH,0
  735.          JNZ   L0850H  
  736.          INC   BYTE PTR [L0620H]
  737.          MOV   BYTE PTR [L0625H],79H
  738.          PUSH  AX
  739.          MOV   AL,BYTE PTR [L06FFH]
  740.          MOV   BYTE PTR [L0628H],AL
  741.          CALL  L08ECH  
  742.          CBW                     ;Convert byte (AL) to word (AX).
  743.          MOV   BX,0102H
  744.          ADD   BX,AX
  745.          MOV   WORD PTR [L0629H],BX
  746.          POP   AX
  747. L0850H:  CMP   BYTE PTR [L06FEH],2
  748.          JNZ   L087FH  
  749.          CMP   AH,0
  750.          JZ    L087FH  
  751.          INC   BYTE PTR [L0620H]
  752.          MOV   BYTE PTR [L0625H],79H
  753.          PUSH  AX
  754.          MOV   AL,BYTE PTR [L06FFH]
  755.          MOV   BYTE PTR [L0628H],AL
  756.          CALL  L08ECH                   ; DO LIST OF LIST
  757.          MOV   BX,WORD PTR [L0629H]
  758.          MOV   BYTE PTR [BX],AL
  759.          MOV   BYTE PTR [L0624H],79H
  760.          POP   AX
  761.          MOV   WORD PTR [L062DH],SI
  762. L087FH:  CMP   WORD PTR [L0700H],0
  763.          JZ    L08CCH  
  764.          CMP   WORD PTR [L0700H],065CH
  765.          JZ    L089EH  
  766.          CMP   WORD PTR [L0700H],0664H
  767.          JZ    L089EH  
  768.          CMP   WORD PTR [L0700H],0669H
  769.          JNZ   L08BDH  
  770. L089EH:  MOV   BYTE PTR [L0621H],1
  771.          MOV   BYTE PTR [L0625H],79H
  772.          MOV   BYTE PTR [L065CH],20H
  773.          MOV   BYTE PTR [L0664H],20H
  774.          MOV   BYTE PTR [L0669H],20H
  775.          MOV   WORD PTR [L062DH],SI
  776.          JMP   SHORT L08CCH  
  777. L08BDH:  CMP   WORD PTR [L0700H],0675H
  778.          JNZ   L08CCH  
  779.          MOV   BYTE PTR [L0622H],1
  780.          JMP   SHORT L08CCH  
  781. L08CCH:  RET
  782. ;
  783. L08CDH:  MOV   AX,012CH
  784.          MOV   BX,0001H
  785.          MOV   CX,00H
  786.          MOV   SI,000H
  787.          MOV   DI,000H
  788.          MOV   DL,0
  789.          MOV   DH,0FFH
  790. L08E0H:  CALL  L0C53H  
  791.          CMP   AX,0131H
  792.          JZ    L08EBH  
  793.          INC   AX
  794.          JMP   SHORT L08E0H  
  795. L08EBH:  RET
  796. ;
  797. ;       DO THE LIST OF LIST....
  798. ;
  799. L08ECH:  SUB   AL,41H                    ; SUB ALPHA TO NUM, 41H-(A=41H)=0
  800.          JC    L0917H                    ; ZEROED NUM FOR DRIVE A...
  801.          PUSH  ES
  802.          PUSH  BX
  803.          PUSH  AX
  804.          LES   BX,DWORD PTR [L0631H]
  805.          CMP   AL,BYTE PTR ES:[BX]+33    ; NUM OF AVAIL DRIVE LETTERS...
  806.          JNC   L0917H  
  807.          LES   BX,DWORD PTR ES:[BX]+22   ; PRT TO ARRAY OF CURRENT DIR
  808.          PUSH  BX                        ; STUCTURES... (CDS)
  809.          MOV   BL,58H
  810.          MUL   BL
  811.          POP   BX
  812.          ADD   BX,AX
  813.          TEST  WORD PTR ES:[BX]+67,4000H ; IN CDS, DRIVE ATTRIBUTES
  814.          JZ    L0917H                    ; BIT 15= USED IN NETWORK REDIRECTER
  815.          POP   AX                        ;     14= PHYSICAL DRIVE
  816.          POP   BX                        ;     13= JOIN'ed
  817.          POP   ES                        ;     12= SUBST'ed
  818.          INC   AL
  819.          RET
  820. L0917H:  MOV   AX,000AH
  821.          CALL  L0974H  
  822. ;
  823. L091DH:  PUSH  ES
  824.          PUSH  ES
  825.          POP   AX
  826.          MOV   WORD PTR [L062BH],AX
  827.          MOV   AX,0601H
  828.          INT   2FH
  829.          MOV   CL,1
  830.          MOV   BX,0103H
  831. L092DH:  CMP   CL,EOF
  832.          JA    L096DH  
  833.          CMP   CL,BYTE PTR ES:[BX]
  834.          JZ    L0968H  
  835.          PUSH  BX
  836.          PUSH  CX
  837.          MOV   AL,BYTE PTR ES:[BX]
  838.          PUSH  ES
  839.          MOV   BX,WORD PTR [L062BH]
  840.          MOV   ES,BX
  841.          ADD   CL,40H
  842.          ADD   AL,40H
  843.          MOV   BYTE PTR [L0711H],CL
  844.          MOV   BYTE PTR [L0713H],AL
  845.          MOV   AX,0002H
  846.          MOV   BX,0001H
  847.          MOV   CX,0002H
  848.          MOV   SI,0715H
  849.          MOV   DI,0000H
  850.          MOV   DL,0
  851.          MOV   DH,0FFH
  852.          CALL  L0C53H  
  853.          POP   ES
  854.          POP   CX
  855.          POP   BX
  856. L0968H:  INC   BX
  857.          INC   CL
  858.          JMP   SHORT L092DH  
  859. L096DH:  POP   ES
  860.          RET
  861. ;
  862. L096FH:  MSDOS _EXIT             ;Terminate a process.
  863.          RET
  864. ;
  865. L0974H:  PUSH  AX
  866.          MOV   BYTE PTR [SI],0
  867.          MOV   DX,WORD PTR [L062DH]
  868.          MOV   WORD PTR [L0708H],DX
  869.          MOV   WORD PTR [L070AH],DS
  870.          MOV   BX,0002H
  871.          MOV   CX,0001H
  872.          MOV   SI,0706H
  873.          MOV   DL,0
  874.          MOV   DH,2
  875.          CALL  L0C53H  
  876.          POP   AX
  877.          CALL  L096FH  
  878. ;
  879. L0998H:  PUSH  AX
  880.          PUSH  BX
  881.          PUSH  ES
  882.          MSDOS _GETPSP           ;Get progrm segmnt prefix addr.
  883.          MOV   ES,BX
  884.          MOV   BX,WORD PTR ES:[L002CH]
  885.          MOV   ES,BX
  886.          MSDOS _DEALLOC          ;Free allocated memory.
  887.          POP   ES
  888.          POP   BX
  889.          POP   AX
  890.          RET
  891. ;
  892. L09B0H:  PUSH  BX
  893.          MOV   BX,0004H
  894. L09B4H:  MSDOS _CLOSEH           ;Close a file handle.
  895.          DEC   BX
  896.          JNS   L09B4H  
  897.          POP   BX
  898.          RET
  899. ;
  900. L09BDH:  MOV   AX,3525H  ;Get interupt vector.
  901.          MSDOS
  902.          MOV   WORD PTR [L0126H],BX
  903.          MOV   WORD PTR [L0128H],ES
  904.          MOV   AX,3526H  ;Get interupt vector.
  905.          MSDOS
  906.          MOV   WORD PTR [L012AH],BX
  907.          MOV   WORD PTR [L012CH],ES
  908.          MOV   AX,352FH  ;Get interupt vector.
  909.          MSDOS
  910.          MOV   WORD PTR [L012EH],BX
  911.          MOV   WORD PTR [L0130H],ES
  912.          MOV   AX,3521H  ;Get interupt vector.
  913.          MSDOS
  914.          MOV   WORD PTR CS:[L0122H],BX
  915.          MOV   WORD PTR CS:[L0124H],ES
  916.          MOV   AX,0600H
  917.          INT   2FH
  918.          OR    AL,AL
  919.          JZ    L09FFH  
  920.          CALL  L07F9H  
  921. L09FFH:  RET
  922. ;
  923. L0A00H:  MSDOS _GETDISK          ;Get current disk into (AL).
  924.          INC   AL
  925.          MOV   BYTE PTR [L011DH],AL
  926.          CALL  L05A2H  
  927.          DEC   AL
  928.          MOV   DL,AL
  929.          MSDOS _SELDISK          ;Select disk in (AL).
  930.          MOV   DX,OFFSET L05DEH
  931.          MOV   AX,2525H  ;Set int vector (AL) to DS:DX
  932.          MSDOS
  933.          MOV   DX,OFFSET L05E6H
  934.          MOV   AX,2526H  ;Set int vector (AL) to DS:DX
  935.          MSDOS
  936.          MOV   DX,OFFSET L05EEH
  937.          MOV   AX,252FH  ;Set int vector (AL) to DS:DX
  938.          MSDOS
  939.          MOV   DX,OFFSET L0214H
  940.          MOV   AX,2521H  ;Set int vector (AL) to DS:DX
  941.          MSDOS
  942.          CALL  L09B0H  
  943.          CALL  L0998H  
  944.          MOV   DX,0062H
  945.          MSDOS _TSR              ;Terminate and stay resident.
  946.          RET
  947. L0A42H:  DB    0,0
  948. L0A44H:  DB    0,0
  949. L0A46H:  DB    0,0
  950. L0A48H:  DB    0,0
  951. L0A4AH:  DB    0,0
  952. L0A4CH:  DB    0,0,0FFH,0FFH,0FFH
  953.          DB    0FFH
  954. L0A52H:  DB    0,0
  955. L0A54H:  DB    0,0
  956. L0A56H:  DB    0,0
  957. L0A58H:  DB    0,0,0FFH,0FFH,0FFH
  958.          DB    0FFH
  959. L0A5EH:  DB    0,0
  960. L0A60H:  DB    0,0
  961. L0A62H:  DB    0,0
  962. L0A64H:  DB    0,0,0FFH,0FFH,0FFH
  963.          DB    0FFH
  964. L0A6AH:  DB    0FFH,0FFH
  965. L0A6CH:  DB    0FFH,0FFH
  966. L0A6EH:  DB    0,0,0,0,0FFH,0FFH
  967.          DB    0FFH,0FFH
  968. L0A76H:  DB    0,0
  969. L0A78H:  DB    0,0
  970. L0A7AH:  DB    0,0
  971. L0A7CH:  DB    0
  972. L0A7DH:  DB    CR,LF
  973. L0A7FH:  DB    0
  974. L0A80H:  DB    0,0
  975. L0A82H:  DB    0,0
  976. L0A84H:  DB    LF,0
  977. L0A86H:  DB    '$$$$$$$'
  978. L0A8DH:  DB    '$$$$$$$$$$$$$$$$'
  979.          DB    '$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$'
  980. L0AC6H:  DB    '$MS DOS Version 5.00 (C)Copyright 1981-1991 Microsoft Corp Licensed Material - '
  981.          DB    'Property of Microsoft All rights reserved '
  982. ;
  983. L0B3FH:  PUSH  AX
  984.          PUSH  BX
  985.          PUSH  DX
  986.          PUSH  ES
  987.          PUSH  DI
  988.          XOR   CX,CX
  989.          MOV   ES,CX
  990.          XOR   DI,DI
  991.          MOV   AX,122EH
  992. L0B4DH:  MOV   DL,0
  993.          INT   2FH
  994.          MOV   WORD PTR [L0A4CH],ES
  995.          MOV   WORD PTR [L0A4AH],DI
  996.          MOV   AX,122EH
  997.          MOV   DL,2
  998.          INT   2FH
  999.          MOV   WORD PTR [L0A54H],ES
  1000.          MOV   WORD PTR [L0A52H],DI
  1001. L0B68H:  MOV   AX,122EH
  1002.          MOV   DL,4
  1003. L0B6DH:  INT   2FH
  1004.          MOV   WORD PTR [L0A64H],ES
  1005. L0B73H:  MOV   WORD PTR [L0A62H],DI
  1006.          MOV   AX,122EH
  1007.          MOV   DL,6
  1008.          INT   2FH
  1009.          MOV   WORD PTR [L0A48H],ES
  1010.          MOV   WORD PTR [L0A46H],DI
  1011.          CALL  L1349H  
  1012.          MOV   WORD PTR [L0A44H],ES
  1013.          MOV   WORD PTR [L0A42H],DI
  1014.          MOV   WORD PTR [L0A60H],ES
  1015. L0B95H:  MOV   WORD PTR [L0A5EH],DI
  1016.          CALL  L136AH  
  1017.          MOV   WORD PTR [L0A58H],ES
  1018.          MOV   WORD PTR [L0A56H],DI
  1019.          MOV   AX,122EH
  1020.          MOV   DL,8
  1021.          INT   2FH
  1022.          MOV   WORD PTR [L0A6CH],ES
  1023.          MOV   WORD PTR [L0A6AH],DI
  1024.          MOV   WORD PTR [L0A7DH],0A0DH
  1025.          MOV   BYTE PTR [L0AC6H],24H
  1026.          MOV   WORD PTR [L0A82H],0000H
  1027.          MOV   WORD PTR [L0A84H],000AH
  1028.          CALL  L1324H  
  1029.          MOV   WORD PTR [L0A6EH],DI
  1030.          CALL  L0BEDH  
  1031.          CALL  L0C05H  
  1032.          CALL  L0C1BH  
  1033.          PUSH  CX
  1034.          CALL  L0C2EH  
  1035.          JC    L0BE8H  
  1036.          POP   CX
  1037.          POP   DI
  1038.          POP   ES
  1039.          POP   DX
  1040.          POP   BX
  1041.          POP   AX
  1042.          JMP   SHORT L0BECH  
  1043. L0BE8H:  ADD   SP,0CH
  1044.          STC                    ;Set the carry flag.
  1045. L0BECH:  RET
  1046. ;
  1047. L0BEDH:  PUSH  AX
  1048.          PUSH  SI
  1049.          PUSH  DS
  1050.          MOV   AX,6300H         ; ???
  1051.          INT   21H
  1052.          PUSH  DS
  1053.          POP   ES
  1054.          POP   DS
  1055.          JC    L0C02H  
  1056.          MOV   WORD PTR [L0A76H],SI
  1057.          MOV   WORD PTR [L0A78H],ES
  1058. L0C02H:  POP   SI
  1059.          POP   AX
  1060.          RET
  1061. ;
  1062. L0C05H:  MOV   AX,4400H
  1063. L0C08H:  MOV   BX,0000H
  1064.          XOR   DX,DX
  1065.          MSDOS
  1066.          AND   DH,1
  1067.          OR    DH,1
  1068.          MOV   AX,4401H  ;I/O control for devices.
  1069.          MSDOS
  1070.          RET
  1071. ;
  1072. L0C1BH:  MOV   AX,4400H
  1073.          MOV   BX,0001H
  1074.          XOR   DX,DX
  1075.          MSDOS
  1076.          OR    DH,1
  1077.          MOV   AX,4401H  ;I/O control for devices.
  1078.          MSDOS
  1079.          RET
  1080. ;
  1081. L0C2EH:  MSDOS _GETVER           ;Get DOS version number.
  1082.          CMP   AX,05H
  1083.          JNZ   L0C3AH  
  1084.          CLC                     ;Clear the carry flag.
  1085.          JMP   SHORT L0C52H  
  1086. L0C3AH:  CMP   AX,02H
  1087.          JNC   L0C44H  
  1088.          MOV   BX,0FFFFH
  1089.          JMP   SHORT L0C47H  
  1090. L0C44H:  MOV   BX,0002H
  1091. L0C47H:  MOV   AX,0001H
  1092.          MOV   CX,0000H
  1093.          MOV   DL,0
  1094.          MOV   DH,0FFH
  1095.          STC                     ;Set the carry flag.
  1096. L0C52H:  RET
  1097. ;
  1098. L0C53H:  PUSH  AX
  1099.          PUSH  BX
  1100.          PUSH  CX
  1101.          PUSH  BP
  1102.          PUSH  DI
  1103.          PUSH  ES
  1104.          PUSH  DX
  1105.          MOV   BP,CX
  1106.          MOV   WORD PTR [L0A7AH],BX
  1107.          MOV   BYTE PTR [L0A7FH],DH
  1108.          CALL  L0F2DH  
  1109.          OR    CX,CX
  1110.          JZ    L0C87H  
  1111.          OR    BP,BP
  1112.          JNZ   L0C74H  
  1113.          CALL  L0C98H  
  1114.          JMP   SHORT L0C77H  
  1115. L0C74H:  CALL  L0E27H  
  1116. L0C77H:  JC    L0C81H  
  1117.          POP   DX
  1118.          CALL  L0D82H  
  1119.          POP   ES
  1120.          POP   DI
  1121.          JMP   SHORT L0C85H  
  1122. L0C81H:  ADD   SP,6
  1123.          STC                     ;Set the carry flag.
  1124. L0C85H:  JMP   SHORT L0C8BH  
  1125. L0C87H:  POP   ES
  1126.          POP   DI
  1127.          POP   DX
  1128.          STC                     ;Set the carry flag.
  1129. L0C8BH:  JC    L0C93H  
  1130.          POP   BP
  1131.          POP   CX
  1132.          POP   BX
  1133.          POP   AX
  1134.          JMP   SHORT L0C97H  
  1135. L0C93H:  ADD   SP,8
  1136.          STC                     ;Set the carry flag.
  1137. L0C97H:  RET
  1138. ;
  1139. L0C98H:  PUSH  AX
  1140.          PUSH  BX
  1141.          PUSH  DX
  1142.          MOV   BX,WORD PTR [L0A7AH]
  1143.          CMP   BX,-1
  1144.          JNZ   L0CA9H  
  1145.          CALL  L0CD3H  
  1146.          JMP   SHORT L0CACH  
  1147. L0CA9H:  CALL  L0D23H  
  1148. L0CACH:  JNC   L0CBDH  
  1149.          MOV   AH,59H
  1150.          MOV   BX,0000H
  1151.          MSDOS
  1152.          XOR   AH,AH
  1153.          ADD   SP,6
  1154.          STC                     ;Set the carry flag.
  1155.          JMP   SHORT L0CCDH  
  1156. L0CBDH:  CMP   BX,-1
  1157.          JZ    L0CCDH  
  1158.          CMP   AX,CX
  1159.          JZ    L0CCDH  
  1160.          CALL  L0D79H  
  1161.          ADD   SP,6
  1162.          STC                     ;Set the carry flag.
  1163. L0CCDH:  JC    L0CD2H  
  1164.          POP   DX
  1165.          POP   BX
  1166.          POP   AX
  1167. L0CD2H:  RET
  1168. ;
  1169. L0CD3H:  PUSH  DS
  1170.          PUSH  ES
  1171.          POP   DS
  1172.          CMP   CX,1
  1173.          JNZ   L0CF6H  
  1174.          MOV   AH,2
  1175.          MOV   DL,BYTE PTR ES:[DI]
  1176.          MSDOS
  1177.          POP   DS
  1178.          MOV   AL,DL
  1179.          CALL  L0D99H  
  1180.          PUSH  DS
  1181.          PUSH  ES
  1182.          POP   DS
  1183.          JNC   L0CF4H  
  1184.          MOV   DL,BYTE PTR ES:[DI]+1
  1185.          MSDOS
  1186.          CLC                     ;Clear the carry flag.
  1187. L0CF4H:  JMP   SHORT L0D05H  
  1188. L0CF6H:  MOV   AH,2
  1189. L0CF8H:  OR    CX,CX
  1190.          JZ    L0D05H  
  1191.          MOV   DL,BYTE PTR ES:[DI]
  1192.          MSDOS
  1193.          INC   DI
  1194.          DEC   CX
  1195.          JNZ   L0CF8H  
  1196. L0D05H:  CLC                     ;Clear the carry flag.
  1197.          POP   DS
  1198.          RET
  1199. ;
  1200. L0D08H:  PUSH  DI
  1201.          PUSH  AX
  1202.          PUSH  ES
  1203.          PUSH  BX
  1204.          MOV   DI,DX
  1205.          PUSH  DS
  1206.          POP   ES
  1207.          MOV   BX,CX
  1208.          MOV   AL,1AH
  1209.          CLD                     ;Set forward direction flag.
  1210.          REPNZ SCASB             ;Scan (DI)+- for byt in AL.
  1211.          JNZ   L0D1CH  
  1212.          SUB   BX,CX
  1213.          DEC   BX
  1214. L0D1CH:  MOV   CX,BX
  1215.          POP   BX
  1216.          POP   ES
  1217.          POP   AX
  1218.          POP   DI
  1219.          RET
  1220. ;
  1221. L0D23H:  XOR   AX,AX
  1222.          OR    CX,CX
  1223.          JZ    L0D78H  
  1224.          PUSH  DS
  1225.          PUSH  ES
  1226.          POP   DS
  1227.          MOV   AH,40H
  1228.          MOV   DX,DI
  1229.          CMP   CX,1
  1230.          JNZ   L0D5DH  
  1231.          MSDOS
  1232.          POP   DS
  1233.          PUSH  AX
  1234.          MOV   AL,BYTE PTR ES:[DI]
  1235.          CALL  L0D99H  
  1236.          POP   AX
  1237.          PUSH  DS
  1238.          PUSH  ES
  1239.          POP   DS
  1240.          JNC   L0D4BH  
  1241.          CLC                     ;Clear the carry flag.
  1242.          MOV   AH,40H
  1243.          INC   DX
  1244.          MSDOS
  1245. L0D4BH:  PUSHF                   ;Push flag register.
  1246.          CMP   BYTE PTR ES:[DI],EOF
  1247.          JNZ   L0D54H  
  1248.          MOV   AX,CX
  1249. L0D54H:  JMP   SHORT L0D57H  
  1250. ;
  1251. L0D56H:  IRET                    ;Return from interupt.
  1252. L0D57H:  PUSH  CS
  1253.          CALL  L0D56H  
  1254.          JMP   SHORT L0D77H  
  1255. L0D5DH:  PUSH  BP
  1256.          PUSH  CX
  1257.          CALL  L0D08H  
  1258.          MOV   BP,CX
  1259.          POP   CX
  1260.          MSDOS
  1261.          JNC   L0D6BH  
  1262.          JMP   SHORT L0D76H  
  1263. L0D6BH:  CMP   CX,AX
  1264.          JZ    L0D76H  
  1265.          CMP   BP,AX
  1266.          CLC                     ;Clear the carry flag.
  1267.          JNZ   L0D76H  
  1268.          MOV   AX,CX
  1269. L0D76H:  POP   BP
  1270. L0D77H:  POP   DS
  1271. L0D78H:  RET
  1272. ;
  1273. L0D79H:  MOV   AX,0027H
  1274.          MOV   BX,0004H
  1275.          MOV   CH,1
  1276.          RET
  1277. ;
  1278. L0D82H:  CMP   DH,0FFH
  1279.          JZ    L0D98H  
  1280.          TEST  DH,80H
  1281.          JNZ   L0D98H  
  1282.          PUSH  DS
  1283.          POP   ES
  1284.          LEA   DI,WORD PTR [L0A7DH]
  1285.          MOV   CX,002H
  1286.          CALL  L0C98H  
  1287. L0D98H:  RET
  1288. ;
  1289. L0D99H:  PUSH  ES
  1290.          PUSH  DI
  1291.          LES   DI,DWORD PTR [L0A76H];Load ES:DI with 32b pointer.
  1292.          OR    DI,DI
  1293.          JZ    L0DBAH  
  1294. L0DA3H:  CMP   WORD PTR ES:[DI],0
  1295.          CLC                     ;Clear the carry flag.
  1296.          JZ    L0DBAH  
  1297.          CMP   AL,BYTE PTR ES:[DI]
  1298.          JC    L0DB6H  
  1299.          CMP   AL,BYTE PTR ES:[DI]+1
  1300.          JA    L0DB6H  
  1301.          STC                     ;Set the carry flag.
  1302. L0DB6H:  INC   DI
  1303.          INC   DI
  1304.          JMP   SHORT L0DA3H  
  1305. L0DBAH:  POP   DI
  1306.          POP   ES
  1307.          RET
  1308. ;
  1309. L0DBDH:  POP   WORD PTR [L0A80H]
  1310.          XOR   BX,BX
  1311.          XCHG  AX,BX
  1312.          XCHG  AX,DX
  1313. L0DC5H:  DIV   WORD PTR [L0A84H]
  1314.          XCHG  AX,BX
  1315.          DIV   WORD PTR [L0A84H]
  1316.          CMP   DX,HT
  1317.          JBE   L0DD8H  
  1318.          ADD   DL,37H
  1319.          JMP   SHORT L0DDBH  
  1320. L0DD8H:  ADD   DL,30H
  1321. L0DDBH:  PUSH  DX
  1322.          INC   CX
  1323.          OR    AX,AX
  1324.          JNZ   L0DE5H  
  1325.          OR    BX,BX
  1326.          JZ    L0E1EH  
  1327. L0DE5H:  CMP   CX,3
  1328.          JNZ   L0DF7H  
  1329.          CMP   BYTE PTR [SI]+10,','
  1330.          JNZ   L0DF5H  
  1331.          PUSH  WORD PTR [L0A8DH]
  1332.          INC   CX
  1333. L0DF5H:  JMP   SHORT L0E19H  
  1334. L0DF7H:  CMP   CX,6
  1335.          JNZ   L0E09H  
  1336.          CMP   BYTE PTR [SI]+10,','
  1337.          JNZ   L0E07H  
  1338.          PUSH  WORD PTR [L0A8DH]
  1339.          INC   CX
  1340. L0E07H:  JMP   SHORT L0E19H  
  1341. L0E09H:  CMP   CX,HT
  1342.          JNZ   L0E19H  
  1343.          CMP   BYTE PTR [SI]+10,','
  1344.          JNZ   L0E19H  
  1345.          PUSH  WORD PTR [L0A8DH]
  1346.          INC   CX
  1347. L0E19H:  XCHG  AX,BX
  1348.          XOR   DX,DX
  1349.          JMP   SHORT L0DC5H  
  1350. L0E1EH:  XOR   DX,DX
  1351.          XOR   AX,AX
  1352.          PUSH  WORD PTR [L0A80H]
  1353.          RET
  1354. ;
  1355. L0E27H:  XOR   DX,DX
  1356.          OR    CX,CX
  1357.          JZ    L0E4EH  
  1358.          MOV   AH,25H
  1359.          MOV   AL,0
  1360. L0E31H:  CMP   BYTE PTR ES:[DI],AH
  1361.          JNZ   L0E40H  
  1362.          CMP   BYTE PTR ES:[DI]+1,AH
  1363.          JZ    L0E40H  
  1364.          CMP   AL,AH
  1365.          JNZ   L0E4EH  
  1366. L0E40H:  MOV   AL,BYTE PTR ES:[DI]
  1367.          CALL  L0D99H  
  1368.          JNC   L0E49H  
  1369.          INC   DI
  1370. L0E49H:  INC   DI
  1371.          INC   DX
  1372.          DEC   CX
  1373.          JNZ   L0E31H  
  1374. L0E4EH:  PUSH  SI
  1375.          XCHG  CX,DX
  1376.          OR    BP,BP
  1377.          JZ    L0E88H  
  1378.          DEC   BP
  1379.          CMP   WORD PTR [L0A82H],0
  1380.          JNZ   L0E88H  
  1381. L0E5DH:  MOV   AL,BYTE PTR [SI]+6
  1382.          ADD   AL,30H
  1383.          CMP   AL,BYTE PTR ES:[DI]+1
  1384.          JNZ   L0E6AH  
  1385.          JMP   SHORT L0E88H  
  1386. L0E6AH:  CMP   AL,'0'
  1387.          JNZ   L0E72H  
  1388.          OR    DX,DX
  1389.          JZ    L0E76H  
  1390. L0E72H:  ADD   SI,WORD PTR [SI]
  1391.          JMP   SHORT L0E5DH  
  1392. L0E76H:  CMP   BYTE PTR [L0A7FH],0FFH
  1393.          JNZ   L0E85H  
  1394.          INC   DX
  1395.          INC   DX
  1396.          DEC   CX
  1397.          DEC   CX
  1398.          DEC   DI
  1399.          DEC   DI
  1400.          JMP   SHORT L0E88H  
  1401. L0E85H:  MOV   DX,0FFFFH
  1402. L0E88H:  PUSH  DI
  1403.          SUB   DI,CX
  1404.          CALL  L0C98H  
  1405.          POP   DI
  1406.          POP   CX
  1407.          JNC   L0E95H  
  1408.          JMP   SHORT L0EF9H  
  1409.          NOP
  1410. L0E95H:  PUSH  CX
  1411.          MOV   CX,DX
  1412.          CMP   BYTE PTR [SI]+6,0
  1413.          JZ    L0EABH  
  1414.          OR    CX,CX
  1415.          JZ    L0EA8H  
  1416.          DEC   CX
  1417.          DEC   CX
  1418.          INC   DI
  1419.          INC   DI
  1420.          JMP   SHORT L0EA9H  
  1421. L0EA8H:  POP   SI
  1422. L0EA9H:  JMP   SHORT L0EBBH  
  1423. L0EABH:  OR    CX,CX
  1424.          JNZ   L0EB2H  
  1425.          POP   SI
  1426.          JMP   SHORT L0EBBH  
  1427. L0EB2H:  CMP   CX,-1
  1428.          JNZ   L0EB9H  
  1429.          XOR   CX,CX
  1430. L0EB9H:  OR    DI,DI
  1431. L0EBBH:  JZ    L0EF9H  
  1432.          PUSH  BP
  1433.          PUSH  DI
  1434.          PUSH  ES
  1435.          PUSH  CX
  1436.          XOR   CX,CX
  1437.          CMP   WORD PTR [L0A82H],0
  1438.          JNZ   L0EDDH  
  1439.          TEST  BYTE PTR [SI]+7,0FH
  1440.          JNZ   L0ED8H  
  1441.          LES   DI,DWORD PTR [SI]+2;Load ES:DI with 32b pointer.
  1442.          CALL  L1130H  
  1443.          JMP   SHORT L0ED8H  
  1444. L0ED8H:  CALL  L1055H  
  1445.          JMP   SHORT L0EE0H  
  1446. L0EDDH:  CALL  L0F00H  
  1447. L0EE0H:  JC    L0EE9H  
  1448.          POP   CX
  1449.          POP   ES
  1450.          POP   DI
  1451.          POP   BP
  1452.          POP   SI
  1453.          JMP   SHORT L0EEDH  
  1454. L0EE9H:  ADD   SP,0AH
  1455.          STC                     ;Set the carry flag.
  1456. L0EEDH:  CMP   WORD PTR [L0A82H],0
  1457.          JNZ   L0EF9H  
  1458.          JC    L0EF9H  
  1459.          JMP   L0E27H  
  1460. L0EF9H:  MOV   WORD PTR [L0A82H],0000H
  1461.          RET
  1462. ;
  1463. L0F00H:  XOR   DX,DX
  1464.          MOV   AX,WORD PTR [L0A82H]
  1465.          MOV   WORD PTR [L0A84H],000AH
  1466.          CALL  L0DBDH  
  1467. L0F0EH:  POP   AX
  1468.          MOV   BYTE PTR [BX]+0A86H,AL
  1469.          INC   BX
  1470.          CMP   BX,'@'
  1471.          JNZ   L0F1CH  
  1472.          CALL  L1114H  
  1473. L0F1CH:  DEC   CL
  1474.          JNZ   L0F0EH  
  1475.          MOV   AX,0A0DH
  1476.          MOV   WORD PTR [BX]+0A86H,AX
  1477.          INC   BX
  1478.          INC   BX
  1479.          CALL  L1114H  
  1480.          RET
  1481. ;
  1482. L0F2DH:  PUSH  SI
  1483.          PUSH  BX
  1484.          XOR   SI,SI
  1485.          XOR   CX,CX
  1486. L0F33H:  CMP   DH,0FFH
  1487.          JNZ   L0F40H  
  1488.          MOV   DI,WORD PTR [SI]+0A6EH
  1489.          MOV   BX,DI
  1490.          JMP   SHORT L0F65H  
  1491. L0F40H:  TEST  DH,2
  1492.          JZ    L0F4DH  
  1493.          LES   DI,DWORD PTR [SI]+0A52H;Load ES:DI with 32b pointer.
  1494.          MOV   BX,ES
  1495.          JMP   SHORT L0F65H  
  1496. L0F4DH:  CMP   AX,13H
  1497.          JC    L0F5FH  
  1498.          CMP   AX,27H
  1499.          JA    L0F5FH  
  1500.          LES   DI,DWORD PTR [SI]+0A5EH;Load ES:DI with 32b pointer.
  1501.          MOV   BX,ES
  1502.          JMP   SHORT L0F65H  
  1503. L0F5FH:  LES   DI,DWORD PTR [SI]+0A42H;Load ES:DI with 32b pointer.
  1504.          MOV   BX,ES
  1505. L0F65H:  CMP   BX,-1
  1506.          JNZ   L0F80H  
  1507.          CMP   DH,0FFH
  1508.          JNZ   L0F72H  
  1509.          STC                     ;Set the carry flag.
  1510.          JMP   SHORT L0F7EH  
  1511. L0F72H:  MOV   WORD PTR [L0A82H],AX
  1512.          MOV   AX,0FFFFH
  1513.          MOV   BP,0001H
  1514.          XOR   SI,SI
  1515.          CLC                     ;Clear the carry flag.
  1516. L0F7EH:  JMP   SHORT L0F8CH  
  1517. L0F80H:  CMP   BX,0
  1518.          JZ    L0F88H  
  1519.          CALL  L0FDCH  
  1520. L0F88H:  ADD   SI,4
  1521.          CLC                     ;Clear the carry flag.
  1522. L0F8CH:  JC    L0F94H  
  1523.          OR    CX,CX
  1524.          JNZ   L0F94H  
  1525.          JMP   SHORT L0F33H  
  1526. L0F94H:  PUSHF                   ;Push flag register.
  1527.          CMP   DH,1
  1528.          JNZ   L0FC3H  
  1529.          PUSH  DX
  1530.          PUSH  BP
  1531.          PUSH  CX
  1532.          PUSH  ES
  1533.          PUSH  DI
  1534.          PUSH  AX
  1535.          MOV   AX,0500H
  1536.          INT   2FH
  1537.          CMP   AL,0FFH
  1538.          POP   AX
  1539.          JNZ   L0FB3H  
  1540.          MOV   BX,AX
  1541.          MOV   AX,0502H
  1542.          INT   2FH
  1543.          JMP   SHORT L0FB4H  
  1544. L0FB3H:  STC                     ;Set the carry flag.
  1545. L0FB4H:  JNC   L0FBBH  
  1546.          POP   DI
  1547.          POP   ES
  1548.          POP   CX
  1549.          JMP   SHORT L0FC1H  
  1550. L0FBBH:  ADD   SP,6
  1551.          CALL  L0FCDH  
  1552. L0FC1H:  POP   BP
  1553.          POP   DX
  1554. L0FC3H:  JMP   SHORT L0FC6H  
  1555. ;
  1556. L0FC5H:  IRET                    ;Return from interupt.
  1557. L0FC6H:  PUSH  CS
  1558.          CALL  L0FC5H  
  1559.          POP   BX
  1560.          POP   SI
  1561.          RET
  1562. ;
  1563. L0FCDH:  PUSH  DI
  1564.          PUSH  AX
  1565.          MOV   CX,0FFFFH
  1566.          XOR   AL,AL
  1567.          REPNZ SCASB             ;Scan (DI)+- for byt in AL.
  1568.          NOT   CX
  1569.          DEC   CX
  1570.          POP   AX
  1571.          POP   DI
  1572.          RET
  1573. ;
  1574. L0FDCH:  CMP   BX,1
  1575.          JNZ   L0FFEH  
  1576.          CMP   WORD PTR [L0A6AH],-1
  1577.          JZ    L0FFEH  
  1578.          CMP   AX,0FFFFH
  1579.          JNZ   L0FF8H  
  1580.          PUSH  AX
  1581.          MOV   AX,WORD PTR [L0A82H]
  1582.          CALL  DWORD PTR [L0A6AH]
  1583.          POP   AX
  1584.          JMP   SHORT L0FFCH  
  1585. L0FF8H:  CALL  DWORD PTR [L0A6AH]
  1586. L0FFCH:  JMP   SHORT L1018H  
  1587. L0FFEH:  XOR   CX,CX
  1588.          CMP   DH,0FFH
  1589.          JZ    L100BH  
  1590.          MOV   CL,BYTE PTR ES:[DI]+3
  1591.          JMP   SHORT L1014H  
  1592. L100BH:  CMP   BYTE PTR CS:[DI],DH
  1593.          JNZ   L1014H  
  1594.          MOV   CL,BYTE PTR CS:[DI]+3
  1595. L1014H:  ADD   DI,4
  1596.          STC                     ;Set the carry flag.
  1597. L1018H:  JNC   L1047H  
  1598.          CLC                     ;Clear the carry flag.
  1599. L101BH:  OR    CX,CX
  1600.          JZ    L1038H  
  1601.          CMP   DH,0FFH
  1602.          JZ    L1029H  
  1603.          CMP   AX,WORD PTR ES:[DI]
  1604.          JMP   SHORT L102CH  
  1605. L1029H:  CMP   AX,WORD PTR CS:[DI]
  1606. L102CH:  JNZ   L1030H  
  1607.          JMP   SHORT L1039H  
  1608. L1030H:  DEC   CX
  1609.          JZ    L1038H  
  1610.          ADD   DI,4
  1611.          JMP   SHORT L101BH  
  1612. L1038H:  STC                     ;Set the carry flag.
  1613. L1039H:  JC    L1047H  
  1614.          CMP   DH,0FFH
  1615.          CLC                     ;Clear the carry flag.
  1616.          JNZ   L1043H  
  1617.          PUSH  CS
  1618.          POP   ES
  1619. L1043H:  ADD   DI,WORD PTR ES:[DI]+2
  1620. L1047H:  JC    L104FH  
  1621.          XOR   CH,CH
  1622.          MOV   CL,BYTE PTR ES:[DI]
  1623.          INC   DI
  1624. L104FH:  MOV   BYTE PTR [L0A7CH],0
  1625.          RET
  1626. ;
  1627. L1055H:  XOR   BX,BX
  1628.          CMP   BYTE PTR [SI]+6,0
  1629.          JNZ   L106EH  
  1630.          MOV   WORD PTR [BX]+0A86H,2D20H
  1631.          INC   BX
  1632.          INC   BX
  1633.          MOV   BYTE PTR [BX]+0A86H,20H
  1634.          INC   BX
  1635.          CALL  L1114H  
  1636. L106EH:  POP   BP
  1637.          XOR   BX,BX
  1638.          XOR   DX,DX
  1639.          MOV   BYTE PTR [L0A7CH],CL
  1640.          MOV   AL,BYTE PTR [SI]+9
  1641.          CMP   AL,CL
  1642.          JBE   L109CH  
  1643.          SUB   AL,CL
  1644.          MOV   DH,AL
  1645.          TEST  BYTE PTR [SI]+7,80H
  1646.          JZ    L109CH  
  1647. L1088H:  MOV   AL,BYTE PTR [SI]+10
  1648.          MOV   BYTE PTR [BX]+0A86H,AL
  1649.          INC   BX
  1650.          CMP   BX,'@'
  1651.          JNZ   L1098H  
  1652.          CALL  L1114H  
  1653. L1098H:  DEC   DH
  1654.          JNZ   L1088H  
  1655. L109CH:  CMP   BYTE PTR [SI]+8,0
  1656.          JZ    L10AFH  
  1657.          CMP   BYTE PTR [SI]+8,CL
  1658.          JNC   L10AFH  
  1659.          SUB   CL,BYTE PTR [SI]+8
  1660.          MOV   DL,CL
  1661.          MOV   CL,BYTE PTR [SI]+8
  1662. L10AFH:  OR    CX,CX
  1663.          JZ    L10D7H  
  1664. L10B3H:  TEST  BYTE PTR [SI]+7,0FH
  1665.          JNZ   L10C5H  
  1666.          TEST  BYTE PTR [SI]+7,10H
  1667.          JZ    L10C5H  
  1668.          MOV   AL,BYTE PTR ES:[DI]
  1669.          INC   DI
  1670.          JMP   SHORT L10C6H  
  1671. L10C5H:  POP   AX
  1672. L10C6H:  MOV   BYTE PTR [BX]+0A86H,AL
  1673.          INC   BX
  1674.          CMP   BX,'@'
  1675.          JNZ   L10D3H  
  1676.          CALL  L1114H  
  1677. L10D3H:  DEC   CL
  1678.          JNZ   L10B3H  
  1679. L10D7H:  TEST  BYTE PTR [SI]+7,80H
  1680.          JNZ   L10F5H  
  1681.          OR    DH,DH
  1682.          JZ    L10F5H  
  1683. L10E1H:  MOV   AL,BYTE PTR [SI]+10
  1684.          MOV   BYTE PTR [BX]+0A86H,AL
  1685.          INC   BX
  1686.          CMP   BX,'@'
  1687.          JNZ   L10F1H  
  1688.          CALL  L1114H  
  1689. L10F1H:  DEC   DH
  1690.          JNZ   L10E1H  
  1691. L10F5H:  TEST  BYTE PTR [SI]+7,0FH
  1692.          JNZ   L1103H  
  1693.          TEST  BYTE PTR [SI]+7,10H
  1694.          JZ    L1103H  
  1695.          JMP   SHORT L110FH  
  1696. L1103H:  OR    DL,DL
  1697.          JZ    L110FH  
  1698. L1107H:  POP   WORD PTR [L0A80H]
  1699.          DEC   DL
  1700.          JNZ   L1107H  
  1701. L110FH:  CALL  L1114H  
  1702.          PUSH  BP
  1703.          RET
  1704. ;
  1705. L1114H:  PUSH  CX
  1706.          PUSH  ES
  1707.          PUSH  DI
  1708.          PUSH  DS
  1709.          POP   ES
  1710.          MOV   CX,BX
  1711.          XOR   BX,BX
  1712.          LEA   DI,WORD PTR [L0A86H]
  1713.          CALL  L0C98H  
  1714.          JC    L112BH  
  1715.          POP   DI
  1716.          POP   ES
  1717.          POP   CX
  1718.          JMP   SHORT L112FH  
  1719. L112BH:  ADD   SP,6
  1720.          STC                     ;Set the carry flag.
  1721. L112FH:  RET
  1722. ;
  1723. L1130H:  POP   BP
  1724.          TEST  BYTE PTR [SI]+7,30H
  1725.          JNZ   L1149H  
  1726.          MOV   AL,BYTE PTR ES:[DI]
  1727.          PUSH  AX
  1728.          INC   CX
  1729.          CALL  L0D99H  
  1730.          JNC   L1147H  
  1731.          MOV   AL,BYTE PTR ES:[DI]+1
  1732.          PUSH  AX
  1733.          CLC                     ;Clear the carry flag.
  1734. L1147H:  JMP   SHORT L1156H  
  1735. L1149H:  MOV   AL,BYTE PTR ES:[DI]
  1736.          OR    AL,AL
  1737.          JZ    L1154H  
  1738.          INC   DI
  1739.          INC   CX
  1740.          JMP   SHORT L1149H  
  1741. L1154H:  SUB   DI,CX
  1742. L1156H:  PUSH  BP
  1743.          RET
  1744. L1158H:  DB    0FFH,05
  1745.          DB    0,8,1,0,' ',0,2,0
  1746.          DB    '4',0,',',1,'J',0
  1747.          DB    '-',1,94H,0,'.',1
  1748.          DB    0BCH,0,'/',1,0EDH
  1749.          DB    0,'0',1,'''',1,'1',1
  1750.          DB    'V',1,17H,'Incorrect DOS version',CR,LF
  1751.          DB    19H,'Original %1: set to %2:',CR,LF
  1752.          DB   'MRedirects requests for disk operations on one drive to a different drive.',CR,LF,CR,LF
  1753.          DB   '+ASSIGN [x[:]=y[:][...]]',CR,LF,'ASSIGN /STATUS',CR,LF,CR,LF
  1754.          DB    '4  x        Specifies the drive letter to reassign.',CR,LF
  1755.          DB    '=  y        Specifies the drive that x: will be assigned to.',CR,LF
  1756.          DB    '2  /STATUS  Displays current drive assignments.',CR,LF,CR,LF
  1757.          DB    'UType ASSIGN without parameters to reset all drive letters to original',CR,LF
  1758.          DB    'assignments.',CR,LF
  1759. ;
  1760. L1324H:  DB    0EH,7
  1761. L1326H:  DB    8DH,'>X',11H,81H
  1762. L132BH:  DB    0C1H,0D2H,1,0C3H
  1763. L132FH:  DB    1,5,0,1,0FFH,0FFH
  1764.          DB    4,0,11H,'Extended Error %1'
  1765. ;
  1766. L1349H:  DB    0EH,7,8DH,'>/',13H
  1767.          DB    83H
  1768. L1350H:  DB    0C1H,' ',0C3H
  1769. L1353H:  DB    2,5,0
  1770. L1356H:  DB    1,0FFH,0FFH,4
  1771. L135AH:  DB    0,0EH,'Parse Error %1'
  1772. ;
  1773. L136AH:  DB    0EH,7,8DH,'>S',13H
  1774.          DB    83H,0C1H,1DH,0C3H
  1775.          DB    0,0,0,0,0
  1776. L1379H:  DB    0,0
  1777. L137BH:  DB    0,0,0,0,0
  1778. L1380H:  DB    0,0
  1779. L1382H:  DB    0,0
  1780. L1384H:  DB    0,0
  1781. L1386H:  DB    0,0
  1782. L1388H:  DB    0
  1783. L1389H:  DB    0,0
  1784. L138BH:  DB    0
  1785. L138CH:  DB    0
  1786. L138DH:  DB    0
  1787. L138EH:  DB    0
  1788. L138FH:  DB    0,0
  1789. L1391H:  DB    0,0
  1790. L1393H:  DB    0
  1791. L1394H:  DB    0
  1792. L1395H:  DB    0,0
  1793. L1397H:  DB    0,0,0,0,0,0,0,0,0
  1794.          DB    0,0,0,0,0,0,0,0,0
  1795.          DB    0,0,0,0
  1796.          DB    0,0
  1797. L13AFH:  DB    0,0,0,0,0
  1798. L13B4H:  DB    0,0,0,0,0,0,0,0,0
  1799.          DB    0,0,0,0,0,0,0,0,0
  1800.          DB    0,0,0,0,0,0,0,0,0
  1801.          DB    0,0,0,0
  1802. L13D3H:  DB    0,0
  1803. L13D5H:  DB    0,0,0,0,0,0,0,0,0
  1804.          DB    0,0,0,0,0,0,0,0,0
  1805.          DB    0,0,0,0,0,0,0,0,0
  1806.          DB    0,0,0,0,0,0,0,0,0
  1807.          DB    0,0,0,0,0,0,0,0,0
  1808.          DB    0,0,0,0,0,0,0,0,0
  1809.          DB    0,0,0,0,0,0,0,0
  1810. L1413H:  DB    0,0,0,0
  1811. L1417H:  DB    0FFH,0,0,0,0
  1812. L141CH:  DB    0FFH,0,0,0,0
  1813. L1421H:  DB    0
  1814. ;
  1815. L1422H:  MOV   WORD PTR CS:[L138DH],0000H
  1816.          CLD                     ;Set forward direction flag.
  1817.          MOV   WORD PTR CS:[L1380H],CX
  1818.          MOV   WORD PTR CS:[L1382H],0000H
  1819.          MOV   WORD PTR CS:[L1395H],0000H
  1820.          MOV   WORD PTR CS:[L1386H],0000H
  1821.          CALL  L18CEH  
  1822.          JNC   L145CH  
  1823.          MOV   AX,0FFFFH
  1824.          PUSH  BX
  1825.          MOV   BX,WORD PTR ES:[DI]
  1826.          CMP   CL,BYTE PTR ES:[BX]
  1827.          JNC   L1458H  
  1828.          MOV   AX,0002H
  1829. L1458H:  POP   BX
  1830.          JMP   L157FH  
  1831. L145CH:  MOV   WORD PTR CS:[L138FH],SI
  1832.          PUSH  BX
  1833.          PUSH  DI
  1834.          PUSH  BP
  1835.          LEA   BX,WORD PTR [L1397H]
  1836.          TEST  BYTE PTR CS:[L138EH],20H
  1837.          JNZ   L14B3H  
  1838. L1470H:  LODSB                   ;Load AL with byt at (SI)+-.
  1839.          CALL  L198BH  
  1840.          JC    L14B2H  
  1841.          CALL  L18F4H  
  1842.          JZ    L14B2H  
  1843.          CALL  L192AH  
  1844.          JNZ   L1498H  
  1845.          TEST  BYTE PTR CS:[L138EH],20H
  1846.          JNZ   L148DH  
  1847.          CALL  L18CEH  
  1848.          JMP   SHORT L14B3H  
  1849. L148DH:  TEST  BYTE PTR CS:[L138EH],41H
  1850.          JZ    L14B3H  
  1851.          DEC   SI
  1852.          JMP   SHORT L14B3H  
  1853. L1498H:  MOV   BYTE PTR CS:[BX],AL
  1854.          CMP   AL,'='
  1855.          JNZ   L14A5H  
  1856.          OR    BYTE PTR CS:[L138EH],1
  1857. L14A5H:  INC   BX
  1858.          CALL  L19A9H  
  1859.          JNC   L1470H  
  1860.          LODSB                   ;Load AL with byt at (SI)+-.
  1861.          MOV   BYTE PTR CS:[BX],AL
  1862.          INC   BX
  1863.          JMP   SHORT L1470H  
  1864. L14B2H:  DEC   SI
  1865. L14B3H:  MOV   WORD PTR CS:[L1384H],SI
  1866.          MOV   BYTE PTR CS:[BX],0
  1867.          MOV   WORD PTR CS:[L1393H],BX
  1868.          MOV   BX,WORD PTR ES:[DI]
  1869.          LEA   SI,WORD PTR [L1397H]
  1870.          CMP   BYTE PTR CS:[SI],'/'
  1871.          JZ    L1504H  
  1872.          CMP   BYTE PTR CS:[SI],'"'
  1873.          JZ    L14DCH  
  1874.          TEST  BYTE PTR CS:[L138EH],1
  1875.          JNZ   L1530H  
  1876. L14DCH:  MOV   AL,BYTE PTR ES:[BX]+1
  1877.          XOR   AH,AH
  1878.          CMP   WORD PTR CS:[L1380H],AX
  1879.          JNC   L14FBH  
  1880.          MOV   AX,WORD PTR CS:[L1380H]
  1881.          SHL   AX,1
  1882.          INC   BX
  1883.          INC   BX
  1884.          ADD   BX,AX
  1885.          MOV   BX,WORD PTR ES:[BX]
  1886.          CALL  L1581H  
  1887.          JMP   SHORT L1564H  
  1888. L14FBH:  MOV   WORD PTR CS:[L1382H],0001H
  1889.          JMP   SHORT L1564H  
  1890. L1504H:  MOV   AL,BYTE PTR ES:[BX]+1
  1891.          XOR   AH,AH
  1892.          INC   AX
  1893.          SHL   AX,1
  1894.          ADD   BX,AX
  1895.          MOV   CL,BYTE PTR ES:[BX]
  1896.          XOR   CH,CH
  1897.          OR    CX,CX
  1898.          JZ    L1527H  
  1899.          INC   BX
  1900. L1519H:  PUSH  BX
  1901.          MOV   BX,WORD PTR ES:[BX]
  1902.          CALL  L15E6H  
  1903.          POP   BX
  1904.          JNC   L1564H  
  1905.          INC   BX
  1906.          INC   BX
  1907.          LOOP  L1519H            ;Dec CX, loop if CX<>0.
  1908. L1527H:  MOV   WORD PTR CS:[L1382H],0003H
  1909.          JMP   SHORT L1564H  
  1910. L1530H:  MOV   AL,BYTE PTR ES:[BX]+1
  1911.          XOR   AH,AH
  1912.          INC   AX
  1913.          SHL   AX,1
  1914.          ADD   BX,AX
  1915.          MOV   AL,BYTE PTR ES:[BX]
  1916.          XOR   AH,AH
  1917.          SHL   AX,1
  1918.          INC   AX
  1919.          ADD   BX,AX
  1920.          MOV   CL,BYTE PTR ES:[BX]
  1921.          XOR   CH,CH
  1922.          OR    CX,CX
  1923.          JZ    L155DH  
  1924.          INC   BX
  1925. L154FH:  PUSH  BX
  1926.          MOV   BX,WORD PTR ES:[BX]
  1927.          CALL  L15B3H  
  1928.          POP   BX
  1929.          JNC   L1564H  
  1930.          INC   BX
  1931.          INC   BX
  1932.          LOOP  L154FH            ;Dec CX, loop if CX<>0.
  1933. L155DH:  MOV   WORD PTR CS:[L1382H],0004H
  1934. L1564H:  POP   BP
  1935.          POP   DI
  1936.          POP   BX
  1937.          MOV   CX,WORD PTR CS:[L1380H]
  1938.          MOV   AX,WORD PTR CS:[L1382H]
  1939.          MOV   SI,WORD PTR CS:[L1384H]
  1940.          MOV   DX,WORD PTR CS:[L1386H]
  1941.          MOV   BL,BYTE PTR CS:[L1388H]
  1942. L157FH:  CLC                     ;Clear the carry flag.
  1943.          RET
  1944. ;
  1945. L1581H:  PUSH  AX
  1946.          MOV   AX,WORD PTR ES:[BX]
  1947.          TEST  AX,02H
  1948.          JNZ   L158FH  
  1949.          INC   WORD PTR CS:[L1380H]
  1950. L158FH:  CMP   BYTE PTR CS:[SI],0
  1951.          JNZ   L15AEH  
  1952.          TEST  AX,01H
  1953.          JNZ   L15A3H  
  1954.          MOV   WORD PTR CS:[L1382H],0002H
  1955.          JMP   SHORT L15B1H  
  1956. L15A3H:  PUSH  AX
  1957.          MOV   AL,3
  1958.          MOV   AH,0FFH
  1959.          CALL  L1649H  
  1960.          POP   AX
  1961.          JMP   SHORT L15B1H  
  1962. L15AEH:  CALL  L16CEH  
  1963. L15B1H:  POP   AX
  1964.          RET
  1965. ;
  1966. L15B3H:  STC                     ;Set the carry flag.
  1967.          RET
  1968. ;
  1969. L15B5H:  PUSH  BP
  1970.          PUSH  CX
  1971.          MOV   CL,BYTE PTR ES:[BX]+8
  1972.          XOR   CH,CH
  1973.          OR    CX,CX
  1974.          JZ    L15CEH  
  1975.          LEA   BP,WORD PTR [BX]+9
  1976. L15C4H:  CALL  L182BH  
  1977.          JNC   L15D1H  
  1978.          CALL  L15DAH  
  1979.          LOOP  L15C4H            ;Dec CX, loop if CX<>0.
  1980. L15CEH:  STC                     ;Set the carry flag.
  1981.          JMP   SHORT L15D7H  
  1982. L15D1H:  MOV   WORD PTR CS:[L1395H],BP
  1983.          CLC                     ;Clear the carry flag.
  1984. L15D7H:  POP   CX
  1985.          POP   BP
  1986.          RET
  1987. ;
  1988. L15DAH:  CMP   BYTE PTR ES:[BP]+0,0
  1989.          JZ    L15E4H  
  1990.          INC   BP
  1991.          JMP   SHORT L15DAH  
  1992. L15E4H:  INC   BP
  1993.          RET
  1994. ;
  1995. L15E6H:  OR    BYTE PTR CS:[L138EH],10H
  1996.          CALL  L15B5H  
  1997.          JC    L163BH  
  1998.          AND   BYTE PTR CS:[L138EH],0EFH
  1999.          PUSH  AX
  2000.          MOV   AX,WORD PTR CS:[L1391H]
  2001.          SUB   AX,SI
  2002.          ADD   WORD PTR CS:[L138FH],AX
  2003.          POP   AX
  2004.          MOV   SI,WORD PTR CS:[L1391H]
  2005.          CMP   BYTE PTR CS:[SI],0
  2006.          JNZ   L1635H  
  2007.          CMP   BYTE PTR CS:[SI]-1,':'
  2008.          JNZ   L161FH  
  2009.          MOV   WORD PTR CS:[L1382H],0009H
  2010.          JMP   SHORT L163EH  
  2011. L161FH:  CMP   WORD PTR ES:[BX],0
  2012.          JZ    L163EH  
  2013.          TEST  WORD PTR ES:[BX],01H
  2014.          JNZ   L163EH  
  2015.          MOV   WORD PTR CS:[L1382H],02H
  2016.          JMP   SHORT L163EH  
  2017. L1635H:  CALL  L16CEH  
  2018.          CLC                     ;Clear the carry flag.
  2019.          JMP   SHORT L1648H  
  2020. L163BH:  STC                     ;Set the carry flag.
  2021.          JMP   SHORT L1648H  
  2022. L163EH:  PUSH  AX
  2023.          MOV   AL,3
  2024.          MOV   AH,0FFH
  2025.          CALL  L1649H  
  2026.          POP   AX
  2027.          CLC                     ;Clear the carry flag.
  2028. L1648H:  RET
  2029. ;
  2030. L1649H:  PUSH  DI
  2031.          MOV   DI,WORD PTR ES:[BX]+4
  2032.          MOV   WORD PTR CS:[L1386H],DI
  2033.          MOV   BYTE PTR ES:[DI],AL
  2034.          MOV   BYTE PTR ES:[DI]+1,AH
  2035.          PUSH  AX
  2036.          MOV   AX,WORD PTR CS:[L1395H]
  2037.          MOV   WORD PTR ES:[DI]+2,AX
  2038.          POP   AX
  2039.          CMP   AL,1
  2040.          JNZ   L1672H  
  2041. L1668H:  MOV   WORD PTR ES:[DI]+4,DX
  2042.          MOV   WORD PTR ES:[DI]+6,CX
  2043.          JMP   SHORT L16CCH  
  2044. L1672H:  CMP   AL,2
  2045.          JNZ   L167CH  
  2046.          MOV   WORD PTR ES:[DI]+4,DX
  2047.          JMP   SHORT L16CCH  
  2048. L167CH:  CMP   AL,7
  2049.          JZ    L1668H  
  2050.          CMP   AL,8
  2051.          JZ    L1668H  
  2052.          CMP   AL,6
  2053.          JNZ   L168EH  
  2054.          MOV   BYTE PTR ES:[DI]+4,DL
  2055.          JMP   SHORT L16CCH  
  2056. L168EH:  CMP   AL,4
  2057.          JNZ   L16A1H  
  2058.          MOV   AX,WORD PTR CS:[L138FH]
  2059.          INC   AX
  2060.          MOV   WORD PTR ES:[DI]+4,AX
  2061.          MOV   WORD PTR ES:[DI]+6,DS
  2062.          JMP   SHORT L16CCH  
  2063. L16A1H:  MOV   WORD PTR ES:[DI]+4,SI
  2064.          MOV   WORD PTR ES:[DI]+6,CS
  2065.          PUSH  AX
  2066.          TEST  BYTE PTR ES:[BX]+2,1
  2067.          JZ    L16B5H  
  2068.          MOV   AL,4
  2069.          JMP   SHORT L16BEH  
  2070. L16B5H:  TEST  BYTE PTR ES:[BX]+2,2
  2071.          JZ    L16C1H  
  2072.          MOV   AL,2
  2073. L16BEH:  CALL  L1747H  
  2074. L16C1H:  POP   AX
  2075.          TEST  BYTE PTR ES:[BX]+2,10H
  2076.          JZ    L16CCH  
  2077.          CALL  L1721H  
  2078. L16CCH:  POP   DI
  2079.          RET
  2080. ;
  2081. L16CEH:  MOV   BYTE PTR CS:[L1421H],0
  2082.          PUSH  AX
  2083.          MOV   AX,WORD PTR ES:[BX]
  2084.          OR    AX,AX
  2085.          JNZ   L16F4H  
  2086.          PUSH  AX
  2087.          PUSH  BX
  2088.          PUSH  DX
  2089.          PUSH  DI
  2090.          MOV   WORD PTR CS:[L1382H],0009H
  2091.          MOV   AH,0FFH
  2092.          MOV   AL,3
  2093.          CALL  L1649H  
  2094.          POP   DI
  2095.          POP   DX
  2096.          POP   BX
  2097.          POP   AX
  2098.          JMP   SHORT L16F6H  
  2099. L16F4H:  JMP   SHORT L16F9H  
  2100. L16F6H:  JMP   SHORT L1708H  
  2101.          NOP
  2102. L16F9H:  TEST  AX,2000H
  2103.          JZ    L1708H  
  2104.          MOV   WORD PTR CS:[L1382H],0000H
  2105.          CALL  L17C2H  
  2106. L1708H:  CMP   BYTE PTR CS:[L1421H],1
  2107.          JNZ   L171FH  
  2108.          CMP   WORD PTR CS:[L1382H],0
  2109.          JNZ   L171FH  
  2110.          MOV   WORD PTR CS:[L1382H],0009H
  2111. L171FH:  POP   AX
  2112.          RET
  2113. ;
  2114. L1721H:  PUSH  AX
  2115.          PUSH  SI
  2116. L1723H:  MOV   AL,BYTE PTR CS:[SI]
  2117.          OR    AL,AL
  2118.          JZ    L1744H  
  2119.          CMP   AL,':'
  2120.          JNZ   L173BH  
  2121.          CMP   BYTE PTR CS:[SI]+1,0
  2122.          JNZ   L173BH  
  2123.          MOV   BYTE PTR CS:[SI],0
  2124.          JMP   SHORT L1744H  
  2125. L173BH:  CALL  L19A9H  
  2126.          JNC   L1741H  
  2127.          INC   SI
  2128. L1741H:  INC   SI
  2129.          JMP   SHORT L1723H  
  2130. L1744H:  POP   SI
  2131.          POP   AX
  2132.          RET
  2133. ;
  2134. L1747H:  PUSH  SI
  2135.          PUSH  DX
  2136.          MOV   DL,AL
  2137. L174BH:  MOV   AL,BYTE PTR CS:[SI]
  2138.          CALL  L19A9H  
  2139.          JC    L175FH  
  2140.          OR    AL,AL
  2141.          JZ    L1763H  
  2142.          CALL  L1766H  
  2143.          MOV   BYTE PTR CS:[SI],AL
  2144.          JMP   SHORT L1760H  
  2145. L175FH:  INC   SI
  2146. L1760H:  INC   SI
  2147.          JMP   SHORT L174BH  
  2148. L1763H:  POP   DX
  2149.          POP   SI
  2150.          RET
  2151. ;
  2152. L1766H:  CMP   AL,80H
  2153.          JNC   L1776H  
  2154.          CMP   AL,'a'
  2155.          JC    L17B3H  
  2156.          CMP   AL,'z'
  2157.          JA    L17B3H  
  2158.          AND   AL,0DFH
  2159.          JMP   SHORT L17B3H  
  2160. L1776H:  PUSH  BX
  2161.          PUSH  ES
  2162.          PUSH  DI
  2163.          LEA   DI,WORD PTR [L141CH]
  2164.          CMP   DL,4
  2165.          JZ    L1786H  
  2166.          LEA   DI,WORD PTR [L1417H]
  2167. L1786H:  CMP   BYTE PTR CS:[DI],DL
  2168.          JZ    L17A2H  
  2169.          PUSH  AX
  2170.          PUSH  CX
  2171.          PUSH  DX
  2172.          PUSH  CS
  2173.          POP   ES
  2174.          MOV   AH,65H
  2175.          MOV   AL,DL
  2176.          MOV   BX,0FFFFH
  2177.          MOV   CX,0005H
  2178.          MOV   DX,0FFFFH
  2179.          MSDOS
  2180.          POP   DX
  2181.          POP   CX
  2182.          POP   AX
  2183. L17A2H:  MOV   BX,WORD PTR CS:[DI]+1
  2184.          MOV   ES,WORD PTR CS:[DI]+3
  2185.          INC   BX
  2186.          INC   BX
  2187.          SUB   AL,80H
  2188.          DB    26H               ; ??? ES: ???
  2189.          XLAT                    ;Xlat (AL) using table at (BX).
  2190.          POP   DI
  2191.          POP   ES
  2192.          POP   BX
  2193. L17B3H:  RET
  2194.          CMP   AL,'0'
  2195.          JC    L17C0H  
  2196.          CMP   AL,'9'
  2197.          JA    L17C0H  
  2198.          SUB   AL,30H
  2199.          CLC                     ;Clear the carry flag.
  2200.          RET
  2201. L17C0H:  STC                     ;Set the carry flag.
  2202.          RET
  2203. ;
  2204. L17C2H:  PUSH  AX
  2205.          PUSH  BX
  2206.          PUSH  DX
  2207.          PUSH  DI
  2208.          MOV   DI,WORD PTR ES:[BX]+6
  2209.          MOV   AL,BYTE PTR ES:[DI]
  2210.          OR    AL,AL
  2211.          JNZ   L17D5H  
  2212.          MOV   AH,0FFH
  2213.          JMP   SHORT L1821H  
  2214. L17D5H:  CMP   AL,3
  2215.          JNZ   L1818H  
  2216.          INC   DI
  2217.          MOV   AL,BYTE PTR ES:[DI]
  2218.          MOV   AH,9
  2219.          MUL   AH
  2220.          INC   AX
  2221.          ADD   DI,AX
  2222.          MOV   AL,BYTE PTR ES:[DI]
  2223.          MOV   AH,5
  2224.          MUL   AH
  2225.          INC   AX
  2226.          ADD   DI,AX
  2227.          MOV   AL,BYTE PTR ES:[DI]
  2228.          INC   DI
  2229.          INC   DI
  2230. L17F3H:  MOV   BP,WORD PTR ES:[DI]
  2231.          CALL  L182BH  
  2232.          JNC   L180DH  
  2233.          ADD   DI,3
  2234.          DEC   AL
  2235.          JNZ   L17F3H  
  2236.          MOV   WORD PTR CS:[L1382H],0008H
  2237.          MOV   AH,0FFH
  2238.          JMP   SHORT L1821H  
  2239. L180DH:  MOV   AH,BYTE PTR ES:[DI]-1
  2240.          MOV   AL,2
  2241.          MOV   DX,WORD PTR ES:[DI]
  2242.          JMP   SHORT L1823H  
  2243. L1818H:  MOV   WORD PTR CS:[L1382H],09H
  2244.          MOV   AH,0FFH
  2245. L1821H:  MOV   AL,3
  2246. L1823H:  CALL  L1649H  
  2247.          POP   DI
  2248.          POP   DX
  2249.          POP   BX
  2250.          POP   AX
  2251.          RET
  2252. ;
  2253. L182BH:  PUSH  AX
  2254.          PUSH  BP
  2255.          PUSH  DX
  2256.          PUSH  SI
  2257.          MOV   DL,2
  2258. L1831H:  MOV   AL,BYTE PTR CS:[SI]
  2259.          CALL  L19A9H  
  2260.          JC    L1875H  
  2261.          CALL  L1766H  
  2262.          TEST  BYTE PTR CS:[L138EH],8
  2263.          JZ    L1851H  
  2264.          CMP   AL,'='
  2265.          JNZ   L1867H  
  2266.          CMP   BYTE PTR ES:[BP]+1,0
  2267.          JNZ   L18C0H  
  2268.          JMP   SHORT L1864H  
  2269. L1851H:  TEST  BYTE PTR CS:[L138EH],10H
  2270.          JZ    L1867H  
  2271.          CMP   AL,':'
  2272.          JNZ   L1867H  
  2273.          CMP   BYTE PTR ES:[BP]+0,0
  2274.          JNZ   L18C0H  
  2275. L1864H:  INC   SI
  2276.          JMP   SHORT L18C3H  
  2277. L1867H:  CMP   AL,BYTE PTR ES:[BP]+0
  2278.          JNZ   L188AH  
  2279.          OR    AL,AL
  2280.          JZ    L18C3H  
  2281.          INC   SI
  2282.          INC   BP
  2283.          JMP   SHORT L1888H  
  2284. L1875H:  CMP   AL,BYTE PTR ES:[BP]+0
  2285.          JNZ   L18C0H  
  2286.          INC   SI
  2287.          MOV   AL,BYTE PTR CS:[SI]
  2288.          INC   BP
  2289.          CMP   AL,BYTE PTR ES:[BP]+0
  2290.          JNZ   L18C0H  
  2291.          INC   SI
  2292.          INC   BP
  2293. L1888H:  JMP   SHORT L1831H  
  2294. L188AH:  TEST  BYTE PTR CS:[L138EH],40H
  2295.          JZ    L18A1H  
  2296.          TEST  WORD PTR ES:[BX]+2,0020H
  2297.          JZ    L18A1H  
  2298.          CMP   BYTE PTR ES:[BP]+0,0
  2299.          JZ    L18C3H  
  2300. L18A1H:  TEST  WORD PTR ES:[BX],0010H
  2301.          JZ    L18C0H  
  2302.          CMP   AL,':'
  2303.          JNZ   L18B5H  
  2304.          CMP   BYTE PTR ES:[BP]+0,0
  2305.          JNZ   L18C0H  
  2306.          JMP   SHORT L18C3H  
  2307. L18B5H:  CMP   AL,0
  2308.          JNZ   L18C0H  
  2309.          CMP   BYTE PTR ES:[BP]+0,':'
  2310.          JZ    L18C3H  
  2311. L18C0H:  STC                     ;Set the carry flag.
  2312.          JMP   SHORT L18C9H  
  2313. L18C3H:  MOV   WORD PTR CS:[L1391H],SI
  2314.          CLC                     ;Clear the carry flag.
  2315. L18C9H:  POP   SI
  2316.          POP   DX
  2317.          POP   BP
  2318.          POP   AX
  2319.          RET
  2320. ;
  2321. L18CEH:  LODSB                   ;Load AL with byt at (SI)+-.
  2322.          CALL  L18F4H  
  2323.          JZ    L18ECH  
  2324.          CALL  L192AH  
  2325.          JNZ   L18EFH  
  2326.          TEST  BYTE PTR CS:[L138EH],20H
  2327.          JZ    L18CEH  
  2328.          TEST  BYTE PTR CS:[L138EH],41H
  2329.          JZ    L18F2H  
  2330.          DEC   SI
  2331.          JMP   SHORT L18F2H  
  2332. L18ECH:  STC                     ;Set the carry flag.
  2333.          JMP   SHORT L18F0H  
  2334. L18EFH:  CLC                     ;Clear the carry flag.
  2335. L18F0H:  DEC   SI
  2336.          RET
  2337. L18F2H:  CLC                     ;Clear the carry flag.
  2338.          RET
  2339. ;
  2340. L18F4H:  PUSH  BX
  2341.          PUSH  CX
  2342.          CMP   AL,CR
  2343.          JZ    L1927H  
  2344.          CMP   AL,0
  2345.          JZ    L1927H  
  2346.          CMP   AL,LF
  2347.          JZ    L1927H  
  2348.          CMP   BYTE PTR ES:[DI]+2,2
  2349.          JC    L1927H  
  2350.          XOR   BX,BX
  2351.          MOV   BL,BYTE PTR ES:[DI]+3
  2352.          ADD   BX,4
  2353.          CMP   BYTE PTR ES:[BX+DI],0
  2354.          JZ    L1925H  
  2355.          XOR   CX,CX
  2356.          MOV   CL,BYTE PTR ES:[BX+DI]
  2357. L191DH:  INC   BX
  2358.          CMP   AL,BYTE PTR ES:[BX+DI]
  2359.          JZ    L1927H  
  2360.          LOOP  L191DH            ;Dec CX, loop if CX<>0.
  2361. L1925H:  CMP   AL,CR
  2362. L1927H:  POP   CX
  2363.          POP   BX
  2364.          RET
  2365. ;
  2366. L192AH:  PUSH  BX
  2367.          PUSH  CX
  2368.          MOV   BYTE PTR CS:[L1388H],20H
  2369.          AND   BYTE PTR CS:[L138EH],0DFH
  2370.          CMP   AL,' '
  2371.          JZ    L1972H  
  2372.          CMP   AL,HT
  2373.          JZ    L1972H  
  2374.          CMP   AL,','
  2375.          JZ    L1975H  
  2376.          CMP   AL,' '
  2377.          JNZ   L1954H  
  2378.          CMP   BYTE PTR [SI],' '
  2379.          JNZ   L1954H  
  2380.          MOV   AL,20H
  2381.          INC   SI
  2382.          CMP   AL,AL
  2383.          JMP   SHORT L1972H  
  2384. L1954H:  CMP   BYTE PTR ES:[DI]+2,1
  2385.          JC    L1972H  
  2386.          XOR   CX,CX
  2387.          MOV   CL,BYTE PTR ES:[DI]+3
  2388.          OR    CX,CX
  2389.          JZ    L1970H  
  2390.          MOV   BX,0003H
  2391. L1968H:  INC   BX
  2392.          CMP   AL,BYTE PTR ES:[BX+DI]
  2393.          JZ    L1975H  
  2394.          LOOP  L1968H            ;Dec CX, loop if CX<>0.
  2395. L1970H:  CMP   AL,' '
  2396. L1972H:  POP   CX
  2397.          POP   BX
  2398.          RET
  2399. L1975H:  MOV   BYTE PTR CS:[L1388H],AL
  2400.          TEST  BYTE PTR CS:[L138EH],1
  2401.          JNZ   L1987H  
  2402.          OR    BYTE PTR CS:[L138EH],20H
  2403. L1987H:  CMP   AL,AL
  2404.          JMP   SHORT L1972H  
  2405. ;
  2406. L198BH:  LEA   BP,WORD PTR [L1397H]
  2407.          CMP   BX,BP
  2408.          JZ    L199DH  
  2409.          CMP   AL,'/'
  2410.          JNZ   L199AH  
  2411.          STC                     ;Set the carry flag.
  2412.          JMP   SHORT L19A8H  
  2413. L199AH:  CLC                     ;Clear the carry flag.
  2414.          JMP   SHORT L19A8H  
  2415. L199DH:  CMP   AL,'/'
  2416.          JNZ   L19A7H  
  2417.          OR    BYTE PTR CS:[L138EH],40H
  2418. L19A7H:  CLC                     ;Clear the carry flag.
  2419. L19A8H:  RET
  2420. ;
  2421. L19A9H:  PUSH  DS
  2422.          PUSH  SI
  2423.          PUSH  BX
  2424.          CMP   WORD PTR CS:[L138BH],0
  2425.          JNZ   L19DBH  
  2426.          PUSH  AX
  2427.          PUSH  DS
  2428.          PUSH  CX
  2429.          PUSH  DX
  2430.          PUSH  DI
  2431.          PUSH  BP
  2432.          PUSH  ES
  2433.          XOR   SI,SI
  2434.          MOV   DS,SI
  2435.          MOV   AX,6300H
  2436.          MSDOS
  2437.          MOV   BX,DS
  2438.          OR    BX,BX
  2439.          POP   ES
  2440.          POP   BP
  2441.          POP   DI
  2442.          POP   DX
  2443.          POP   CX
  2444.          POP   DS
  2445.          POP   AX
  2446.          JZ    L19FAH  
  2447.          MOV   WORD PTR CS:[L1389H],SI
  2448.          MOV   WORD PTR CS:[L138BH],BX
  2449. L19DBH:  MOV   SI,WORD PTR CS:[L1389H]
  2450.          MOV   DS,WORD PTR CS:[L138BH]
  2451. L19E5H:  CMP   WORD PTR [SI],0
  2452.          JZ    L19FAH  
  2453.          CMP   AL,BYTE PTR [SI]
  2454.          JC    L19F6H  
  2455.          CMP   AL,BYTE PTR [SI]+1
  2456.          JA    L19F6H  
  2457.          STC                     ;Set the carry flag.
  2458.          JMP   SHORT L19FBH  
  2459. L19F6H:  INC   SI
  2460.          INC   SI
  2461.          JMP   SHORT L19E5H  
  2462. L19FAH:  CLC                     ;Clear the carry flag.
  2463. L19FBH:
  2464.          POP   BX
  2465.          POP   SI
  2466.          POP   DS
  2467.          RET
  2468. Code_Seg ENDS
  2469.          END   L0100H  
  2470.