; ZCPR3 ENVIRONMENT source code (ENV.Z80) generator ; Program Name: ENVSRC.Z80 ; Author: Terry Hazen ; Version: 1.0 ; Date: 24 August 90 ; Creates commented source code (.Z80) file from the current ZCPR3 ; environment for editing or customizing. VERS EQU 10 ; 24 August 90 JTH ; ; Basic equates ; FCB EQU 5CH FCB2 EQU 6CH TBUFF EQU 80H CTRLC EQU 'C'-'@' ; ; ASCII character equates ; NULL EQU 0 ; Null BEL EQU 7 ; Bell BS EQU 8 ; Backspace TAB EQU 9 ; Tab LF EQU 10 ; Line feed CR EQU 13 ; Carriage return EOF EQU 1AH ; EOF SPACE EQU 32 ; Space ESC EQU 27 ; Escape ; ; Z3LIB and SYSLIB references ; .REQUEST Z3LIB EXT Z3LOG .REQUEST SYSLIB EXT RETUD,COMPB,FILLB EXT MAFDC,MHL4HC,PFN2,PRINT,COUT EXT GFA,F$MAKE,F$WRITE EXT F$CLOSE,F$EXIST,F$DELETE ; ; Program start ; JP START Z3NAME: DB 'Z3ENV' ; This is a ZCPR3 Utility DB 1 ; External environmental descriptor Z3EADR: DW 0 ; Pointer to environment ; START: LD (STACK),SP ; Save CCP stack pointer LD SP,STACK ; Local stack LD HL,EXIT ; Save exit routine address PUSH HL ; On the new stack ; ; Start of program -- display sign-on ; CALL PRINT DB 'ENVSRC vers ' DB (VERS/10)+'0','.',(VERS MOD 10)+'0',CR,LF DB 'Creates a commented source code [.Z80] file',CR,LF DB 'from the ZCPR3 environment.',CR,LF DB 0 ; ; Check for entry in FCB ; LD HL,FCB+1 ; Point to first character LD A,'/' CP (HL) ; Help request? JR NZ,INIT ; No INC HL ; Point to next CP (HL) ; Help request? JR NZ,INIT ; No ; ; Display help screen ; HELP: CALL PRINT DB CR,LF DB 'Syntax:',TAB,'ENVSRC [[dir:]outfile[.z80]]' DB CR,LF,LF DB TAB,'Default outfile name is Z3ENV.Z80.' DB CR,LF DB 0 RET ; ; Initialize data area ; INIT: XOR A LD HL,DATA LD B,DATALEN CALL FILLB ; ; Move outfile FCB to OUTFCB ; LOAD1: LD DE,OUTFCB ; Point to outfile FCB PUSH DE ; Save a copy LD HL,FCB ; Point to FCB LD BC,14 ; Move drive thru user bytes LDIR POP DE ; Restore OUTFCB pointer ; LD A,(DE) ; Get drive OR A ; Was it the default drive? JR NZ,LOAD2 ; Drive was specified ; CALL RETUD ; Default, so get default du in BC LD A,B INC A ; Make it A=1 LD (OUTFCB),A ; Save as default outfile drive ; LOAD2: LD A,(DE) ; Save outfile drive for PDU routine LD (OUTDR),A ; INC DE ; Point to filename LD A,(DE) ; Do we have an outfile name specified? CP ' ' JR NZ,LOAD3 ; Yes ; ; No outfile filename specified, use default filename ; LD HL,OUTNM ; Point to default filename LD BC,8 ; Copy it to outfile filename LDIR ; Move it ; ; Set default outfile file type if none ; LOAD3: LD DE,OUTFCB+9 LD A,(DE) ; Filetype specified? CP ' ' JR NZ,MAIN ; Yes ; LD HL,OUTTYP ; Point to default file type LD BC,3 ; Copy default file type LDIR ; ; Move outfile filename to source file ; MAIN: LD HL,OUTFCB+1 ; Point to filename LD DE,TNAME ; Point to dest LD B,8 ; Eight characters max CALL FNLOOP ; Move filename LD A,'.' ; Separator LD (DE),A ; Move it INC DE ; Bump pointer LD HL,OUTFCB+9 ; Point to filetype LD B,3 ; Three characters max CALL FNLOOP ; Move filetype ; LD HL,(Z3EADR) ; Point to environment INC HL ; Skip jump instruction LD DE,CBIOS CALL LDADDR ; Move leading jump address ; LD DE,5 ; Skip 'Z3ENV' ADD HL,DE LD DE,ENVTYP CALL LDBIN ; Load type in ASCII binary ; ; Load external path ; LD DE,EXPATH CALL LDADDR ; Load address LD DE,EXPATHS CALL LDBYTE ; Load size ; ; Load resident command package ; LD DE,RCP CALL LDADDR ; Load address LD DE,RCPS CALL LDBYTE ; Load size ; ; Load IOP ; LD DE,IOP CALL LDADDR ; Load address LD DE,IOPS CALL LDBYTE ; Load size ; ; Load flow control package ; LD DE,FCP CALL LDADDR ; Load address LD DE,FCPS CALL LDBYTE ; Load size ; ; Load named directories ; LD DE,Z3NDIR CALL LDADDR ; Load address LD DE,Z3NDIRS CALL LDBYTE ; Load size ; ; Load multiple command line ; LD DE,Z3CL CALL LDADDR ; Load address LD DE,Z3CLS CALL LDBYTE ; Load size ; ; Load Z3ENV ; LD DE,Z3ENV CALL LDADDR ; Load address LD DE,Z3ENVS CALL LDBYTE ; Load size ; ; Load shell stack ; LD DE,SHSTK CALL LDADDR ; Load address LD DE,SHSTKS CALL LDBYTE ; Load number of elements LD DE,SHSIZE CALL LDBYTE ; Load element size ; ; Load message buffer ; LD DE,Z3MSG CALL LDADDR ; Load address ; ; Load external file control block ; LD DE,EXTFCB CALL LDADDR ; Load address ; ; Load external stack ; LD DE,EXTSTK CALL LDADDR ; Load address ; ; Load quiet flag ; LD DE,QUIET CALL LDBYTE ; Load flag ; ; Load wheel address ; LD DE,Z3WHL CALL LDADDR ; Load address ; ; Load processor speed ; LD DE,SPEED CALL LDBYTE ; Load speed ; ; Load max du ; LD DE,MAXDRV LD A,(HL) ; Get byte INC HL ; Point to next ADD 40H ; Make it ASCII LD (DE),A LD DE,MAXUSR CALL LDBYTE ; Load byte LD DE,DUOK CALL LDBYTE ; Load flag ; ; Load CRT and printer selection ; LD DE,CRT CALL LDBYTE ; Load byte LD DE,PRT CALL LDBYTE ; Load flag ; ; Load CRT 0 parameters ; LD DE,COLS CALL LDBYTE ; Load number of columns LD DE,ROWS CALL LDBYTE ; Load number of lines LD DE,LINS CALL LDBYTE ; Load number of text lines ; ; Load valid drive vector as DW ; PUSH HL INC HL ; Do hi byte first LD DE,DRVEC1 CALL LDBIN ; Load drives POP HL ; Do low byte LD DE,DRVEC2 CALL LDBIN ; Load drives INC HL ; ; Load spare 1 ; LD DE,SPAR1 CALL LDBYTE ; ; Load printer 0 parameters ; LD DE,PCOL CALL LDBYTE ; Load number of columns LD DE,PROW CALL LDBYTE ; Load number of lines LD DE,PLIN CALL LDBYTE ; Load number of text lines LD DE,FORM CALL LDBYTE ; Load form feed flag ; ; Load spares 2,3 ; LD DE,SPAR2 CALL LDBYTE LD DE,SPAR3 CALL LDBYTE ; ; Load NZCLK ; LD DE,NZCLK CALL LDADDR ; Load address ; ; Load CCP ; LD DE,CCP CALL LDADDR ; Load address LD DE,CCPS CALL LDBYTE ; Load size ; ; Load DOS ; LD DE,DOS CALL LDADDR ; Load address LD DE,DOSS CALL LDBYTE ; Load size ; ; Load BIOS or NZBIO ; LD DE,BIO CALL LDADDR ; Load address ; ; Load shell variable files ; LD DE,SHVAR CALL LDNAME LD DE,SHTYP CALL LDTYP ; LD DE,FILE1 CALL LDNAME LD DE,F1T CALL LDTYP ; LD DE,FILE2 CALL LDNAME LD DE,F2T CALL LDTYP ; LD DE,FILE3 CALL LDNAME LD DE,F3T CALL LDTYP ; LD DE,FILE4 CALL LDNAME LD DE,F4T CALL LDTYP ; ; Load ZRDOS+ public drive/user masks ; LD DE,PUBDRV CALL LDBIN LD DE,PUBUSR CALL LDBIN ; ; Create target file ; MAKE0: LD DE,OUTFCB ; Point to FCB CALL Z3LOG CALL F$EXIST ; Test of presence of file JR Z,MAKE2 ; Create file ; CALL GFA ; Check attributes of existing file AND 1 ; R/O? JR Z,MAKE1 ; No ; CALL PRINT DB CR,LF,'Existing File ',0 CALL PDU ; Display du LD DE,OUTFCB+1 CALL PFN2 ; Display filename CALL PRINT DB ' is Read/Only',CR,LF,0 RET ; MAKE1: CALL F$DELETE ; Delete file ; MAKE2: CALL F$MAKE ; Create file CP 0FFH ; Error JR NZ,WRITEFILE ; CALL PRINT DB CR,LF,'File Create Error',CR,LF,0 RET ; ; Write block to file ; WRITEFILE: LD HL,FILESTART ; Point to file buffer ; WRITEF: LD DE,TBUFF ; Copy into buffer LD BC,128 ; 128 bytes LDIR ; LD DE,OUTFCB ; Point to FCB CALL F$WRITE ; Write record JR NZ,WERR ; PUSH HL ; Save file pointer LD HL,TBUFF ; Check TBUFF for EOF marker LD BC,128 LD A,EOF ; EOF marker CPIR POP HL ; Restore file pointer JR NZ,WRITEF ; ; Pad end of buffer with EOF's ; ; EX DE,HL ; Buffer pointer in De ; LD A,EOF ; EOF character ; CALL FILLB ; CALL F$CLOSE ; Close file CALL PRINT DB CR,LF,'File ',0 CALL PDU ; Display du LD DE,OUTFCB+1 CALL PFN2 ; Display filename CALL PRINT DB ' Created',CR,LF,0 RET ; ; Can't write file ; WERR: CALL PRINT DB CR,LF,'File Write Error',CR,LF,0 RET ; ; Main exit point ; EXIT: LD SP,(STACK) ; Restore CCP stack RET ; And return to system ;------------------------------- ; ; Load byte as ASCII binary bits ; Entry: HL = source, DE = destination ; LDBIN: LD B,8 ; Do whole byte LD A,(HL) ; Get byte INC HL ; Point to next ; LDBLOOP:RLC A ; Look at next highest bit PUSH AF AND 1 ; Just next bit ADD '0' ; Make ASCII LD (DE),A ; Load it INC DE ; Bump destination pointer POP AF DJNZ LDBLOOP RET ;------------------------------- ; ; Load byte as 3 ASCII decimal characters, left justified ; Entry: HL = source, DE = destination ; LDBYTE: LD A,(HL) ; Get byte in A INC HL ; Point to next CALL MAFDC ; Move byte to DE RET ;------------------------------- ; ; Load hex address as 4 ASCII hex characters ; Entry: HL = source, DE = destination ; LDADDR: PUSH HL ; Save env pointer LD A,(HL) ; Get address in HL INC HL LD H,(HL) LD L,A CALL MHL4HC ; Move address to DE POP HL ; Restore pointer INC HL ; Point to next INC HL RET ;------------------------------- ; ; Move filename to buffer ; LDNAME: LD BC,8 JR LDD ;------------------------------- ; ; Move filetype to buffer ; LDTYP: LD BC,3 ; LDD: LDIR RET ;------------------------------- ; ; Move filename and filetype to buffer ; FNLOOP: LD A,(HL) ; Get a character INC HL CP ' ' ; Quit at first space RET Z ; Finished LD (DE),A ; Put it away INC DE ; Point to next DJNZ FNLOOP RET ;------------------------------- ; ; Display outfile drive and user ; PDU: LD A,(OUTDR) ; Get drive (A=1) ADD '@' ; Make it ASCII CALL COUT ; Display it LD A,(OUTFCB+13) ; Get user AND 7FH ; Filter high bit LD B,'0'-1 ; Set counter CP 10 ; Single digit? JR C,PDU1 ; Yes ; PDU0: INC B SUB 10 ; Keep subtracting until CARRY set JR NC,PDU0 ; ADD A,10 ; Get remaining units digit back LD C,A ; Save it LD A,B ; Tens digit CALL COUT ; Display it LD A,C ; Restore units digit ; PDU1: ADD A,'0' ; Make ASCII CALL COUT LD A,':' CALL COUT RET ;-------------------------------- ; ; Initialized data area ; OUTNM: DB 'Z3ENV ' ; Default outfile filename OUTTYP: DB 'Z80' ; Default outfile filetype ;------------------------------- ; ; Source code file ; FILESTART: DB ';',CR,LF DB '; Z3ENV file: ' ; TNAME: DB ' ' ; Break filename so FILT won't add tabs DB ' ' DB ' ',CR,LF DB ';',CR,LF DB '; Offset 00h - Leading CBIOS console status jump',CR,LF DB ';',CR,LF DB TAB,'DB',TAB,'0C3H',TAB,'; Jump instruction',CR,LF DB TAB,'DW',TAB,'0' ; CBIOS: DB '0000H',TAB,'; CBIOS console status jump address',CR,LF DB ';',CR,LF DB '; Offset 03h - Environment ID',CR,LF DB ';',CR,LF DB 'Z3ID:',TAB,'DB',TAB,'''Z3ENV''',CR,LF DB ';',CR,LF DB '; Offset 08h - Environment type',CR,LF DB ';',CR,LF DB ';',TAB,'Bit:',TAB,'76543210',CR,LF DB 'ENVTYP:',TAB,'DB',TAB ; ENVTYP: DB '00000000B ; Environment type',CR,LF DB ';',CR,LF DB ';',TAB,'Bit 0: (External environment)',CR,LF DB ';',TAB,'Bit 7: Extended environment',CR,LF DB ';',CR,LF DB '; Offset 09h - External path',CR,LF DB ';',CR,LF DB 'EXPATH:',TAB,'DW',TAB,'0' ; EXPATH: DB '0000H',TAB,'; Address',CR,LF DB 'EXPATHS:DB',TAB ; EXPATHS:DB ' ',TAB,'; Number of 2 byte path elements',CR,LF DB ';',CR,LF DB '; Offset 0Ch - Resident command package',CR,LF DB ';',CR,LF DB 'RCP:',TAB,'DW',TAB,'0' ; RCP: DB '0000H',TAB,'; Address',CR,LF DB 'RCPS:',TAB,'DB',TAB ; RCPS: DB ' ',TAB,'; Size in records',CR,LF DB ';',CR,LF DB '; Offset 0Fh - Input/output package',CR,LF DB ';',CR,LF DB 'IOP:',TAB,'DW',TAB,'0' ; IOP: DB '0000H',TAB,'; Address',CR,LF DB 'IOPS:',TAB,'DB',TAB ; IOPS: DB ' ',TAB,'; Size in records',CR,LF DB ';',CR,LF DB '; Offset 12h - Flow control package',CR,LF DB ';',CR,LF DB 'FCP:',TAB,'DW',TAB,'0' ; FCP: DB '0000H',TAB,'; Address',CR,LF DB 'FCPS:',TAB,'DB',TAB ; FCPS: DB ' ',TAB,'; Size in records',CR,LF DB ';',CR,LF DB '; Offset 15h - Named directory buffer',CR,LF DB ';',CR,LF DB 'Z3NDIR:',TAB,'DW',TAB,'0' ; Z3NDIR: DB '0000H',TAB,'; Address',CR,LF DB 'Z3NDIRS:DB',TAB ; Z3NDIRS:DB ' ',TAB,'; Number of 18 byte entries',CR,LF DB ';',CR,LF DB '; Offset 18h - Multiple command line',CR,LF DB ';',CR,LF DB 'Z3CL:',TAB,'DW',TAB,'0' ; Z3CL: DB '0000H',TAB,'; Address',CR,LF DB 'Z3CLS:',TAB,'DB',TAB ; Z3CLS: DB ' ',TAB,'; Size in bytes',CR,LF DB ';',CR,LF DB '; Offset 1Ah - Enviornment descriptor',CR,LF DB ';',CR,LF DB 'Z3ENV:',TAB,'DW',TAB,'0' ; Z3ENV: DB '0000H',TAB,'; Load address of this file',CR,LF DB 'Z3ENVS:',TAB,'DB',TAB ; Z3ENVS: DB ' ',TAB,'; Size in records (including Z3TCAP)',CR,LF DB ';',CR,LF DB '; Offset 1Eh - Shell stack',CR,LF DB ';',CR,LF DB 'SHSTK:',TAB,'DW',TAB,'0' ; SHSTK: DB '0000H',TAB,'; Address',CR,LF DB 'SHSTKS:',TAB,'DB',TAB ; SHSTKS: DB ' ',TAB,'; Number of shell stack entries',CR,LF DB 'SHSIZE:',TAB,'DB',TAB ; SHSIZE: DB ' ',TAB,'; Entry size in bytes',CR,LF DB ';',CR,LF DB '; Offset 22h - Message buffer',CR,LF DB ';',CR,LF DB 'Z3MSG:',TAB,'DW',TAB,'0' ; Z3MSG: DB '0000H',TAB,'; Address',CR,LF DB ';',CR,LF DB '; Offset 24h - External file control block',CR,LF DB ';',CR,LF DB 'EXTFCB:',TAB,'DW',TAB,'0' ; EXTFCB: DB '0000H',TAB,'; Address',CR,LF DB ';',CR,LF DB '; Offset 26h - External stack',CR,LF DB ';',CR,LF DB 'EXTSTK:',TAB,'DW',TAB,'0' ; EXTSTK: DB '0000H',TAB,'; Address',CR,LF DB ';',CR,LF DB '; Offset 28h - Quiet flag',CR,LF DB ';',CR,LF DB 'QUIET:',TAB,'DB',TAB,'0' ; QUIET: DB ' ',TAB,'; 0 - Not quiet',CR,LF DB ';',TAB,TAB,TAB,'; 1 - Quiet',CR,LF DB ';',CR,LF DB '; Offset 29h - Wheel byte',CR,LF DB ';',CR,LF DB 'Z3WHL:',TAB,'DW',TAB,'0' ; Z3WHL: DB '0000H',TAB,'; Address',CR,LF DB ';',CR,LF DB '; Offset 2Bh - Processor speed',CR,LF DB ';',CR,LF DB 'SPEED:',TAB,'DB',TAB ; SPEED: DB ' ',TAB,'; MHZ',CR,LF DB ';',CR,LF DB '; Offset 2Ch - Maximum drive/user accepted',CR,LF DB ';',CR,LF DB 'MAXDRV:',TAB,'DB',TAB,'''' ; MAXDRV: DB ' ''-40H',TAB,'; Max drive letter',CR,LF DB 'MAXUSR:',TAB,'DB',TAB ; MAXUSR: DB ' ',TAB,'; Max user number',CR,LF DB 'DUOK:',TAB,'DB',TAB ; DUOK: DB ' ',TAB,'; 0 - Don''t accept DU:',CR,LF DB ';',TAB,TAB,TAB,'; 1 - Accept DU:',CR,LF DB ';',CR,LF DB '; Offset 2Fh - CRT and printer selection',CR,LF DB ';',CR,LF DB 'CRT:',TAB,'DB',TAB ; CRT: DB ' ',TAB,'; CRT selection',CR,LF DB 'PRT:',TAB,'DB',TAB ; PRT: DB ' ',TAB,'; Printer selection',CR,LF DB ';',CR,LF DB '; Offset 31h - CRT 0',CR,LF DB ';',CR,LF DB 'COLS:',TAB,'DB',TAB ; COLS: DB ' ',TAB,'; Number of columns',CR,LF DB 'ROWS:',TAB,'DB',TAB ; ROWS: DB ' ',TAB,'; Number of lines',CR,LF DB 'LINS:',TAB,'DB',TAB ; LINS: DB ' ',TAB,'; Number of text lines',CR,LF DB ';',CR,LF DB '; Offset 34h - Valid drive vector',CR,LF DB ';',CR,LF DB 'DRVEC:',TAB,'DW',TAB ; DRVEC1: DB '00000000' DRVEC2: DB '00000000B ; Valid drive vector',CR,LF DB ';',TAB,'Drives->PONMLKJIHGFEDCBA',CR,LF DB ';',CR,LF DB '; Offset 36h - Spare 1',CR,LF DB ';',CR,LF DB 'SPAR1:',TAB,'DB',TAB ; SPAR1: DB ' ',CR,LF DB ';',CR,LF DB '; Offset 37h - Printer 0',CR,LF DB ';',CR,LF DB 'PCOL:',TAB,'DB',TAB ; PCOL: DB ' ',TAB,'; Number of columns',CR,LF DB 'PROW:',TAB,'DB',TAB ; PROW: DB ' ',TAB,'; Number of lines',CR,LF DB 'PLIN:',TAB,'DB',TAB ; PLIN: DB ' ',TAB,'; Number of text lines',CR,LF DB 'FORM:',TAB,'DB',TAB ; FORM: DB ' ',TAB,'; 0 - Can''t do form feeds',CR,LF DB ';',TAB,TAB,TAB,'; 1 - Can do form feeds',CR,LF DB ';',CR,LF DB '; Offset 3Bh - Spares 2,3',CR,LF DB ';',CR,LF DB 'SPAR2:',TAB,'DB',TAB ; SPAR2: DB ' ',TAB,'; Spare 2',CR,LF DB 'SPAR3:',TAB,'DB',TAB ; SPAR3: DB ' ',TAB,'; Spare 3',CR,LF DB ';',CR,LF DB '; Offset 3Dh - DOS time/date module',CR,LF DB ';',CR,LF DB 'NZCLK:',TAB,'DW',TAB ; NZCLK: DB '0000H',TAB,'; Address of DOS time/date routine',CR,LF DB ';',CR,LF DB '; Offset 3Fh - Command and control processor',CR,LF DB ';',CR,LF DB 'CCP:',TAB,'DW',TAB,'0' ; CCP: DB '0000H',TAB,'; Address',CR,LF DB 'CCPS:',TAB,'DB',TAB ; CCPS: DB ' ',TAB,'; Size in records (normally 16)',CR,LF DB ';',CR,LF DB '; Offset 42h - Disk operating system',CR,LF DB ';',CR,LF DB 'DOS:',TAB,'DW',TAB,'0' ; DOS: DB '0000H',TAB,'; Address',CR,LF DB 'DOSS:',TAB,'DB',TAB ; DOSS: DB ' ',TAB,'; Size in records (normally 28)',CR,LF DB ';',CR,LF DB '; Offset 45h - BIOS (NZBIO if running NZCOM)',CR,LF DB ';',CR,LF DB 'BIO:',TAB,'DW',TAB,'0' ; BIO: DB '0000H',TAB,'; Address',CR,LF DB ';',CR,LF DB '; Offset 47h - Shell variable files',CR,LF DB ';',CR,LF DB 'SHVAR:',TAB,'DB',TAB,'''' ; SHVAR: DB ' ' ; Break all filenames so FILE won't add tabs DB ' ''',TAB,'; Shell variable filename',CR,LF DB TAB,'DB',TAB,'''' SHTYP: DB ' ''',TAB,TAB,'; Shell variable filetype',CR,LF DB ';',CR,LF DB '; Offset 52h - File 1',CR,LF DB ';',CR,LF DB 'FILE1:',TAB,'DB',TAB,'''' ; FILE1: DB ' ' DB ' ''',TAB,'; File 1',CR,LF DB TAB,'DB',TAB,'''' F1T: DB ' ''',CR,LF DB ';',CR,LF DB '; Offset 5Dh - File 2',CR,LF DB ';',CR,LF DB 'FILE2:',TAB,'DB',TAB,'''' ; FILE2: DB ' ' DB ' ''',TAB,'; File 2',CR,LF DB TAB,'DB',TAB,'''' F2T: DB ' ''',CR,LF DB ';',CR,LF DB '; Offset 68h - File 3',CR,LF DB ';',CR,LF DB 'FILE3:',TAB,'DB',TAB,'''' ; FILE3: DB ' ' DB ' ''',TAB,'; File 3',CR,LF DB TAB,'DB',TAB,'''' F3T: DB ' ''',CR,LF DB ';',CR,LF DB '; Offset 73h - File 4',CR,LF DB ';',CR,LF DB 'FILE4:',TAB,'DB',TAB,'''' ; FILE4: DB ' ' DB ' ''',TAB,'; File 4',CR,LF DB TAB,'DB',TAB,'''' F4T: DB ' ''',CR,LF DB ';',CR,LF DB '; Offset 7Eh - ZRDOS public drive/user masks',CR,LF DB ';',CR,LF DB 'PUBDRV:',TAB,'DB',TAB ; PUBDRV: DB '00000000B ; Public drives',CR,LF DB ';',TAB,'Drives->HGFEDCBA',CR,LF DB ';',CR,LF DB 'PUBUSR:',TAB,'DB',TAB PUBUSR: DB '00000000B ; Public user areas',CR,LF DB ';',TAB,'Users ->76543210',CR,LF,LF DB TAB,'END',CR,LF DB ';',CR,LF DB '; End of 128 byte environment descriptor',CR,LF DB ';',CR,LF,LF DB 1AH ; End of file ;-------------------------------- ; ; Uninitialized data area, initialized at INIT ; DSEG DATA EQU $ ; Start of data area to be initialized OUTDR: DS 1 ; Outfile drive OUTFCB: DS 36 ; Outfile FCB ; DATALEN EQU $-DATA ; Length of data area to be initialized ; DS 48 ; Local stack STACK: DS 2 ; CCP stack pointer ; END