ASMB,R,L,C RTML2 * NAME: RTML2 RTE-M SEGMENTED GEN.-LOADER (SEGMENT 2) * SOURCE: 91740-18047 * RELOC: 91740-16047 * PGMR: MIKE SCHOENDORF * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * * *************************************************************** * * * * * HED RTE-M SYSTEM GENERATOR-LOADER NAM RTML2,5 91740-16047 REV 2013 800121 * ENT RTML2 * * EXTERNAL REFERENCE NAMES EXT ABRT1,ADTRP,AFILE,AL EXT ATTBL,BAKUP,BLINE,BPAGA,BPLOC EXT CLFL4,CLFL5,CLFL6 EXT CMDLU,CMER,CONSL EXT DCB2,DCB3,DCB4,DCB5,DCB6,DIAG2 EXT ECFIL,ECHO1,ECHOS,EMSAM,ERREX,ER#OR,FRTRU,FUT4 EXT FWABP,FWAC,FWAM,ICR,IDCB,IERR#,IFILE EXT IOPTN,ISECU,JLU,JMPNO,KTABL EXT LBUFA,LDGEN,LDSEG,LDSG3,LER3,LER5 EXT LFILE,LIBFL,LINTP,LISTO,LITBL,LNKDR EXT LOCFS,LST,LST1,LST2,LST3 EXT LST4,LST5 EXT LSTUL,LTABL EXT LWABP,LWAC,LWAM,MAPON,MAPS EXT MEMRY,MLOCC,MTABL EXT NBUF,NBUFA,NCHAR EXT NSCAN,NXTC,NXTC2,NXTCM EXT OFILE,ONTBL,OPEN1 EXT OPFLA,OPFLB,OPFLC,OPFLD,OPFLE EXT OPFLF,OPNLU EXT OTFIL,OUTON EXT QBUFA,QGETC,QQCNT EXT QQPTR,RBTA,RIC EXT SCAN,SCP,SEGFL,SERNM EXT SNAPS,SSTBL,STABL,TOTBL EXT TRANS,WERR1 EXT XNAM,XNAMA * EXT CREAT,OPEN,PARSE EXT DU#MY * * B EQU 1 ERROR EQU ER#OR IERR EQU IERR# LOCC EQU MLOCC SUP ************************************************************************ * * THIS SEGMENT OF THE RTE-M SEGEMNTED LOADER AND GENERATOR * PROCESSES ALL LOADER COMMANDS (SET, REL, TR, ETC.). * HOWEVER THIS SEGMENT DOES NOT PERFORM RELOCATION. * CONTROL IS RETURNED TO EITHER THE LOADER OR GENERATOR * MAIN IF NO RELOCATION OCCURS. IF RELOCATION (REL OR * SEARCH COMMAND) IS NEEDED, THIS SEGMENT WILL CALL * FOR LOADER SEGMENT 3 (RTML3) TO BE LOADED IN TO * PERFORM THE RELOCATION. * ******************************************************************** HED RTM LOADER UTILITY SUBROUTINES SPC 5 SKP RTML2 NOP NOP CLA,INA STA SEGFL SET LAST SEGMENT FLAG LDA JMPNO ADA PTABL LDA 0,I JMP 0,I * LDRIN CLA STA LDSG3 SET FOR RELOCATION ENTRY STA SEGFL LAST SEGMENT FLAG LDA B3 LOAD IN LOADER SEGMENT 3 JMP LDSEG * B3 OCT 3 SKP ***** * * BRANCH TABLE FOR COMMAND PROCESSORS. * ORDER OF THIS TABLE MUST CONFORM TO ORDER OF FIRST ENTRIES IN * COMMAND MNEMONIC TABLE. * ***** PTABL DEF * DEF BNDST BOUNDS STATEMENT DEF MAPST MAP STATEMENT DEF RELST RELOCATE STATEMENT DEF RELST RELOCATE STATEMENT DEF SERST SEARCH STATEMENT DEF OUTST OUTPUT STATEMENT DEF TR TRANSFER STATEMENT DEF TR TRANSFER STATEMENT DEF SETST SET STATEMENT DEF LINST LINKS IN STATEMENT DEF LNKST LINKS STATEMENT DEF EXIT EXIT STATEMENT DEF ECHO ECHO STATEMENT SKP ***** * ** MOVE. ** MOVE BLOCK OF CHARS FROM INPUT BUFFER (QIBUF) TO A * SPECIFIED LOCATION. STOP AT FIRST DELIMITER. * CALLING SEQUENCE: * * LDA ADDRESS OF DESTINATION * JSB MOVE. * RETURN * ***** MOVE. NOP STA MOVE3 SAVE DESTINATION ADDRESS JSB NXTC GET NEXT NON BLANK CHAR JMP CMER NONE FOUND MOV01 ALF,ALF POSITION CHAR TO LEFT, STA MOVE3,I AND STORE IN OUTPUT BUFFER JSB QGETC GET NEXT CHAR JMP MOV03 END OF LINE CPA B40 BLANK? JMP MOV02 CPA B54 COMMA? JMP MOV02 CPA B51 RIGHT PAREN? JMP MOV02 CPA B50 LEFT PAREN? JMP MOV02 YES CPA B72 COLON? JMP MOV02 YES IOR MOVE3,I PUT LOWER HALF STA MOVE3,I IN BUFFER JSB QGETC GET NEXT CHAR JMP MOV03 END OF LINE CPA B40 BLANK? JMP MOV02 CPA B54 COMMA? JMP MOV02 CPA B51 RIGHT PAREN? JMP MOV02 CPA B50 LEFT PAREN? JMP MOV02 YES CPA B72 COLON? JMP MOV02 YES ISZ MOVE3 BUMP OUTPUT POINTER JMP MOV01 KEEP GOING MOV02 JSB BAKUP BACK UP OVER LAST CHAR MOV03 LDA MOVE3,I WAS LAST CHAR AND UPCM CPA MOVE3,I AN EVEN NUMBERED CHAR? RSS JMP MOVE.,I YES, BUFFER IS OK IOR B40 NO, APPEND A BLANK STA MOVE3,I AND STORE IT AWAY JMP MOVE.,I * MOVE3 NOP DESTINATION ADDRESS * B40 OCT 40 B50 OCT 50 B51 OCT 51 B54 OCT 54 B72 OCT 72 SPC 1 SKP * * * SUBROUTINE TO DETERMINE IF INPUT IS OCTAL OR ASCII * * OCTAS NOP STA 1 AND B377 ADA M60 SSA JMP OCTAS,I ASCII ADA M10 SSA,RSS JMP OCTAS,I MUST BE ASCII, EXIT ISZ OCTAS OCTAL JMP OCTAS,I * B377 OCT 377 M10 DEC -10 M60 OCT -60 * * * STORE NOP LDB LU ASCII LU STB OTFIL,I ISZ OTFIL LDB .. ASCII .. STB OTFIL,I ISZ OTFIL STA OTFIL,I LU JMP STORE,I * LU ASC 1,LU .. ASC 1,.. SKP * * * SUBROUTINES TO OPEN FILES * * * * * OPFL2 NOP LDA OPFLB STA OPFLN LDA OFILE OPEN ABSOLUTE OUTPUT FILE LDB DCB2 JSB OPNFL OPFLN OCT 110 BINARY OUTPUT JMP OPFL2,I * * * OPFL3 NOP LDA OPFLC STA OPFLO LDA IFILE OPEN INPUT (REL/SEARCH) FILE LDB DCB3 JSB OPNFL OPFLO OCT 310 BINARY INPUT JMP OPFL3,I * * * OPFL4 NOP LDA OPFLD STA OPFLP LDA LFILE OPEN LIST (MAP) - PROMPT FILE LDB DCB4 JSB OPNFL OPFLP OCT 210 PRINT 1ST COLUMN CLA,INA SET FOR MAP JMP OPFL4,I * * * OPFL5 NOP LDA OPFLE STA OPFLQ LDA ECHOS OPEN ECHO FILE LDB DCB5 JSB OPNFL OPFLQ OCT 210 PRINT 1ST COLUMN CLA,INA SET FOR ECHO JMP OPFL5,I * * * OPFL6 NOP LDA OPFLF STA OPFLR LDA TRANS OPEN TRANSFER FILE LDB DCB6 JSB OPNFL OPFLR OCT 410 KEYBOARD ECHO JMP OPFL6,I * * * * SKP SKP * * * OPEN FILES * * A REG = ADDRESS OF FILE NAME ARRAY * B REG = ADDRESS OF DATA CONTROL BLOCK * * OPNFL NOP STA AFILE SAVE ADDRESS OF FILE STB IDCB SAVE ADDRESS OF DCB LDA OPNFL,I STA IOPTN OPEN OPTION ISZ OPNFL JSB OPEN OPEN FILE DEF *+7 RETURN ADDRESS DEF IDCB,I DCB DEF IERR ERROR CODE DEF AFILE,I ADDRESS OF FILE DEF IOPTN OPEN OPTION DEF ISECU SECURITY CODE DEF ICR LABEL SSA JMP OPN1 OPEN ERROR LDA OPFLA AND UDFE CLEAR PAUSE BIT JSB PAUSE JMP OPNFL,I * OPN1 CPA M100 JMP OPN7 LDB OPEN1 COMMAND INPUT CALLING? CPB B1 JMP ABRT0 YES, ABORT LDB OPFLA SSB BEEN HERE ALREADY? JMP OPN2 YES, FILE NOT FOUND CPA MD6 OPEN ERROR (6)? RSS JMP ERROE NO, OPEN ERROR LDA OPFLA SET PAUSE BIT IOR C1000 JSB PAUSE OPN4 CLA STA QQCNT RESET INPUT BUFFER LDA QBUFA STA QQPTR LDA QBUFA,I GET FIRST CHARACTER ALF,ALF AND B177 CPA B55 IS COMMAND ID SUPPLIED? ISZ QQCNT YES--BUMP CHAR. POINTER JMP NXTC2 * OPN2 LDA OPFLA CLEAR PAUSE BIT AND UDFE JSB PAUSE JSB OPNLU CHECK IF LU JMP OPN8 NOT LU JMP OPNFL,I LU,EXIT OPN8 LDA AFILE CPA OFILE OPENING OUTPUT FILE? JMP OPN3 YES LDB B4 CPA SNAPS OPENING SNAP FILE? JMP OPN6 YES CPA LFILE OPENING MAP FILE? JMP OPN6 CPA ECHOS OPENING ECHO FILE? JMP OPN6 YES OPN5 LDA FN FILE NOT FOUND LDB IERR ERROR CODE JSB ERROR JMP CONSL TRY AGAIN * OPN3 LDA D300 LDB LDGEN LOADER CALLING? SZB LDA D30 YES LDB B7 RSS OPN6 LDA D15 JSB CRETE GO TRY TO CREATE FILE JMP OPN4 * OPN7 LDA DI LDB IERR ERROR CODE JSB ERROR JMP CONSL DISK INITIALIZATION ERROR * ERROE LDA OE LDB IERR ERROR CODE JMP WERR1 * ABRT0 LDA OE OPEN FILE ERROR LDB IERR ERROR CODE JSB ERROR JMP ABRT1 * MD6 DEC -6 B1 OCT 1 B7 OCT 7 B55 OCT 55 B177 OCT 177 * D15 DEC 15 D30 DEC 30 C1000 OCT 100000 UDFE OCT 77777 * * CREATE OUTPUT FILE IF IN FLOPPY ENVIRONMENT * CRETE NOP STA DSIZE FILE SIZE STB ITYPE TYPE OF FILE 4=ASCII 7=ABS JSB CREAT CREATE FILE DEF *+8 DEF IDCB,I DCB DEF IERR DEF AFILE,I ADDRESS OF FILE DEF DSIZE FILE SIZE DEF ITYPE TPE OF FILE DEF ISECU SECURITY CODE DEF ICR LABEL CPA MD200 JMP OPN5 CAN'T CREATE FILE ON NON-FLOPPY SSA,RSS JMP CRETE,I * LDA CR CREATE ERROR LDB IERR ERROR CODE JSB ERROR JMP CONSL * CR ASC 1,CR DI ASC 1,DI * MD200 DEC -200 M100 DEC -100 D300 DEC 300 * DSIZE NOP ITYPE NOP SKP * OE ASC 1,OE OPEN FILE ERROR FN ASC 1,FN FILE NOT FOUND ERROR * * * SUBROUTINE TO ADD/DELETE PAUSE BIT FROM CONTROL WORDS * PAUSE NOP STA OPFLA STA OPFLF XOR B500 STA OPFLB IOR B200 STA OPFLC XOR B100 STA OPFLD STA OPFLE JMP PAUSE,I * B100 OCT 100 B200 OCT 200 B500 OCT 500 SKP * ***** * ** DELIM ** ADVANCE POINTERS TO ASCII INPUT BUFFER PAST NEXT * DELIMITER. ACCEPTABLE DELIMITERS ARE A COMMA, ONE OR * MORE BLANKS, OR A COMMA EMBEDDED IN BLANKS. * CALLING SEQUENCE: * * JSB DELIM * RETURN1 NOTHING BUT BLANKS TO END OF LINE * RETURN2 DELIMITER FOUND * * NOTE: IF NO VALID DELIMITER IS FOUND (OR COMMA WITH NOTHING BUT * BLANKS TO THE END OF LINE) A DIRECT JUMP TO THE COMMAND * ERROR ROUTINE WILL RESULT. THUS CONTROL MAY NOT BE RETURNED ***** DELIM NOP JSB QGETC GET THE NEXT CHAR JMP DELIM,I END OF LINE , RETURN (P+1) LDB M2 INITIALIZE STB STMP1 COMMA COUNTER CPA B40 IS THIS A BLANK? JMP DEL01 YES CPA B54 NO, IS IT A COMMA? RSS JMP CMER NO, ERROR ISZ STMP1 DEL01 JSB NXTC GET NEXT NON BLANK CHAR JMP DEL02 END OF LINE CPA B54 GOT ONE, IS IT A COMMA? RSS JMP DEL03 NO ISZ STMP1 YES, IS IT THE SECOND ONE? JMP DEL01 NO, GET NEXT NON BLANK CHARACTER DEL03 JSB BAKUP YES, BACK UP BUFFER POINTERS ISZ DELIM AND EXIT (P+2) JMP DELIM,I DEL02 ISZ STMP1 WAS THERE A COMMA? JMP DELIM,I NO, EXIT (P+1) JMP CMER YES, ERROR * STMP1 NOP COMMA COUNTER * M2 DEC -2 SKP * * * SUBROUTINE TO PARSE COMMAND * * CALLING SEQUENCE * * A REG = DEFAULT LU OR 0 IF DEFAULT NOT ALLOWED * B REG = ADDRESS OF FILE NAME ARRAY * * JSB FILE * (P+1) = GTFIL IOPTN PARAMETER (WHICH FILE) * RETURN 1 = COMMAND (LU) - GET FILE NAME * RETURN 2 = OPEN FILE * * FILE NOP STA OUTFL SAVE DEFAULT LU STB OTFIL SAVE ADDRESS OF FILE NAME ARRAY JSB NXTC GET NEXT NON-BLANK CHARACTER JMP FILE4 NO MORE LDB OTFIL CPB TRANS TRANSFER COMMAND? JMP FILE2 YES JSB BAKUP BACKUP INPUT BUF TO PREV. CHAR. LDB OTFIL CPB IFILE RELOCATE/SEARCH COMMAND? JMP FILE1 YES CPB LFILE MAP? JMP FILE1 YES CCA OUTPUT, SNAP, OR DISPLAY COMMAND CPB ECHOS ECHO COMMAND? LDA M2 YES LDB ONTBL SEARCH FOR ON OR OFF JSB SCAN JMP CMER ERROR EXIT CPA B2 OFF? JMP FILE3 YES FILE1 JSB ASOCT ASCII OR OCTAL? JMP ASKEY ASCII LDA TCHAR LU JSB STORE JMP FILE,I ASKEY JSB ASCII MOVE FILE NAME TO JMP FILE,I FILE NAME ARRAY AND EXIT FILE2 CPA B54 COMMA? JMP FILE1 YES FILE3 LDB FILE ADB B4 SET RETURN ADDRESS CLA ECHO OFF JMP B,I EXIT FILE4 LDA OUTFL USE DEFAULT LU JSB STORE JMP FILE,I * OUTFL NOP LOGICAL UNIT NUMBER TCHAR NOP * B2 OCT 2 B4 OCT 4 SKP * * * SUBROUTINE TO GET NEXT OCTAL OR ASCII CHARACTER * * ASOCT NOP JSB NXTC GET NEXT CHARACTER JMP CMER NO MORE, ERROR EXIT JSB OCTAS JMP ASOCT,I ASCII INPUT STB TCHAR SAVE FIRST DIGIT JSB NXTC GET NEXT CHARACTER JMP ASOC1 NO MORE, ONE DIGIT LU JSB OCTAS JMP CMER ASCII, ERROR EXIT LDA TCHAR COMBINE WITH PREVIOUS DIGIT ALF,ALF IOR 1 ODGIT STA TCHAR ISZ ASOCT JMP ASOCT,I * ASOC1 LDA TCHAR IOR B30K JMP ODGIT * B30K OCT 30000 * * * * * SUBROUTINE TO MOVE FILE NAME FROM INPUT BUFFER * TO FILE NAME ARRAY * * ASCII NOP JSB BAKUP BACKUP INPUT BUFFER TO PREVIOUS CHARACTER LDA OTFIL LDB BLANK SET FILE NAME TO BLANKS INA STB 0,I INA STB 0,I LDA OTFIL MOVE FILE NAME FROM INPUT BUFFER JSB MOVE. TO FILE NAME ARRAY JMP ASCII,I NO MORE CHARACTERS * BLANK ASC 1, SKP * * * SUBROUTINE TO ADJUST CORE BOUNDS TO NEXT PAGE FOR * USER PROGRAM IF IT DOESN'T START ON PAGE BOUNDARY. * * PAGE NOP STA 1 AND C076 GET PAGE BITS CPA 1 STARTS AT PAGE BOUNDARY? JMP PAGE,I YES, EXIT CPA C076 STARTS SOMEWHERE ON LAST PAGE? JMP LER3 MEMORY OVERFLOW ADA B2000 BEGIN ON NEXT PAGE JMP PAGE,I * B2000 OCT 2000 C076 OCT 76000 SKP * * SUBROUTINES TO PARSE FILE NAMES FOR SECURITY CODE * AND LABEL. * PNMRC NOP CLA STA ISECU INITIALIZE SECURITY CODE AND STA ICR LABEL JSB PNMRA GET 1ST OPTIONAL NAME PARAMETER JMP PNMRC,I NONE, EXIT STA ISECU SAVE SECUITY CODE JSB PNMRA GET 2ND OPTIONAL NAME PARAMETER JMP PNMRC,I NONE, EXIT STA ICR SAVE LABEL JMP PNMRC,I * * * PNMRA NOP JSB NXTC GET NEXT CHARACTER JMP PNMRA,I NO MORE CPA B72 COLON? JMP PNMR1 YES JSB BAKUP NO, BACKUP JMP PNMRA,I PNMR1 JSB NXTC GET NEXT CHARACTER JMP PNMRA,I NO MORE CPA B72 COLON? JMP PNMR2 YES, NO FIRST PARAMETER JSB BAKUP BACKUP LDA BLANK STA BUFA1+1 STA BUFA1+2 LDA BUFAD JSB MOVE. PUT ASCII CHARS IN BUFFER JSB PARSE PARSE INPUT DEF *+4 DEF BUFA1 DEF B6 DEF RBUF LDA RBUF+1 ISZ PNMRA JMP PNMRA,I * PNMR2 JSB BAKUP BACKUP CLA SET FOR NO PARAMETER ISZ PNMRA SET FOR NEXT PARAMETER JMP PNMRA,I * B6 OCT 6 * BUFAD DEF *+1 BUFA1 BSS 3 RBUF BSS 33 * SKP ***** * ** TRANSFER COMMAND PROCESSOR * ***** TR LDA CMDLU TRANSFER FILE OPEN? CPA B1 JSB CLFL6 YES, CLOSE IT LDA ASC01 - DEFAULT LU FOR TRANSFER FILE LDB TRANS TRANSFER FILE NAME ARRAY JSB FILE PARSE REQUEST JSB PNMRC GET OPTIONAL PARAMETERS JSB OPFL6 OPEN TRANSFER FILE CLA,INA STA CMDLU SET INPUT TO TRANSFER FILE JMP NXTCM GET NEXT COMMAND * ASC01 ASC 1,01 * * * * ***** * ** EXIT COMMAND PROCESSOR * ***** EXIT JMP ABRT1 * * * * ***** * ** OUTPUT COMMAND PROCESSOR * ***** OUTST LDA ASC04 - DEFAULT LU FOR OUTPUT FILE LDB OFILE OUTPUT FILE NAME ARRAY JSB FILE PARSE REQUEST JSB PNMRC GET OPTIONAL PARAMETERS JSB OPFL2 OPEN OUTPUT FILE CLA,INA STA OUTON JMP NXTCM GET NEXT COMMAND * ASC04 ASC 1,04 SKP ***** * ** RELOCATE ** SEARCH COMMAND PROCESSORS * ***** RELST CLA,RSS SET SEARCH FLAG OFF. SPC 1 SERST CLA,INA SET SEARCH FLAG ON. SPC 1 STA LIBFL STORE FLAG LDA OUTON OUTPUT OPEN? SZA,RSS JMP REL8 NO CLA STA RIC STA XNAM STA SERNM STA ADTRP TRAP ADDRESS LDA LDGEN GENERATOR OR LOADER? SZA,RSS JMP GENER GENERATOR LDA FRTRU FIRST TIME THRU? SZA JMP LOCST NO, DON'T SET CORE BOUNDS ISZ FRTRU SET FIRST TIME THRU FLAG LDA SCP GET SSGA, COMMON, PARTITION FLAG AND B7 SZA JMP REL1 REL2 STA FWAC MEM RES. (NO COMMON OR SSGA) STA LWAC REL1 SLA JMP REL3 LDA LOCC SZA,RSS LDA FWAM MEM RES. (COMMON AND OR SSGA) REL4 STA LOCC LDA BPLOC SZA,RSS LDA FWABP JMP REL5 REL3 LDB B2 START LINKS AT 2 STB BPLOC STB FWABP LDB UDFE SET LWAM = 77777 STB LWAM CPA B1 PARTITION (NO COMMON OR SSGA) JMP REL6 YES LDA LWAC PARTITION (COMMON AND OR SSGA) INA JSB PAGE ADJUST PAGE STA FWAM JMP REL4 REL6 LDB $SSGA IS $SSGA IN LST? JSB SSTBL GO SEARCH JMP REL7 NO, ERROR EXIT LDA LST4,I GET VALUE OF $SSGA JSB PAGE ADJUST PAGE STA FWAM LDB LOCC SZB,RSS STA LOCC CLA JMP REL2 REL7 LDB SSGA ERROR, $SSGA UNDEF JMP ERREX GENER LDA LOCC HAS LOCC BEEN SET YET? SZA JMP LOCXX YES LDA FWAM NO--SET TO FWAM STA LOCC LOCXX LDA BPLOC HAS BPLOC BEEN SET YET? SZA NO JMP LOCST YES , BPLOC SET LDA FWABP ALSO SET BASE PAGE LDB LNKDR GET LINK DIRECTION FLAG CPB M1 SYSTEM OR USER LINKS? LDA LWABP SYSTEM LINKS REL5 STA BPLOC LOCST LDA ASC05 - DEFAULT LU FOR REL-SEARCH FILE LDB IFILE REL/SEARCH FILE NAME ARRAY JSB FILE PARSE REQUEST JSB PNMRC GET OPTIONAL PARAMETERS JSB OPFL3 OPEN REL/SEARCH FILE JSB NXTC GET NEXT NON-BLANK CHAR JMP LDRIN NO MORE CPA B50 LEFT PAREND? RSS YES JMP CMER NO--COMMAND ERROR LDA BLANK BLANK OUT XNAM STA XNAM+1 STA XNAM+2 LDA XNAMA JSB MOVE. * JSB NXTC GET NEXT NON BLANK CHAR JMP CMER NO MORE CPA B51 RIGHT PAREN? JMP LDRIN YES JMP CMER NO, ERROR * REL8 LDA OO CLB NO FMP ERROR JMP WERR1 OUTPUT NOT OPEN ERROR * OO ASC 1,OO * SSGA DEF *+2 $SSGA DEF *+2 OCT 13 ASC 6,$SSGA UNDEF * * * ASC05 ASC 1,05 * M1 DEC -1 SKP ***** * ** ECHO COMMAND PROCESSOR * ***** ECHO JSB ECHOO JMP NXTCM GET NEXT COMMAND * * ECHOO NOP LDA ASC06 - DEFAULT LU FOR ECHO FILE LDB ECHOS ECHO FILE NAME ARRAY JSB FILE PARSE REQUEST JSB PNMRC GET OPTIONAL PARAMETERS CLB,INB JSB CKEMP CHECK IF MAP OPENED SAME FILE JSB OPFL5 OPEN ECHO FILE STA ECHO1 CLEAR IF ECHO OFF LDB EMSAM FILE SHARED BETWEEN MAP AND ECHO? SZB JMP ECHOO,I YES, DON'T CLOSE ECHO FILE SZA ECHO ON? JMP ECHOO,I YES, EXIT STA ECFIL CLEAR ECHO FILE NAME JSB CLFL5 CLOSE ECHO FILE JMP ECHOO,I * ASC06 ASC 1,06 * * SUBROUTINE TO CHECK IF ECHO AND MAP ARE THE SAME FILE. * IF YES, USE FIRST DCB OPENED FOR WRITING. * * CKEMP NOP JSB ECMA1 CHECK IF ECHO AND MAP ARE SAME FILE LDA EMSAM =1 IF MAP FILE AND ECHO FILE SZA,RSS ARE TO SAME FILE AND MAP FILE'S STB EMSAM DCB IS USED. =-1 IF ECHO'S DCB IS SZB,RSS USED. =0 IF FILE NAMES NOT SAME. JMP CKEMP,I CLA,INA ISZ CKEMP SET TO NOT OPEN FILE JMP CKEMP,I * SKP * * * SUBROUTINE TO DETERMINE IF MAP AND ECHO ARE THE SAME FILE * * ECMA1 NOP LDA AL DETERMINE IF ECHO AND MAP CPA ECFIL RSS JMP ECMA2 ARE THE SAME FILE LDA AL+1 CPA ECFIL+1 RSS JMP ECMA2 LDA AL+2 CPA ECFIL+2 JMP ECMA3 SAME ECMA2 CLB JMP ECMA1,I ECMA3 STB MPECS =1 IF MAP, =-1 IF ECHO CONTROL LDA DCB4 CPB M1 LDA DCB5 JSB LOCFS CHECK IF CARTRIDGE OR DISK FILE CLB LDA JLU SZA DEVICE FILE? LDB MPECS NO JMP ECMA1,I * MPECS NOP SKP ***** * ** MAP COMMAND PROCESSOR * * LISTO--CORE MAP LISTING FLAG * BIT 0 GLOBAL VARIABLES * 1 MODULES * 2 LINKS ***** MAPST CLA STA LISTO MAP1 LDA MD5 LDB MTABL JSB SCAN JMP CMER NO MORE KEY WORDS STA B LDA LISTO CPB B1 MODULES? IOR B2 CPB B2 GLOBALS? IOR B1 CPB B3 LINKS? IOR B4 CPB B4 OFF? CLA RESET POINTER STA LISTO CPB B5 ON? JMP MAP2 YES JSB DELIM ADVANCE PAST DELIMITERS RSS JMP MAP1 MAP2 LDA LISTO ANY OPTION ON? SZA,RSS JMP NXTC1 NO, GET NEXT COMMAND LDA ASC06 - DEFAULT LU LDB LFILE MAP FILE NAME ARRAY JSB FILE PARSE REQUEST JSB PNMRC GET OPTIONAL PARAMETERS CCB JSB CKEMP JSB OPFL4 OPEN MAP FILE STA MAPON SET MAP ON LDA D15 LDB HEAD1+1 JSB MAPS LDA HEAD1 LDB HEAD2 JSB MAPS LDA HEAD1 LDB HEAD3 JSB MAPS LDA HEAD1 LDB HEAD4 JSB MAPS JMP NXTCM GET NEXT COMMAND NXTC1 LDA EMSAM MAP AND ECHO SAME FILE? SZA JMP NXTCM YES, GET NEXT COMMAND LDA MAPON MAP PREVIOUSLY ON? CPA B1 JSB CLFL4 YES, CLOSE MAP FILE CLA STA MAPON MAP OFF STA AL CLEAR MAP FILE NAME JMP NXTCM GET NEXT COMMAND SPC 1 HEAD1 DEC 63 # CHARS. IN EACH PRINT LINE. DEF *+1 ASC 8, PROGRAM MODULE HEAD2 DEF *+1 ASC 24, ENTRY LOW HIGH LOW HIGH ASC 8, CP LINKS HEAD3 DEF *+1 ASC 24, POINT MAIN MAIN BASE BASE ASC 8, LOW HIGH HEAD4 DEF *+1 ASC 24, ---------------------------------------------- ASC 8,--------------- * B5 OCT 5 MD5 DEC -5 SKP * * ***** * ** BOUNDS COMMAND PROCESSOR * ***** BNDST LDA MD6 LDB KTABL JSB SCAN JMP CMER NO MORE KEYWORDS ADA M1 ADA MEMRY COMPUTE ADDRESS STA NCHAR SAVE ADDRESS TEMPORARILY JSB NXTC GET NEXT NON BLANK CHAR JMP CMER CPA B75 EQUAL SIGN? RSS JMP CMER NO,ERROR JSB NSCAN GET OCTAL NUMBER JMP CMER NO MORE CHARS. OR NOT NUMERIC SSA IS IT POSITIVE OR ZERO? JMP BER1 NO. ISSUE ERROR AND IGNORE. STA NCHAR,I LEGAL ADDRESS, POST VALUE AND JSB DELIM JMP NXTCM JMP BNDST LOOK FOR NEW PARAMETERS SPC 1 BER1 LDB ILBND ISSUE "IL BND" ERROR JSB DIAG2 JMP NXTCM AND GET NEXT COMMAND * ILBND DEF *+1 DEC 6 ASC 3,IL BND * B75 OCT 75 SKP ***** * ** SET COMMAND PROCESSOR * ***** SETST CLA STA STMP LDA M2 LDB LTABL LOCC OR BPLOCC? JSB SCAN JMP SET01 NO, MUST BE SYM TAB ENTRY ADA RBTA YES, SAVE ADDRESS TO STA STMP PUT VALUE INTO JMP SET02 SET01 JSB BLINE BLANK OUT THE BUFFER LDA LBUFA THEN MOVE NAME TO BUF JSB MOVE. FOR LATER CHECKING SET02 CCA LDB TOTBL LOOK FOR "TO" JSB SCAN JMP CMER NOT FOUND, ERROR EXIT JSB NXTC GET NEXT CHARACTER JMP CMER NO MORE, ERROR EXIT JSB OCTAS DETERMINE IF ASCII OR OCTAL JMP SET05 ASCII JSB BAKUP BACKUP JSB NSCAN GET LINK VALUE JMP CMER SET06 STA SVAL SAVE VALUE LDB STMP IF SYM TAB ENTRY, SZB,RSS JMP SET03 THEN JUMP TO SET03 STA STMP,I ELSE SET VALUE INTO LOCC JMP NXTCM OR BPLOCC AND GET NEXT COMMAND SET05 JSB BAKUP BACKUP LDA NBUFA JSB MOVE. MOVE NAME TO BUFFER LDB NDEF GET CHARS "UN" CPB NBUF =? RSS JMP CMER NO, ERROR EXIT LDB NDEF+1 GET CHARS "DE" CPB NBUF+1 =? RSS JMP CMER NO, ERROR EXIT LDB NDEF+2 GET CHAR "F" XOR NBUF+2 AND UPCM SZA JMP CMER LDA UDFE JMP SET06 SET LINK VALUE TO UNDEF SET03 CLA SET FOR SET PROCESSOR JSB LNSET JMP NXTCM GET NEXT COMMAND * UPCM OCT 77400 * NDEF ASC 3,UNDEF SKP LNSET NOP STA LKOST 1=LINK, 0=SET PROCESSOR LDB LBUFA LOOK FOR SYMBOL IN JSB SSTBL SYMBOL TABLE JMP SET04 NOT FOUND LDA LST4 LDB LKOST LINK OR SET? SZB LDA LST5 LINK LDB SVAL GET LINK ADDRESS OR VALUE STB 0,I SAVE IN LST JMP NXTCM AND GET NEXT COMMAND SET04 LDA LSTUL CHECK CMA FOR ADA FUT4 SYMBOL SSA TABLE JMP LER5 OVERFLOW LDA SVAL GET LINK ADDRESS OR VALUE LDB LKOST LINK OR SET? SZB JMP SET07 LINK STA LST4,I SET LINK VALUE STB LST5,I CLEAR LINK ADDRESS SET08 ISZ LST,I BUMP ENTRIES COUNTER LDB LBUFA LDA B,I STA LST1,I STORE FIRST 2 CHARS INB LDA B,I STA LST2,I STORE SECOND TWO CHARS INB LDA B,I AND UPCM ZERO OUT EXT ID NUMBER STA LST3,I AND STORE FIFTH CHAR JMP LNSET,I SET07 STA LST5,I SET LINK ADDRESS LDA UDFE SET LINK VALUE TO UNDEF STA LST4,I JMP SET08 * LKOST NOP 1 = LINK, 0 = SET STMP NOP SVAL NOP * SKP ***** * ** LINKS IN ** COMMAND PROCESSOR * ***** LINST LDA M2 LDB LITBL JSB SCAN LOOK FOR BASE OR CURRENT JMP CMER ADA M1 STA LINTP 0 = BASE, 1 = CURRENT JMP NXTCM GET NEXT COMMAND ***** * ** LINKS START AT ** COMMAND PROCESSOR * ***** LNKST CCA LDB STABL JSB SCAN LOOK FOR "START" JMP CMER CCA LDB ATTBL JSB SCAN LOOK FOR "AT" JMP CMER JSB NSCAN GET LINK ADDRESS JMP CMER STA SVAL AND SAVE IT JSB NXTC GET NEXT NON-BLANK CHAR JMP CMER CPA B54 IS IT A COMMA? RSS YES, GOOD JMP CMER NO, ERROR JSB NXTC GET NEXT CHARACTER JMP CMER NO MORE, ERROR EXIT JSB OCTAS DETERMINE IF OCTAL OR ASCII JMP ASSCI ASCII JSB BAKUP BACKUP JSB NSCAN GET LINK VALUE JMP CMER LDB SVAL GET LINK ADDRESS ADB BPAGA STA 1,I STORE VALUE IN LINK TABLE JMP NXTCM GET NEXT COMMAND ASSCI JSB BAKUP BACKUP JSB BLINE BLANK BUFFER LDA LBUFA JSB MOVE. MOVE NAME TO BUFFER CLA,INA SET FOR LINKS START AT JSB LNSET COMMAND PROCESSOR JMP NXTCM GET NEXT COMMAND SKP END RTML2