ALWAYS 30APR2 HEX ;30APR2 ;**-1 .MCALL FSRSZ$ .MCALL FINIT$ .MCALL QIOW$,DIR$ .MCALL EXIT$S,GCMLB$,GCML$ .MCALL FDBDF$,FDAT$A,FDRC$A,FDOP$A .MCALL MRKT$C,ASTX$S,CMKT$S,QIOW$C,WTSE$C ; ;**** LOCAL EQUATES ; CMILUN == 1 ; LUN FOR COMMAND LINE INPUT IOLUN == 3 ; LUN FOR DISK I/O TIME = 120. ; NUMBER OF SECONDS TO WAIT FOR A COMMAND MEMLOW == 000000 ; LOW LIMIT ON VIRTUAL MEMORY MEMHIGH == 077777 ; MEMORY HIGH LIMIT (7FFFH) MEMSIZE == 040000 ; SIZE OF VIRTUAL MEMORY IN WORDS SPACE == ' ; SPACE TAB == ' ; TAB HYPHEN == '- MAXWID == 040 ; MAXIMUM WIDTH ALLOWED FOR (20H) ;21AUG1 DEFWID == 040 ; DEFAULT WIDTH OF HEX FILE (20H) ;21AUG1 .PAGE ;************************************************************************ ;* * ;* HEX - HEX FILE MANIPULATION UTILITY * ;* * ;* AUTHOR: KEVIN ANGLEY * ;* * ;* DATE: 03-OCT-80 * ;* * ;************************************************************************ ; ; **** BASE LEVEL: 03-OCT-80 ; ; EDIT HISTORY: ; ; 17FEB1 KEVIN ANGLEY ADDED SEARCH FOR BYTE/WORD FUNCTION ;17FEB1 ; READ AND COMPARE NOW SHOW CHECKSUM ;17FEB1 ; MADE ALL MESSAGES UPPER/LOWER CASE ;17FEB1 ; WRITE NOW SHOWS STATISTICS SAME AS READ ;17FEB1 ; MADE .HEX DEFAULT IN FILENAME PARSING ;17FEB1 ; ;17FEB1 ; ;19JUN1 ; 19JUN1 KEVIN ANGLEY ADDED DISPLAYABLE COMMENT INDICATOR "*" ;19JUN1 ; SO THAT YOU CAN DISPLAY SOME INDIRECT CMD FILE ;19JUN1 ; COMMENTS. IT WOULD HAVE BEEN EASIER TO CLEAR ;19JUN1 ; GE.COM BEFORE THE GCML, BUT USERS SEEMED TO ;21AUG1 ; THINK THAT TWO CLASSSES OF COMMENTS WOULD BE ;21AUG1 ; DESIRABLE. ; COMMENTS ARE STILL NOT DISPLAYED. ;21AUG1 ; ;21AUG1 ; ALSO, IN READ MODULE - DON'T COMPUTE REAL ;21AUG1 ; STATISTICS IF NO DATA ACTUALLY READ. ;21AUG1 ; ;21AUG1 ; 25AUG1 KEVIN ANGLEY ADDED FEATURES TO READ AND WRITE. ;25AUG1 ; THESE FEATURES ALLOW ADDING OR ; SUBTRACTING TO THE ADDRESSES THAT ;21AUG1 ; ARE INPUT/OUTPUT FROM/TO THE FILE. ;21AUG1 ; ALSO, THE "PARTIAL" KEYWORD OUTPUTS A FILE ;21AUG1 ; WITHOUT THE TRAILER RECORD. ;21AUG1 ; THE "WIDTH" KEYWORD ALLOWS YOU TO SPECIFY THE ;21AUG1 ; MAXIMUM WIDTH OF THE HEX FILE. ;25AUG1 ; ; ;21AUG1 ; 28SEP1 KEVIN ANGLEY ALLOW SUM COMMAND TO WRITE INTO LOCATION ;28SEP1 ; OR VIRTUAL REGISTERS A LA CRC COMMAND. ;28SEP1 ; ADD COMPLEMENT (LOGICALLY COMPLEMENT) AND ;28SEP1 ; NEGATE (ARITHMETIC NEGATE) COMMANDS. ;28SEP1 ; CHANGED CASE MACRO TO DO JMP INSTEAD OF BR. ;28SEP1 ; ;28SEP1 ; ;28SEP1 ; ;30APR2 ; 30APR2 KEVIN ANGLEY ADDED EVEN/ODD PARAMETERS TO COPY COMMAND TO ;30APR2 ; ENABLE BURNING EVEN/ODD PROMS FOR 16-BIT ;30APR2 ; MICROPROCESSORS. ADDED RESTRICTION TO OFFSET ;30APR2 ; THAT OFFSET MUST BE EVEN. ;30APR2 ; ;30APR2 .PAGE .SBTTL FILE CONTROL SERVICES DATA AREAS FSRSZ$ 2 ; DEFINE 2 FILE STORAGE REGIONS FDB:: FDBDF$ ; DEFINE THE FILE DESCRIPTOR BLOCK FDAT$A R.VAR,FD.CR ; INITIALIZE FILE ATTRIBUTES FDRC$A ,RECORD,82. ; INITIALIZE RECORD ATTRIBUTES FDOP$A IOLUN,DSPT ; FILE OPEN INITIALIZATION .PAGE .SBTTL HEX - ENTRY AND INITIALIZATION .PSECT .EVEN START: FINIT$ CALL INIT ; INITIALIZE MEMORY, CLEAR OFFSET CMD: 1$: MRKT$C ,TIME,2,TIMOUT ; ESTABLISH A TIMEOUT FOR COMMAND INPUT GCML$ #GCLBLK ;COLLECT COMMAND LINE BCC 3$ CMKT$S ; CANCEL MARK TIME IF BAD COMMAND CMPB #GE.EOF,GCLBLK+G.ERR ;CHECK STATUS BNE 2$ ; NE: REAL ERROR JMP EXIT ; EOF, RETURN TO EXECUTIVE 2$: OUTPUT CIE ; COMMAND INPUT ERROR ERROR BR CMD ; GO GET ANOTHER 3$: CMKT$S ; CANCEL MARK TIME IF GOOD COMMAND MOV GCLBLK+G.CMLD,R2 ; COMMAND STRING LENGTH IN R2 BLE CMD ; LE: NULL COMMAND - REPROMPT MOV GCLBLK+G.CMLD+2,R0 ; "FROM" ADDRESS IN R0 BITB #FD.TTY,GCLBLK+F.RCTL ; INPUT FROM TERMINAL OR INDIRECT FILE? BNE 5$ ; NE: TERMINAL - ALREADY ECHOED MOV R0,OUTDIR+Q.IOPL ; ECHO COMMAND LINE MOV R2,OUTDIR+Q.IOPL+2 DIR$ #OUTDIR 5$: MOV R0,R1 ; "TO" ADDRESS IN R1 30$: CMPB #SPACE,(R0) ; SPACE IN COMMAND LINE? BEQ 40$ ; EQ: YES - IGNORE CMPB #TAB,(R0) ; TAB IN COMMAND LINE? BEQ 40$ ; EQ: YES - IGNORE MOVB (R0),(R1)+ ; NON-TRIVIAL - MOVE AND ADVANCE TO PTR 40$: INC R0 ; ADVANCE FROM PTR (FOR EITHER CASE) SOB R2,30$ ; MORE - KEEP COMPRESSING CLRB (R1) ; NO MORE - MAKE ASCIZ MOV GCLBLK+G.CMLD+2,R0 ; THROUGHOUT, R0 IS COMMAND LINE POINTER CMPB #'*,(R0) ; IS THIS A DISPLAYABLE COMMENT? ;19JUN1 BNE 45$ ; NE: NEED TO DISPLAY ;28SEP1 JMP 50$ ; EQ: ALREADY DISPLAYED ;28SEP1 45$: ;28SEP1 ; ;28SEP1 CASE INIT ; IF CMD, PROCESS, THEN JMP 50$ ;28SEP1 CASE FILL ; IF CMD, PROCESS, THEN JMP 50$ ;28SEP1 CASE COMPARE ; IF CMD, PROCESS, THEN JMP 50$ ;28SEP1 CASE EDIT ; IF CMD, PROCESS, THEN JMP 50$ ;28SEP1 CASE TRANSFER ; IF CMD, PROCESS, THEN JMP 50$ ;28SEP1 CASE OFFSET ; IF CMD, PROCESS, THEN JMP 50$ ;28SEP1 CASE READ ; IF CMD, PROCESS, THEN JMP 50$ ;28SEP1 CASE COPY ; IF CMD, PROCESS, THEN JMP 50$ ;28SEP1 CASE CRC ; IF CMD, PROCESS, THEN JMP 50$ ;28SEP1 CASE SUM ; IF CMD, PROCESS, THEN JMP 50$ ;28SEP1 CASE DISPLAY ; IF CMD, PROCESS, THEN JMP 50$ ;28SEP1 CASE WRITE ; IF CMD, PROCESS, THEN JMP 50$ ;28SEP1 CASE MOVE ; IF CMD, PROCESS, THEN JMP 50$ ;28SEP1 CASE SEARCH ; IF CMD, PROCESS, THEN JMP 50$ ;28SEP1 CASE COMPLEMENT ; IF CMD, PROCESS, THEN JMP 50$ ;28SEP1 CASE NEGATE ; IF CMD, PROCESS, THEN JMP 50$ ;28SEP1 ; ELSE - COMMAND NOT FOUND OUTPUT IC ; ILLEGAL COMMAND ; 50$: 255$: JMP CMD ;GO GET ANOTHER COMMAND EXIT: EXIT$S ; PROGRAM EXIT ; .PAGE .SBTTL MATCH - MATCH KEYWORD IF POSSIBLE ; ; ENTRY PARAMETERS: ; ; R0 POINTS TO THE ASCIZ COMMAND LINE BEING PROCESSED ; R1 POINTS TO THE TARGET KEYWORD ASCIZ STRING ; ; IF THE KEYWORD BEGINS AT (R0), THE Z FLAG IS SET TO INDICATE ; EQUALITY. ELSE, THE Z FLAG IS RESET TO INDICATE DIFFERENCE. ; ; EXIT PARAMETERS: ; ; R0 (IF MATCH) POINTS TO NEXT BYTE AFTER KEYWORD IN COMMAND STRING ; R0 (IF NO MATCH) SAME AS ON ENTRY ; R1 (EITHER CASE) GARBAGE ; MATCH:: PUSH R0 ; SAVE COMMAND STRING POINTER 10$: TSTB (R1) ; DONE WITH MATCH IF END OF KEYWORD BEQ 30$ ; YES - RETURN MATCH TSTB (R0) ; NO MATCH IF NO MORE COMMAND STRING BEQ 20$ ; YES - RETURN NO MATCH CMPB (R0)+,(R1)+ ; KEEP COMPARING CHARACTERS BEQ 10$ ; YES - SAME, SO KEEP LOOKING ; NO - NO MATCH 20$: POP R0 ; NO MATCH - RESTORE COMMAND STRING POINTER CLZ ; CLEAR ZERO FLAG TO SHOW NOT EQUAL RETURN 30$: TST (SP)+ ; CLEAN UP THE STACK SEZ ; SET ZERO FLAG TO SHOW MATCH RETURN .PAGE .SBTTL VALID - OFFSET AND VALIDATE INPUT ADDR ; ; ENTRY PARAMETERS: ; ; R1 CONTAINS AN INPUT ADDRESS ; ; EXIT PARAMETERS: ; ; R1 CONTAINS THE OFFSETTED ADDRESS ; NO OTHER REGISTERS ARE AFFECTED ; CARRY FLAG INDICATEDS VALID (CLEAR) OR NOT VALID (SET) ; VALID:: SUB OFFST,R1 ; SUBTRACT OFFSET BIT #100000,R1 ; IS HIGH BIT ON? BEQ 10$ ; CC: NO OUTPUT AOR ; ADDRESS OUT OF RANGE SEC ; SET CARRY BR 20$ ; EXIT 10$: CLC ; CLEAR THE CARRY 20$: RETURN ; EXIT .PAGE .SBTTL FROMTH - COLLECT FROM/THRU ADDRESSES ; ; ENTRY PARAMETERS: ; ; R0 POINTS TO THE ASCIZ COMMAND LINE IN PROCESS ; ; EXIT PARAMETERS: ; ; R0 POINTS JUST BEYOND THE "THRU" ADDRESS ; (IF SUCCESSFUL) ; R1 CONTAINS THE FROM ADDRESS ; R2 CONTAINS THE THRU ADDRESS ; R3 CONTAINS THRU-FROM+1 COUNT ; ; IF THE CARRY FLAG IS CLEAR UPON EXIT, THE ; FOLLOWING CONDITIONS ARE ASSURED: ; ; 1) THE KEYWORDS/ADDRESSES WERE FOUND ; 2) THE HEX CONVERSION WAS SUCCESSFUL ; 3) THRU>=FROM AND BOTH ARE VALID ; ; IF THERE ARE ERRORS, THE CARRY ; FLAG IS SET, AND A MESSAGE PUT OUT. ; FROMTH:: GETKEY FROM ; COLLECT "FROM" KEYWORD BEQ 10$ ; EQ: YES OUTPUT MSK ; MISSING "FROM" KEYWORD BR 250$ ; ERROR EXIT 10$: CALL GETHX4 ; GET "FROM" ADDRESS BCS 250$ ; CS: FAILURE MOV R1,R3 ; SAVE "FROM" IN R3 GETKEY THRU ; COLLECT "THRU" KEYWORD BEQ 20$ ; EQ: YES OUTPUT MSK ; MISSING "THRU" KEYWORD BR 250$ ; ERROR EXIT 20$: CALL GETHX4 ; GET TO ADDRESS BCS 250$ ; CS: FAILURE CALL VALID ; VALIDATE "THRU" ADDRESS BCS 250$ ; CS: THRU BAD ADDRESS MOV R1,R2 ; "THRU" ADDR GOES IN R2 MOV R3,R1 ; RESTORE "FROM" ADDRESS CALL VALID ; VALIDATE "FROM" ADDRESS BCS 250$ ; CS: BAD FROM ADDRESS - TAKE ERROR EXIT CMP R2,R1 ; THRU > FROM BHIS 40$ ; HS: O.K. OUTPUT AOR ; ADDRESS OUT OF RANGE BR 250$ ; ERROR EXIT 40$: MOV R2,R3 ; PUT COUNT IN R3 SUB R1,R3 INC R3 MOV R1,FROM ; SAVE IN GLOBAL VARIABLE FROM ;17FEB1 MOV R2,TO ; SAVE IN GLOBAL VARIABLE TO ;17FEB1 CLC ; CLEAR CARRY BR 255$ ; AND RETURN 250$: SEC ; ERROR EXIT-SET CARRY 255$: RETURN .PAGE .SBTTL EXTRA - PROCESS SUPERFLUOUS COMMAND STRING ; ; ENTRY PARAMETERS: ; ; R0 POINTS TO THE COMMAND STRING IN PROCESS ; ; EXIT PARAMETERS: ; ; NONE ; ; FUNCTION: AT THIS POINT, ALL USEFUL INFORMATION HAS BEEN PROCESSED ; FROM THE COMMAND LINE. THIS ROUTINE MERELY INFORMS THE USER IF THEIR ; IS SUPERFLUOUS INFORMATION REMAINING IN THE COMMAND LINE. ; ; DESTROYS: R0,R1 ; EXTRA:: TSTB (R0) ; IS THERE SOME EXTRA INFO ? BEQ 255$ ; EQ: NO - JUST RETURN CLR R1 ; INITIAL COUNT OF GARBAGE IS ZERO PUSH R0 ; SAVE POINTER TO EXCESS 10$: INC R1 ; INCREMENT GARBAGE COUNT TSTB (R0)+ ; LOOK FOR THE END BNE 10$ ; NE: NOT YET OUTPUT SCI ; SUPERFLUOUS COMMAND STRING IGNORED POP R0 ; RESTORE POINTER TO BEGINNING OF EXCESS MOV R0,OUTDIR+Q.IOPL ; SET UP TO SHOW USER MOV R1,OUTDIR+Q.IOPL+2 DIR$ #OUTDIR 255$: RETURN .PAGE .SBTTL PARSE - PARSE FILE DESCRIPTOR INTO NAMEBLOCK ; ; PARSE - PARSE FILE DESCRIPTOR INTO NAMEBLOCK ; ; INPUT PARAMETERS: ; ; R0 POINTS TO COMMAND LINE IN PROCESS ; ; OUTPUT PARAMETERS: ; ; R0 POINTS JUST BEYOND FILE DESCRIPTOR (IF SUCCESSFUL) ; ; CARRY FLAG INDICATES SUCCESS (CLEAR) OR FAILURE (SET) ; ; FUNCTION: SETS UP DATASET DESCRIPTOR BLOCK DSPT ACCORDING TO FILE ; SPECIFICATION IN COMMAND LINE. IF NO DEVICE/UIC IS ; SPECIFIED, THE ENTRY FOR DEVICE/UIC IS ZEROED. ; ; AUTHOR: KEVIN ANGLEY ; ; DATE: 27-AUG-80 ; PARSE:: MOV #DSPT,R1 ; MAKE SOME DEFAULT ASSUMPTIONS MOV #SYSLEN,(R1)+ ; SY: IS THE DEVICE MOV #SYS,(R1)+ CLR (R1) ; AND NO UIC (DEFAULT IS CURRENT) MOV R0,R1 ; SAVE POINTER TO SPECIFICATION 10$: ; PARSE DEVICE SPEC (IF ANY) TSTB (R1) ; AT THE END YET? BEQ 20$ ; EQ: YES, AND NO DEVICE SPEC CMPB #':,(R1)+ ; HAVE WE SEEN A COLON? BNE 10$ ; NE: NO, KEEP LOOKING MOV R0,DSPTDP ; START OF SPEC IS START OF DEVICE SPEC PUSH R1 ; SAVE POINTER TO UIC/NAME SPEC SUB R0,R1 ; COMPUTE LENGTH OF DEVICE SPEC MOV R1,DSPTDL ; SET DEVICE SPEC LENGTH POP R0 ; RESTORE POINTER TO UIC/NAME SPEC TO R0 20$: ; PARSE UIC SPECIFICATION CMPB #'[,(R0) ; DO WE HAVE A UIC SPECIFIED? BNE 30$ ; NE: NO, GO PROCESS NAME MOV R0,DSPTUP ; SET START OF UIC SPECIFICATION INC R0 ; MOVE PAST THE LEFT BRACKET 25$: TSTB (R0) ; AT THE END YET? BNE 28$ ; NO, KEEP LOOKING OUTPUT FNS ; FILE NAME SYNTAX ERROR BR 250$ 28$: CMPB #'],(R0)+ ; SEARCH FOR RIGHT BRACKET BNE 25$ ; NE: KEEP LOOKING PUSH R0 ; GOT IT - SAVE POINTER TO NAME SPEC SUB DSPTUP,R0 ; COMPUTE LENGTH OF UIC SPEC MOV R0,DSPTUL ; SET UIC SPEC LENGTH POP R0 ; RESTORE POINTER TO NAME SPEC 30$: ; PARSE NAME SPECIFICATION MOV #RECORD,R1 ; USE RECORD FOR FILENAME WORK AREA ;17FEB1 MOV R1,DSPTNP ; SET POINTER TO FILENAME ;17FEB1 35$: ;17FEB1 TSTB (R0) ; AT END OF COMMAND LINE? ;17FEB1 BEQ 40$ ; EQ: YES - PUT IN .HEX ;17FEB1 CMPB #'.,(R0) ; . SPECIFIED? ;17FEB1 BEQ 50$ ; EQ: YES - JUST COPY REMAINDER ;17FEB1 CMPB #';,(R0) ; VERSION SPECIFIED? ;17FEB1 BEQ 40$ ; EQ: YES, INSERT .HEX, THEN COPY REMAINDER ;17FEB1 MOVB (R0)+,(R1)+ ; GARDEN VARIETY CHARACTER ;17FEB1 BR 35$ ; KEEP PROCESSING PRE-EXTENSION PART ;17FEB1 ;17FEB1 40$: ; INSERT .HEX ;17FEB1 MOVB #'.,(R1)+ ; INSERT . ;17FEB1 MOVB #'H,(R1)+ ; INSERT H ;17FEB1 MOVB #'E,(R1)+ ; INSERT E ;17FEB1 MOVB #'X,(R1)+ ; INSERT X ;17FEB1 ;17FEB1 50$: ; COPY REMAINDER OF STRING ;17FEB1 TSTB (R0) ; AT END OF SOURCE STRING? ;17FEB1 BEQ 60$ ; EQ: YES, THAT'S ALL ;17FEB1 MOVB (R0)+,(R1)+ ; COPY STRING ;17FEB1 BR 50$ ; KEEP PROCESSING POST-EXTENSION PART ;17FEB1 ;17FEB1 60$: ; END OF STRING - COMPUTE LENGTH ;17FEB1 SUB #RECORD,R1 ; SUBTRACT BEGINNING ;17FEB1 MOV R1,DSPTNL ; SET NAME LENGTH ;17FEB1 CLC ; SET SUCCESS FLAG BR 255$ ; AND EXIT 250$: ; ERROR EXIT SEC ; SET CARRY FLAG 255$: RETURN .PAGE .SBTTL TIMOUT - HANDLE COMMAND TIMEOUT AST ; AST SERVICE ROUTINE ; TASK ENTERS AST WITH STACK AS FOLLOWS ; SP+10 EVENT FLAG MASK WORD ; SP+ 6 PS OF TASK PRIOR TO AST ; SP+ 4 PC OF TASK PRIOR TO AST ; SP+ 2 DSW OF TASK PRIOR TO AST ; SP+ 0 EVENT FLAG NUMBER OF ZERO TIMOUT: QIOW$C IO.KIL,CMILUN,3 ; KILL ALL I/O ON LUN CMILUN WTSE$C 3 ; WAIT FOR I/O TO BE CLEANED UP OUTPUT CIT ; COMMAND INPUT TIMEOUT MESSAGE MOV #EXIT,4(SP) ; WILL CONTINUE EXECUTION AT 'EXIT' TST (SP)+ ; EF MUST BE REMOVED ASTX$S ; EXIT AST .PAGE .SBTTL DATA - HEX DATA AREAS .PSECT DATA .EVEN OFFST:: .BLKW ; CURRENT OFFSET VALUE TRNSFR:: .BLKW ; CURRENT TRANSFER ADDRESS (FROM READ OPERATION ; OR TRANSFER COMMAND) ; ;17FEB1 FROM:: .BLKW ; STORED "FROM" PARAMETER ;17FEB1 TO:: .BLKW ; STORED "TO" PARAMETER ;17FEB1 ; ;17FEB1 .EVEN ; RECORD MUST BE ON EVEN BOUNDARY !!! RECORD:: .BLKB 148. ; A GENERAL BUFFER FOR RECORD PROCESSING WORKBUF:: .BLKB 16. ; A GENERAL BUFFER FOR TEMPORARY WORK .EVEN GCLBLK:: GCMLB$ 1,HEX,CMDBUF,CMILUN ; GET COMMAND LINE CONTROL BLOCK .EVEN CMDBUF:: .BLKB 80. ; COMMAND LINE BUFFER ; ; PSEUDO-REGISTERS 00-FF REGISTER:: .BLKB 256. ; ; DSPT:: ; FILE NAME DESCRIPTOR BLOCK DSPTDL:: .WORD ; DEVICE DESCRIPTOR LENGTH DSPTDP:: .WORD ; DEVICE DESCRIPTOR POINTER DSPTUL:: .WORD ; UIC DESCRIPTOR LENGTH DSPTUP:: .WORD ; UIC DESCRIPTOR POINTER DSPTNL:: .WORD ; NAME DESCRIPTOR LENGTH DSPTNP:: .WORD ; NAME DESCRIPTOR POINTER MEMORY:: .BLKW MEMSIZE ; VIRTUAL MEMORY ARRAY .PAGE .SBTTL PURE - PURE DATA AREAS (READ ONLY) .PSECT PURE RO ; KEYTBL:: ; KEYWORD ASCIZ TABLE ; ; *** COMMAND KEYWORDS *** ; KEY INIT KEY FILL KEY EDIT KEY OFFSET KEY READ KEY COPY KEY CRC KEY SUM KEY DISPLAY KEY TRANSFER KEY COMPARE KEY WRITE KEY MOVE KEY SEARCH ;17FEB1 KEY COMPLEMENT ;28SEP1 KEY NEGATE ;28SEP1 ; ; *** ARGUMENT KEYWORDS *** ; KEY FROM KEY THRU KEY TO KEY WITH KEY FILE KEY BYTE KEY WORD KEY FOR ;17FEB1 KEY PLUS ;21AUG1 KEY MINUS ;21AUG1 KEY PARTIAL ;21AUG1 KEY WIDTH ;21AUG1 KEY EVEN ;30APR2 KEY ODD ;30APR2 ; ; .PAGE .SBTTL DIRECTIVES AND MESSAGES .EVEN .PSECT DATA OUTDIR:: QIOW$ IO.WLB,5,1,,,,<0,0,40> ; SKELETAL OUTPUT DIRECTIVE DEFM CIT ;17FEB1 DEFM IC ;17FEB1 DEFM AMF ;17FEB1 DEFM AOR
;17FEB1 DEFM HCE ;17FEB1 DEFM MSK ;17FEB1 DEFM SMO ;17FEB1 DEFM CRO ;17FEB1 DEFM OFF ;17FEB1 DEFM SCI ;17FEB1 DEFM FOE ;17FEB1 DEFM TRL ;17FEB1 DEFM CSE ;17FEB1 DEFM CIE ;17FEB1 DEFM IOE ;17FEB1 DEFM EDT <0000 00-> ;17FEB1 DEFM FNS ;17FEB1 DEFM RDL ; RDX MESSAGES ARE ORDERED! ;17FEB1 DEFM RDH ;17FEB1 DEFM RDC ;17FEB1 DEFM RDS ;17FEB1 DEFM RDT ;17FEB1 DEFM FLT < File: 0000> ;17FEB1 DEFM ADR <0000> ;17FEB1 DEFM BDW ;21AUG1 DEFM TRI ;25AUG1 DEFM EVO ;30APR2 DEFM SYS DEFM TI .END START