LS-DOS 6.3.1 - CMDFILE Assembly Listing (HTML format version)

[Copyright 1999,2002 Frank Durda IV, All Rights Reserved.
Mirroring of any material on this page in any form is expressly prohibited.
The official web site for this material is:  http://nemesis.lonestar.org
Contact this address for use clearances: clearance at nemesis.lonestar.org
Comments and queries to this address: web_software_2011 at nemesis.lonestar.org]
MISOSYS EDAS-4.3 04/19/99 21:13:10 CMDFILE - Version 1.5        Page 00001 

              00001 ;CMDFIL/ASM - 08/16/82
FFFF          00003 DOS6    EQU     -1
FFFF          00004 NOTTAPE EQU     -1
0000          00005 NOTDISK EQU     .NOT.NOTTAPE
FFFF          00006 LDOS    EQU     -1
0000          00007 EDAS    EQU     0
0000          00008 SIMUTEK EQU     0
0000          00009 MOD1    EQU     0
FFFF          00010 MOD3    EQU     .NOT.MOD1
FFFF          00011 EXPAND  DEFL    -1
              00012         IF      EDAS!SIMUTEK!LDOS
0000          00013 EXPAND  DEFL    0
              00014         ENDIF
              00015 ;*=*=*
              00016 ;       COMMAND FILE UTILITY PROGRAM
              00017 ;
              00018 ;       Copyright (C) 1979
              00019 ;       MISOSYS
              00020 ;       5904 Edgehill Drive
              00021 ;       Alexandria, VA. 22303
              00022 ;*=*=*
              00023 ;
              00024 ;       Change Log
              00025 ;
              00026 ; 12-11-79 >ADDED OFFSET DRIVERS
              00027 ; 12-11-79 >ADDED YESNO ROUTINE
              00028 ; 12-12-79 >ADDED SUPPRESSION OF KBD DBNC DRVR OFFSET
              00029 ; 12-15-79 >RECYCLE TAPE OUTPUT TO ITSELF ON ANOTHER
              00030 ; 12-15-79 >SHIFTED INIT OF LO & HI TO AFTER 'NOPRT'
              00031 ; 12-20-79 >ADD BYPASS TO OUTPUT LO/HI IF INPUT FROM TAPE
              00032 ; 12-21-79 >ADDED PRINT & DSPLY ROUTINES FOR NON-DOS USER
              00033 ; 12-22-79 >ADDED LO/HI DETECTION FOR TAPE INPUT
              00034 ; 12-25-79 >ADDED PATCH TO 'SYSTEM' DOS HOOK AT 41E2H
              00035 ; 12-27-79 >CORRECTED TRAADR WHEN OFFSET OR USER CHANGE
              00036 ; 07-09-80 >Converted messages to lower case
              00037 ; 07-26-80 >Added test to uery, added default CMD
              00038 ;          >added FSPEC & FEXT, suppresses offset
              00039 ;          >if blkadr < 4200H
              00040 ; 09-21-80 >added wrret after cas prompt
              00041 ; 09-26-80 >added offset restriction option
              00042 ; 09-28-80 -> added routine to read VTOS ISAM file
              00043 ; 01/19/81 -> added EOF correction in close & modified
              00044 ;               for LDOS directory function
              00045 ; 02/01/81 -> Corrected offset ORG if keyboard debounce
              00046 ; 02/07/81 -> corrected EOF & offset e/w kbd dbnc
              00047 ; 06/15/81 -> Model III conversion
              00048 ; 06/18/81 -> Modified Query for /EXT option
              00049 ; 09/16/81 - Added CMDFILEA/FX3
              00050 ; 10/16/81 - Updated to latest - couldn't find deck
              00051 ;       & added PATCH1 to correct offsetting if <4200
              00052 ; 10/26/81 - Convert tape FILNAM to U/C
              00053 ; 10-30-81 - Added patch2 for l/c -> U/C tape filename
              00054 ; 11/04/81 - Adapted to one version, improved disk driver
              00055 ;       & altered YESNO to reprompt
              00056 ; 12/11/81 - Corrected TAPERD clobbering HL memory ptr
              00057 ; 01/14/82 - Corrected read of SYS6/SYS7
              00058 ; 01/27/82 - Corrected EOF+1 due to BUFPTR handling
              00059 ; 08/15/82 - Corrected CHKMEM to RET NZ
              00060 ;*****
000A          00061 LF      EQU     10
000D          00062 CR      EQU     13
01F8          00063 CTOFF   EQU     01F8H
0212          00064 CTON    EQU     0212H
022C          00065 CSTAR   EQU     022CH
0235          00066 RDBYT   EQU     0235H
0264          00067 WRBYT   EQU     0264H
0287          00068 WRLDR   EQU     0287H
0296          00069 RDLDR   EQU     0296H
0314          00070 TAPADR  EQU     0314H
3042          00071 SETCAS  EQU     3042H
37E1          00072 SELECT  EQU     37E1H
4015          00073 KDCB$   EQU     4015H
401D          00074 DDCB$   EQU     401DH
4020          00075 CURSOR$ EQU     4020H
4025          00076 PDCB$   EQU     4025H
402D          00077 @EXIT   EQU     402DH
402F          00078 LVLFLG  EQU     402FH
06CC          00079 BASIC1  EQU     6CCH
1A19          00080 BASIC3  EQU     1A19H
4049          00081 HIGH1   EQU     4049H
4411          00082 HIGH3   EQU     4411H
4473          00083 FEXT1   EQU     4473H
444B          00084 FEXT3   EQU     444BH
03E3          00085 KIADR1  EQU     3E3H
3024          00086 KIADR3  EQU     3024H
              00087 ;
44B8          00088 CKDRV1  EQU     44B8H
4209          00089 CKDRV3  EQU     4209H
4463          00090 DODIR1  EQU     4463H           ;LDOS Model I
4419          00091 DODIR3  EQU     4419H           ;Model III only
              00092 ;
              00094 ;
              00095         IF      NOTDISK
              00096         ORG     41E2H
              00097         JP      5400H
              00098         ENDIF
              00099 ;
              00100         IF      DOS6
0000          00101 *GET    SVCMAC
              00102 ;SVCMAC/ASM - LS-DOS Version VI
              00103 *LIST   OFF
              00495 *LIST   ON
2600          00497         ORG     2600H
2600          00498 BUFFER$ DS      256
2700          00499 STACK   DS      256
2800 310028   00500 START   LD      SP,$
2803 210000   00501         LD      HL,0
2806 45       00502         LD      B,L
2807          00503         @@HIGH$
2807+3E64     00504         LD      A,100
2809+EF       00505         RST     40
280A 22E52B   00506         LD      (HIGHEST+1),HL
280D 211D2D   00507         LD      HL,RST24
2810 3EC3     00508         LD      A,0C3H
2812 321800   00509         LD      (24),A
2815 221900   00510         LD      (25),HL
              00511         ELSE
              00513         ORG     5200H
              00514 BUFFER$ DS      256
              00515 STACK   DS      256
              00516 START   LD      SP,$
              00517         LD      A,(125H)        ;Ck Mod I or III
              00518         CP      'I'             ;Is it a III?
              00519         JR      Z,MODEL3        ;Go if Model III
              00520         LD      A,3
              00521         LD      (CASMSG+24),A   ;Strip  from prompt
              00522         LD      HL,@KEY
              00523         LD      (PRMPT+1),HL    ;Chg SETCAS to get KEY
              00524         LD      HL,HIGH1        ;Reset HIGH$ pointer
              00525         LD      (HIGHEST+1),HL
              00526         LD      HL,FEXT1        ;Reset FEXT call
              00527         LD      (FEXT+1),HL
              00528 ;
              00529         IF      .NOT.LDOS
              00530         LD      HL,BASIC1       ;Reset BASIX exit vector
              00531         LD      (BASIC+1),HL
              00532         ENDIF
              00533 ;
              00534         LD      HL,KIADR1       ;Reset debounce inhibit
              00535         LD      (KIHOOK),HL
              00536 ;
              00537         IF      LDOS
              00538         LD      HL,DODIR1
              00539         LD      (DODIR+1),HL
              00540         LD      HL,CKDRV1
              00541         LD      (NOEXT+1),HL
              00542         ENDIF
              00543 ;
              00544 MODEL3
              00545         ENDIF
2818 215C2D   00546         LD      HL,HELLO$
281B CD0A2D   00547         CALL    DSPLY
281E AF       00548         XOR     A
281F 320432   00549         LD      (PRTFLG),A
2822 216F2E   00550         LD      HL,PRTREQ
2825 CDE12C   00551         CALL    YESNO
2828 3803     00552         JR      C,NOPRT
282A 320432   00553         LD      (PRTFLG),A
282D 210333   00554 NOPRT   LD      HL,MEMBUF+3
2830 22F231   00555         LD      (MEMPTR),HL
2833 AF       00556         XOR     A
2834 320632   00557         LD      (HLDFLG),A      ;Zero DBNC hold flag
2837 67       00558         LD      H,A
2838 6F       00559         LD      L,A
2839 22FE31   00560         LD      (OFFSET),HL
283C 22FA31   00561         LD      (HIADR),HL      ;Init hi and lo
283F 2B       00562         DEC     HL
2840 22FC31   00563         LD      (LOADR),HL
              00564 ;
2843 310028   00565 BEGIN   LD      SP,START
2846 21982F   00566         LD      HL,INPMPT
2849 CD162C   00567         CALL    GETARG
284C 282F     00568         JR      Z,OUTPUT
284E 7E       00569         LD      A,(HL)
284F E65F     00570         AND     5FH             ;Strip lower case
              00571 ;
              00572         IF      EXPAND!LDOS
2851 FE51     00573         CP      'Q'
2853 CA8C2C   00574         JP      Z,QUERY
              00575         ENDIF
              00576 ;
2856 2AF231   00577         LD      HL,(MEMPTR)
2859 2B       00578         DEC     HL              ;Backup over TRAADR
285A 2B       00579         DEC     HL
285B 2B       00580         DEC     HL
285C 2B       00581         DEC     HL
285D FE43     00582         CP      'C'
285F 289F     00583         JR      Z,START
2861 FE45     00584         CP      'E'
2863 CA122D   00585         JP      Z,DOS
              00586         IF      .NOT.DOS6
              00587         CP      'T'             ;Tape?
              00588         JR      Z,TAPE
              00589         ENDIF
2866 FE44     00590         CP      'D'             ;Disk?
2868 20D9     00591         JR      NZ,BEGIN
286A E5       00592 DISK    PUSH    HL
286B 21C62D   00593         LD      HL,FIL1PR
286E CDF52B   00594         CALL    PROMPT
2871 CD282C   00595         CALL    OPNFIL
2874 E1       00596         POP     HL
2875 CD532A   00597         CALL    RDPROG
2878 22F231   00598 INPFIN  LD      (MEMPTR),HL     ;Update where we left off
287B 18C6     00599         JR      BEGIN
              00600         IF      .NOT.DOS6
              00601 TAPE    CALL    RDTAPE
              00602         JR      INPFIN
              00603         ENDIF
              00604 ;*****
              00605 ;       Routine to process output request
              00606 ;*****
287D 210333   00607 OUTPUT  LD      HL,MEMBUF+3     ;Ck for file input
2880 ED5BF231 00608         LD      DE,(MEMPTR)
2884 DF       00609         RST     24
2885 2009     00610         JR      NZ,OUTA
2887 21212F   00611         LD      HL,NOINP
288A CD0A2D   00612         CALL    DSPLY
288D C32D28   00613         JP      NOPRT
2890 21FD31   00614 OUTA    LD      HL,LOADR+1      ;Insert load address
2893 114330   00615         LD      DE,PGML1        ;Into loader message
2896 CDC52B   00616         CALL    WRBLK
2899 21FB31   00617         LD      HL,HIADR+1
289C 114B30   00618         LD      DE,PGML2
289F CDC52B   00619         CALL    WRBLK
28A2 212330   00620         LD      HL,PGMLOD
28A5 CD0A2D   00621         CALL    DSPLY
28A8 215030   00622         LD      HL,MOVREQ       ;Offset file?
28AB CD162C   00623         CALL    GETARG
28AE CA7229   00624         JP      Z,OUT0          ;Don't add loader
              00625 ;*****
              00626 ;       Routine to add offset loader
              00627 ;*****
28B1 EB       00628         EX      DE,HL           ;Pt to 1st char
28B2 1A       00629         LD      A,(DE)
28B3 CDB52C   00630         CALL    GETVAL
28B6 38D8     00631         JR      C,OUTA
28B8 E5       00632         PUSH    HL
28B9 21FF41   00633         LD      HL,41FFH        ;ck for <4200H
28BC ED5BFC31 00634         LD      DE,(LOADR)
28C0 DF       00635         RST     24
28C1 3813     00636         JR      C,NOPROB        ;not below
28C3 211B31   00637 LOCK1   LD      HL,LOMSG        ;user want to restrict?
28C6 CD232D   00638         CALL    PATCH1
28C9 280B     00639         JR      Z,NOPROB        ;no, if no entry
28CB EB       00640         EX      DE,HL
28CC 1A       00641         LD      A,(DE)          ;grab 1st byte
28CD CDB52C   00642         CALL    GETVAL          ;grab & convert
28D0 38F1     00643         JR      C,LOCK1         ;again if bad char
28D2 22FC31   00644         LD      (LOADR),HL      ;stuff lower limit
28D5 EB       00645         EX      DE,HL
28D6 E1       00646 NOPROB  POP     HL              ;calc offset
28D7 AF       00647         XOR     A
28D8 ED52     00648         SBC     HL,DE
28DA 22FE31   00649         LD      (OFFSET),HL
28DD CB14     00650         RL      H               ;Test offset for +,-
28DF 3814     00651         JR      C,NEGMOV
28E1 3EB0     00652         LD      A,0B0H          ;Init for LDIR
28E3 32582D   00653         LD      (LDMOV+1),A
28E6 CB1C     00654         RR      H
28E8 EB       00655         EX      DE,HL           ;Offset -> DE
28E9 2AFC31   00656         LD      HL,(LOADR)
28EC 22522D   00657         LD      (LDDE+1),HL
28EF 19       00658         ADD     HL,DE
28F0 224F2D   00659         LD      (LDHL+1),HL
28F3 1812     00660         JR      ALLMOV
28F5 3EB8     00661 NEGMOV  LD      A,0B8H          ;Init for LDDR
28F7 32582D   00662         LD      (LDMOV+1),A
28FA CB1C     00663         RR      H
28FC EB       00664         EX      DE,HL           ;Offset -> DE
28FD 2AFA31   00665         LD      HL,(HIADR)
2900 22522D   00666         LD      (LDDE+1),HL
2903 19       00667         ADD     HL,DE
2904 224F2D   00668         LD      (LDHL+1),HL
2907 2AF831   00669 ALLMOV  LD      HL,(TRAADR)
290A 225A2D   00670         LD      (LDJP+1),HL
290D 2AFA31   00671         LD      HL,(HIADR)      ;Ins new xfer addr
2910 23       00672         INC     HL
2911 224B2D   00673         LD      (LDADR),HL
2914 E5       00674         PUSH    HL              ;Save for xfer addr upd
2915 ED5BFC31 00675         LD      DE,(LOADR)      ;Calc move length
2919 AF       00676         XOR     A
291A ED52     00677         SBC     HL,DE
291C 22552D   00678         LD      (LDBC+1),HL
291F 21E130   00679         LD      HL,DVRMSG       ;User want offset driver?
2922 CDE12C   00680         CALL    YESNO
2925 E1       00681         POP     HL              ;Pop xfer addr upd
2926 384A     00682         JR      C,OUT0          ;Jump if not
2928 ED5BFE31 00683         LD      DE,(OFFSET)     ;Add offset here
292C 19       00684         ADD     HL,DE           ;This is a traadr
292D 22F831   00685         LD      (TRAADR),HL     ;Pt TRAADR to routine
2930 217430   00686         LD      HL,DIMSG        ;Interrupt req?
2933 CDE12C   00687         CALL    YESNO
2936 3002     00688         JR      NC,PUTDI
2938 AF       00689         XOR     A
2939 01       00690         DEFB    1               ;Ignore next 2 bytes
293A 3EF3     00691 PUTDI   LD      A,0F3H          ;Ins DI
293C 324D2D   00692         LD      (DINOP),A
293F 21A730   00693         LD      HL,KBCREQ       ;Keep debounce?
2942 CDE12C   00694         CALL    YESNO
2945 2AF231   00695         LD      HL,(MEMPTR)     ;Reset memory pointer
2948 2B       00696         DEC     HL
2949 2B       00697         DEC     HL
294A 2B       00698         DEC     HL
294B 2B       00699         DEC     HL
294C 380E     00700         JR      C,LVDBNC
294E 11432D   00701         LD      DE,BNCOFF       ;Move stripper
2951 0606     00702         LD      B,6
2953 1A       00703 BNCL1   LD      A,(DE)
2954 D5       00704         PUSH    DE
2955 CDE12B   00705         CALL    CHKMEM
2958 D1       00706         POP     DE
2959 13       00707         INC     DE
295A 10F7     00708         DJNZ    BNCL1
295C 11492D   00709 LVDBNC  LD      DE,LOADER       ;Move loader
295F 0613     00710         LD      B,19
2961 1A       00711 BNCL2   LD      A,(DE)
2962 D5       00712         PUSH    DE
2963 CDE12B   00713         CALL    CHKMEM
2966 D1       00714         POP     DE
2967 13       00715         INC     DE
2968 10F7     00716         DJNZ    BNCL2
296A CD9F2B   00717         CALL    PUTTRA
296D 22F231   00718         LD      (MEMPTR),HL     ;Reset pointer
2970 1820     00719         JR      SAMTRA          ;User can't update TRAADR
2972 21F931   00720 OUT0    LD      HL,TRAADR+1
2975 11C32E   00721         LD      DE,NEWT1
2978 CDC52B   00722         CALL    WRBLK
297B 21962E   00723 OUT1    LD      HL,NEWTRA
297E CD162C   00724         CALL    GETARG
2981 280F     00725         JR      Z,SAMTRA
2983 EB       00726         EX      DE,HL
2984 1A       00727         LD      A,(DE)
2985 CDB52C   00728         CALL    GETVAL
2988 38F1     00729         JR      C,OUT1
298A EB       00730         EX      DE,HL           ;New TRA -> DE
298B 2AF231   00731         LD      HL,(MEMPTR)
298E 2B       00732         DEC     HL
298F 73       00733         LD      (HL),E
2990 23       00734         INC     HL
2991 72       00735         LD      (HL),D
2992 21E92F   00736 SAMTRA  LD      HL,OUTDT
2995 CD162C   00737         CALL    GETARG
2998 CA0028   00738         JP      Z,START
299B 7E       00739         LD      A,(HL)
299C E65F     00740         AND     5FH             ;Strip LC
299E FE45     00741         CP      'E'
29A0 CA122D   00742         JP      Z,DOS
29A3 FE43     00743         CP      'C'
29A5 CA0028   00744         JP      Z,START
              00745         IF      .NOT.DOS6
              00746         CP      'T'             ;Tape?
              00747         JP      Z,TAPOUT
              00748         ENDIF
29A8 FE44     00749         CP      'D'             ;Disk?
29AA 20E6     00750         JR      NZ,SAMTRA
              00751 ;*****
              00752 ;       Routine to write command files
              00753 ;*****
29AC 21CA2E   00754         LD      HL,OUTSPC
29AF CDF52B   00755         CALL    PROMPT
29B2 210026   00756         LD      HL,BUFFER$
29B5 22F031   00757         LD      (BUFPTR),HL
29B8 0600     00758         LD      B,0
29BA          00759         @@INIT
29BA+3E3A     00760         LD      A,58
29BC+EF       00761         RST     40
29BD C23B2C   00762         JP      NZ,GOTERR
29C0 21FF32   00763         LD      HL,MEMBUF-1
29C3 23       00764 WRLP    INC     HL
29C4 7E       00765         LD      A,(HL)
29C5 FE01     00766         CP      1
29C7 281F     00767         JR      Z,DSKBLK
29C9 FE02     00768         CP      2
29CB 283C     00769         JR      Z,DSKTRA
29CD FE03     00770         CP      3
29CF 2812     00771         JR      Z,SPCL1
29D1 CD2B2A   00772         CALL    WRDBYT          ;Write comment header
29D4 23       00773         INC     HL
29D5 7E       00774         LD      A,(HL)
29D6 47       00775         LD      B,A
29D7 CD2B2A   00776         CALL    WRDBYT          ;Write comment length
29DA 23       00777 WRLP1   INC     HL
29DB 7E       00778         LD      A,(HL)
29DC CD2B2A   00779         CALL    WRDBYT
29DF 10F9     00780         DJNZ    WRLP1
29E1 18E0     00781         JR      WRLP
29E3 3E01     00782 SPCL1   LD      A,1             ;Turn off the
29E5 320632   00783         LD      (HLDFLG),A      ;  block offset
29E8 CD2B2A   00784 DSKBLK  CALL    WRDBYT          ;Write block header
29EB 23       00785         INC     HL
29EC 7E       00786         LD      A,(HL)
29ED 47       00787         LD      B,A
29EE CD2B2A   00788         CALL    WRDBYT          ;Write block length
29F1 CD312A   00789         CALL    CHKADR
29F4 7B       00790         LD      A,E
29F5 D5       00791         PUSH    DE
29F6 CD2B2A   00792         CALL    WRDBYT
29F9 D1       00793         POP     DE
29FA 7A       00794         LD      A,D
29FB CD2B2A   00795         CALL    WRDBYT
29FE 05       00796         DEC     B               ;Reduce length for addr
29FF 05       00797         DEC     B
2A00 23       00798 WRLP2   INC     HL
2A01 7E       00799         LD      A,(HL)
2A02 CD2B2A   00800         CALL    WRDBYT
2A05 10F9     00801         DJNZ    WRLP2
2A07 18BA     00802         JR      WRLP
2A09 0604     00803 DSKTRA  LD      B,4
2A0B CD2B2A   00804         CALL    WRDBYT
2A0E 23       00805         INC     HL
2A0F 7E       00806         LD      A,(HL)
2A10 10F9     00807         DJNZ    DSKTRA+2
2A12 3AF031   00808 CLSFIL  LD      A,(BUFPTR)      ;P/u eof byte
2A15 B7       00809         OR      A               ;Write last buffer?
2A16 32B231   00810         LD      (DCB+8),A       ;Stuff EOF offset
2A19 C47F2C   00811         CALL    NZ,LASTWR       ;Write if BUFPTR <> 0
2A1C CD6F2C   00812         CALL    RWEND
2A1F 21EB2E   00813         LD      HL,FINMSG
2A22 CDE12C   00814         CALL    YESNO
2A25 D29229   00815         JP      NC,SAMTRA
2A28 C32D28   00816         JP      NOPRT
2A2B E5       00817 WRDBYT  PUSH    HL
2A2C CD762C   00818         CALL    DISKWR
2A2F E1       00819         POP     HL
2A30 C9       00820         RET
              00821 ;*****
              00822 ;       Routine to check load or xfer addr for offset
              00823 ;*****
2A31 23       00824 CHKADR  INC     HL
2A32 5E       00825         LD      E,(HL)          ;Get load address into DE
2A33 23       00826         INC     HL
2A34 56       00827         LD      D,(HL)
2A35 E5       00828         PUSH    HL
2A36 210632   00829         LD      HL,HLDFLG       ;Test hold flag
2A39 34       00830         INC     (HL)            ;  for suppression
2A3A 35       00831         DEC     (HL)            ;  of offset
2A3B 2803     00832         JR      Z,DOOFF
2A3D 35       00833         DEC     (HL)            ;Turn off the flag
2A3E 1811     00834         JR      NOTMVD
2A40 2AFC31   00835 DOOFF   LD      HL,(LOADR)      ;Don't offset  3
2C9D 4F       01388         LD      C,A
2C9E 0600     01389         LD      B,0
2CA0 7E       01390         LD      A,(HL)
2CA1 FE2F     01391         CP      '/'
2CA3 2005     01392         JR      NZ,NOEXT
2CA5 3600     01393         LD      (HL),0          ;Clear for next query
2CA7 23       01394         INC     HL              ;Bump to EXT
2CA8 0602     01395         LD      B,2
2CAA          01396 NOEXT   @@CKDRV                 ;Drive available?
2CAA+3E21     01397         LD      A,33
2CAC+EF       01398         RST     40
2CAD 20D8     01399         JR      NZ,BAD
2CAF          01400 DODIR   @@DODIR
2CAF+3E22     01401         LD      A,34
2CB1+EF       01402         RST     40
2CB2 C34328   01403         JP      BEGIN
              01404         ENDIF
              01405 ;
              01406 ;*****
              01407 ;       Routine to convert input (hex) to 2-byte value
              01408 ;*****
2CB5 210000   01409 GETVAL  LD      HL,0
2CB8 FE61     01410 GETV1   CP      'a'             ;Cvrt to U/C if needed
2CBA 3802     01411         JR      C,$+4
2CBC CBAF     01412         RES     5,A
2CBE CDD02C   01413         CALL    CVB
2CC1 D8       01414         RET     C
2CC2 29       01415         ADD     HL,HL
2CC3 29       01416         ADD     HL,HL
2CC4 29       01417         ADD     HL,HL
2CC5 29       01418         ADD     HL,HL
2CC6 B5       01419         OR      L               ;Insert the 0-15 into
2CC7 6F       01420         LD      L,A             ;  low order nybble
2CC8 13       01421         INC     DE              ;Get next char
2CC9 1A       01422         LD      A,(DE)
2CCA FE0D     01423         CP      0DH             ;Ck for last char
2CCC 20EA     01424         JR      NZ,GETV1
2CCE AF       01425         XOR     A               ;Valid input
2CCF C9       01426         RET
2CD0 D630     01427 CVB     SUB     30H
2CD2 D8       01428         RET     C
2CD3 C6E9     01429         ADD     A,0E9H
2CD5 D8       01430         RET     C
2CD6 C606     01431         ADD     A,6
2CD8 3803     01432         JR      C,ATOF
2CDA C607     01433         ADD     A,7
2CDC D8       01434         RET     C
2CDD C60A     01435 ATOF    ADD     A,10
2CDF B7       01436         OR      A
2CE0 C9       01437         RET
              01438 ;*****
              01439 ;       Response yes/no routine
              01440 ;*****
2CE1 CD0A2D   01441 YESNO   CALL    DSPLY           ;Display prompt
2CE4 E5       01442         PUSH    HL              ;Save messge ptr
2CE5 210032   01443         LD      HL,ANSWER
2CE8 0601     01444         LD      B,1
2CEA          01445         @@KEYIN
2CEA+3E09     01446         LD      A,9
2CEC+EF       01447         RST     40
2CED AF       01448         XOR     A
2CEE B0       01449         OR      B
2CEF 7E       01450         LD      A,(HL)          ;P/u the response
2CF0 E1       01451         POP     HL              ;Rcvr message ptr
2CF1 28EE     01452         JR      Z,YESNO
2CF3 E65F     01453         AND     5FH             ;STRIP LC
2CF5 FE43     01454         CP      'C'
2CF7 CA0028   01455         JP      Z,START
2CFA FE45     01456         CP      'E'
2CFC CA122D   01457         JP      Z,DOS
2CFF FE4E     01458         CP      'N'             ;N?
2D01 2805     01459         JR      Z,NO
2D03 FE59     01460         CP      'Y'
2D05 20DA     01461         JR      NZ,YESNO
2D07 C9       01462 YES     RET
2D08 3F       01463 NO      CCF
2D09 C9       01464         RET
              01465 ;*****
              01466 ;       Output routines for the non-DOS user
              01467 ;*****
              01468 ;
              01469         IF      DOS6
2D0A          01470 DSPLY   @@DSPLY
              01471         IFEQ    00H,1
              01472         LD      HL,
              01473         ENDIF
2D0A+3E0A     01474         LD      A,10
2D0C+EF       01475         RST     40
2D0D C9       01476         RET
2D0E          01477 PRINT   @@PRINT
              01478         IFEQ    00H,1
              01479         LD      HL,
              01480         ENDIF
2D0E+3E0E     01481         LD      A,14
2D10+EF       01482         RST     40
2D11 C9       01483         RET
2D12 3EC9     01484 DOS     LD      A,0C9H
2D14 321800   01485         LD      (24),A
2D17 210000   01486         LD      HL,0
2D1A          01487         @@EXIT
2D1A+3E16     01488         LD      A,22
2D1C+EF       01489         RST     40
2D1D 7C       01490 RST24   LD      A,H
2D1E BA       01491         CP      D
2D1F C0       01492         RET     NZ
2D20 7D       01493         LD      A,L
2D21 BB       01494         CP      E
2D22 C9       01495         RET
              01496         ELSE
              01497         IF      LDOS
              01498 DSPLY   EQU     @DSPLY
              01499 PRINT   EQU     @PRINT
              01500 DOS     EQU     @EXIT
              01501         ENDIF
              01502 ;
              01503         IF      .NOT.LDOS
              01504 DSPLY   LD      DE,DDCB$
              01505 D1      PUSH    HL
              01506 D2      LD      A,(HL)
              01507         CP      3
              01508         JR      Z,D3
              01509         PUSH    AF
              01510         CALL    @PUT
              01511         POP     AF
              01512         INC     HL
              01513         CP      0DH
              01514         JR      NZ,D2
              01515 D3      POP     HL
              01516         RET
              01517 PRINT   LD      DE,PDCB$
              01518         JR      D1
              01519 DOS     LD      A,(LVLFLG)
              01520         CP      50H
              01521 BASIC   JP      Z,BASIC3
              01522         JP      @EXIT
              01523         ENDIF
              01524         ENDIF
              01525 ;
              01526 ;*****
              01527 ;       Reserved space for patch code
              01528 ;*****
2D23 D5       01529 PATCH1  PUSH    DE
2D24 CD162C   01530         CALL    GETARG
2D27 D1       01531         POP     DE
2D28 C9       01532         RET
2D29 FE61     01533 PATCH2  CP      'a'
2D2B 3806     01534         JR      C,PATCH2A
2D2D FE7B     01535         CP      'z'+1
2D2F 3002     01536         JR      NC,PATCH2A
2D31 CBAF     01537         RES     5,A
2D33 C36402   01538 PATCH2A JP      WRBYT
2D36          01539         DS      13
              01540 ;*****
              01541 ;       Loader routines
              01542 ;*****
2D43 03       01543 BNCOFF  DEFB    3
2D44 04       01544         DEFB    4
2D45 1640     01545         DEFW    KDCB$+1
2D47 2430     01546 KIHOOK  DEFW    KIADR3
2D49 01       01547 LOADER  DEFB    1               ;Start of block
2D4A 11       01548         DEFB    17              ;Block length
2D4B 0000     01549 LDADR   DEFW    0               ;Load address
2D4D 00       01550 DINOP   NOP                     ;Possible DI
2D4E 210000   01551 LDHL    LD      HL,0            ;Relocator routine
2D51 110000   01552 LDDE    LD      DE,0
2D54 010000   01553 LDBC    LD      BC,0
2D57 EDB0     01554 LDMOV   LDIR                    ;LDIR or LDDR
2D59 C30000   01555 LDJP    JP      0
              01557 ;*****
              01558 ;       DATA AREA
              01559 ;*****
2D5C 1C       01560 HELLO$  DM      28,31,'MISOSYS Command File Utility '
     1F 4D 49 53 4F 53 59 53
     20 43 6F 6D 6D 61 6E 64
     20 46 69 6C 65 20 55 74
     69 6C 69 74 79 20 
              01561 ;
              01562         IF      EXPAND
              01563         DB      '- Version 1.5',LF
              01564         ENDIF
              01565 ;
              01566         IF      EDAS
              01567         DB      '- EDAS Version 1.5',LF
              01568         ENDIF
              01569 ;
              01570         IF      LDOS
2D7B 2D       01571         DB      '- LDOS Version 5.1',LF
     20 4C 44 4F 53 20 56 65
     72 73 69 6F 6E 20 35 2E
     31 0A 
              01572         ENDIF
              01573 ;
              01574         IF      SIMUTEK
              01575         DB      '- SIMUTEK Version 1.5',LF
              01576         ENDIF
              01577 ;
2D8E 43       01578         DB      'Copyright (C) 1979 by Roy Soltoff, '
     6F 70 79 72 69 67 68 74
     20 28 43 29 20 31 39 37
     39 20 62 79 20 52 6F 79
     20 53 6F 6C 74 6F 66 66
     2C 20 
2DB1 41       01579         DB      'All rights reserved',LF,CR
     6C 6C 20 72 69 67 68 74
     73 20 72 65 73 65 72 76
     65 64 0A 0D 
2DC6 45       01580 FIL1PR  DM      'Enter input file filespec >',3
     6E 74 65 72 20 69 6E 70
     75 74 20 66 69 6C 65 20
     66 69 6C 65 73 70 65 63
     20 3E 03 
2DE2 42       01581 BLKMSG  DM      'Block loads from '
     6C 6F 63 6B 20 6C 6F 61
     64 73 20 66 72 6F 6D 20
2DF3 58       01582 BLKM1   DM      'XXXX to '
     58 58 58 20 74 6F 20 
2DFB 58       01583 BLKM2   DM      'XXXX',CR
     58 58 58 0D 
2E00 46       01584 STAMSG  DB      'FILNAM: ',3
     49 4C 4E 41 4D 3A 20 03
2E09 54       01585 TRAMSG  DM      'Transfer address (entry point) is '
     72 61 6E 73 66 65 72 20
     61 64 64 72 65 73 73 20
     28 65 6E 74 72 79 20 70
     6F 69 6E 74 29 20 69 73
     20 
2E2B 58       01586 TRAM1   DM      'XXXX',CR
     58 58 58 0D 
2E30 4F       01587 MEMMSG  DM      'Out of memory!',CR
     75 74 20 6F 66 20 6D 65
     6D 6F 72 79 21 0D 
2E3F 52       01588 LODMSG  DM      'Requested file is not a Command '
     65 71 75 65 73 74 65 64
     20 66 69 6C 65 20 69 73
     20 6E 6F 74 20 61 20 43
     6F 6D 6D 61 6E 64 20 
2E5F 6F       01589         DB      'or System file!',CR
     72 20 53 79 73 74 65 6D
     20 66 69 6C 65 21 0D 
2E6F 41       01590 PRTREQ  DM 'Address load log to printer (Y,N,E)? >',3
     64 64 72 65 73 73 20 6C
     6F 61 64 20 6C 6F 67 20
     74 6F 20 70 72 69 6E 74
     65 72 20 28 59 2C 4E 2C
     45 29 3F 20 3E 03 
2E96 45       01591 NEWTRA  DM 'Enter new transfer address or  to use '
     6E 74 65 72 20 6E 65 77
     20 74 72 61 6E 73 66 65
     72 20 61 64 64 72 65 73
     73 20 6F 72 20 3C 45 4E
     54 45 52 3E 20 74 6F 20
     75 73 65 20 
2EC3 58       01592 NEWT1   DM      'XXXX >',3
     58 58 58 20 3E 03 
2ECA 45       01593 OUTSPC  DM      'Enter filespec to write output >',3
     6E 74 65 72 20 66 69 6C
     65 73 70 65 63 20 74 6F
     20 77 72 69 74 65 20 6F
     75 74 70 75 74 20 3E 03
2EEB 4D       01594 FINMSG  DM      'Module write is complete - '
     6F 64 75 6C 65 20 77 72
     69 74 65 20 69 73 20 63
     6F 6D 70 6C 65 74 65 20
     2D 20 
2F06 77       01595         DB      'write another (Y,N,E,C)? >',3
     72 69 74 65 20 61 6E 6F
     74 68 65 72 20 28 59 2C
     4E 2C 45 2C 43 29 3F 20
     3E 03 
2F21 2A       01596 NOINP   DM      '*** No file input *** '
     2A 2A 20 4E 6F 20 66 69
     6C 65 20 69 6E 70 75 74
     20 2A 2A 2A 20 
2F37 4E       01597         DB      'No file to output ***',CR
     6F 20 66 69 6C 65 20 74
     6F 20 6F 75 74 70 75 74
     20 2A 2A 2A 0D 
2F4D 54       01598 CHKSUM  DM      'Tape checksum error detected - '
     61 70 65 20 63 68 65 63
     6B 73 75 6D 20 65 72 72
     6F 72 20 64 65 74 65 63
     74 65 64 20 2D 20 
2F6C 72       01599         DB      'reread tape!',CR
     65 72 65 61 64 20 74 61
     70 65 21 0D 
2F79 52       01600 CASMSG  DB      'Ready cassette and enter ',3
     65 61 64 79 20 63 61 73
     73 65 74 74 65 20 61 6E
     64 20 65 6E 74 65 72 20
     3C 48 2C 4C 3E 03 
2F98 49       01601 INPMPT  DM      'Input disk or tape (D,T,E,C'
     6E 70 75 74 20 64 69 73
     6B 20 6F 72 20 74 61 70
     65 20 28 44 2C 54 2C 45
     2C 43 
              01602 ;
              01603         IF      EXPAND!LDOS
2FB3 2C       01604         DB      ',Q'
     51 
              01605         ENDIF
              01606 ;
2FB5 29       01607         DB      ') or  to end reads? >',3
     20 6F 72 20 3C 45 4E 54
     45 52 3E 20 74 6F 20 65
     6E 64 20 72 65 61 64 73
     3F 20 3E 03 
2FD2 45       01608 FILMSG  DM      'Enter tape file name >',3
     6E 74 65 72 20 74 61 70
     65 20 66 69 6C 65 20 6E
     61 6D 65 20 3E 03 
2FE9 4F       01609 OUTDT   DM      'Output to disk or tape (D,T,E,C) or '
     75 74 70 75 74 20 74 6F
     20 64 69 73 6B 20 6F 72
     20 74 61 70 65 20 28 44
     2C 54 2C 45 2C 43 29 20
     6F 72 20 
300D 3C       01610         DB      ' to restart? >',3
     45 4E 54 45 52 3E 20 74
     6F 20 72 65 73 74 61 72
     74 3F 20 3E 03 
3023 50       01611 PGMLOD  DM      'Program loads from base address '
     72 6F 67 72 61 6D 20 6C
     6F 61 64 73 20 66 72 6F
     6D 20 62 61 73 65 20 61
     64 64 72 65 73 73 20 
3043 58       01612 PGML1   DM      'XXXX to '
     58 58 58 20 74 6F 20 
304B 58       01613 PGML2   DM      'XXXX',CR
     58 58 58 0D 
3050 45       01614 MOVREQ  DM      'Enter new base address or  >',3
     6E 74 65 72 20 6E 65 77
     20 62 61 73 65 20 61 64
     64 72 65 73 73 20 6F 72
     20 3C 45 4E 54 45 52 3E
     20 3E 03 
3074 44       01615 DIMSG   DM      'Do you want to disable the interrupts '
     6F 20 79 6F 75 20 77 61
     6E 74 20 74 6F 20 64 69
     73 61 62 6C 65 20 74 68
     65 20 69 6E 74 65 72 72
     75 70 74 73 20 
309A 28       01616         DB      '(Y,N,E,C)? >',3
     59 2C 4E 2C 45 2C 43 29
     3F 20 3E 03 
30A7 44       01617 KBCREQ  DM      'Do you want to disable the keyboard '
     6F 20 79 6F 75 20 77 61
     6E 74 20 74 6F 20 64 69
     73 61 62 6C 65 20 74 68
     65 20 6B 65 79 62 6F 61
     72 64 20 
30CB 64       01618         DB      'debounce (Y,N,E,C)? >',3
     65 62 6F 75 6E 63 65 20
     28 59 2C 4E 2C 45 2C 43
     29 3F 20 3E 03 
30E1 44       01619 DVRMSG  DM      'Do you want to add the offset driver '
     6F 20 79 6F 75 20 77 61
     6E 74 20 74 6F 20 61 64
     64 20 74 68 65 20 6F 66
     66 73 65 74 20 64 72 69
     76 65 72 20 
3106 72       01620         DB      'routine (Y,N,E,C)? >',3
     6F 75 74 69 6E 65 20 28
     59 2C 4E 2C 45 2C 43 29
     3F 20 3E 03 
311B 50       01621 LOMSG   DM      'Program loads below 4200H',LF
     72 6F 67 72 61 6D 20 6C
     6F 61 64 73 20 62 65 6C
     6F 77 20 34 32 30 30 48
     0A 
3135 20       01622         DB      '     Enter address to restrict '
     20 20 20 20 45 6E 74 65
     72 20 61 64 64 72 65 73
     73 20 74 6F 20 72 65 73
     74 72 69 63 74 20 
3154 6F       01623         DM       'offset or  >',3
     66 66 73 65 74 20 6F 72
     20 3C 45 4E 54 45 52 3E
     20 3E 03 
3168 46       01624 ISAM$   DM      'File has ISAM overlays - enter # >',3
     69 6C 65 20 68 61 73 20
     49 53 41 4D 20 6F 76 65
     72 6C 61 79 73 20 2D 20
     65 6E 74 65 72 20 23 20
     3E 03 
318B 4F       01625 NOISAM$ DM      'Overlay beyond end of file!',CR
     76 65 72 6C 61 79 20 62
     65 79 6F 6E 64 20 65 6E
     64 20 6F 66 20 66 69 6C
     65 21 0D 
31A7 43       01626 DFTEXT  DM      'CMD'
     4D 44 
31AA          01627 DCB     DS      32
31CA          01628 IOBUF   DS      32
31EA          01629 FILNAM  DS      6
31F0          01630 BUFPTR  DS      2
31F2          01631 MEMPTR  DS      2
31F4          01632 BLKADR  DS      2
31F6          01633 BLKEND  DS      2
31F8          01634 TRAADR  DS      2
31FA          01635 HIADR   DS      2
31FC          01636 LOADR   DS      2
31FE          01637 OFFSET  DS      2
3200          01638 ANSWER  DS      2
3202          01639 DIRPTR  DS      2
3204          01640 PRTFLG  DS      1
3205          01641 NAMLEN  DS      1
3206          01642 HLDFLG  DS      1
3300          01643         ORG     $<-8+1<8
3300          01644 MEMBUF  EQU     $
2800          01645         END     START
2800 is the transfer address
00000 Total errors


[Copyright 1999,2002 Frank Durda IV, All Rights Reserved.
Mirroring of any material on this page in any form is expressly prohibited.
The official web site for this material is:  http://nemesis.lonestar.org
Contact this address for use clearances: clearance at nemesis.lonestar.org
Comments and queries to this address: web_software_2011 at nemesis.lonestar.org]

Valid HTML 4.01!