//VRS: 12-01-2021 MAINDEC-08-DHKMA-D-L RECONSTRUCTION STARTED //VRS: 12-06-2021 MAINDEC-08-DHKMA-D-L RECONSTRUCTION COMPLETED /PDP-8E EXTENDED MEMORY DATA AND CHECKERBOARD TEST / /MAINDEC-08-DHKMA-D-L / /COPYRIGHT (C) 1972, 1975, 1976 DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. 01754 /PROGRAMMER, VERNON FREY / / /SR00=1 HALT AFTER ERROR /SR01=1 INHIBIT ERROR TYPEOUT /SR02=1 BELL ON ERROR (USEFUL FOR MAINTENANCE) /SR03=1 INHIBIT PROGRAM RELOCATION /SR04=1 CHANGE FIELD LIMITS /SR05=1 HALT AFTER CURRENT TEST / / /PROGRAM STARTING ADDRESS /0200 / / /V-CRD / / /DEFINE NPAGE /< JMP I (.+0200&7600> / /PDP-8E IOT COMMANDS AND MICRO INSTRUCTIONS / /EXPANDED MODE COMMANDS USED IN THIS TEST CUF=6204 SUF=6274 KT8A=1 LXM= 6200 /LOAD EXPANDED MODE REGISTER REM= 6230 LDSR= 6260 LRR= 6240 RRR= 6250 CDI=6203 /CHANGE TO DF & IF 0 SPO=6107 /SKIP ON PARITY OPTION SMP=6101 /SKIP IF NO PARITY ERROR CMP=6104 /CLEAR PARITY ERROR FLAG GTF=6004 /GET INTERRUPT FLAGS RTF=6005 /RESTORE INTERRUPT FLAGS ACL=7701 /LOAD MQ INTO AC BSW=7002 /SWAP BYTES IN AC MQL=7421 /LOAD MQ FROM AC THEN CLR AC SWP=7521 /SWAP AC AND MQ SKON=6000 /SKIP IF INTERRUPT ON, & TURN OFF CAF=6007 /CLEAR ALL FLAGS *0 0304 /INTERRUPT ADDRESS DCA SAC /SAVE AC ACL DCA SMQ /SAVE MQ JMP INTROU IAPTER, APTER /APT/ IAPTOK, APTOK /APT/ *20 PSR, 7 /APT/ HCW1, 4000 /APT/ HCW2, 0 /APT/ INMODE, 0 / /PAGE 0 CONSTANTS AND POINTERS / BANK, 0 EMMFLG, 0 SR00, 4000 /HALT AFTER ERROR SR01, 2000 /INHIBIT ERROR TYPEOUT SR02, 1000 /BELL ON ERROR SR03, 400 /INHIBIT PROGRAM RELOCATION SR04, 200 /CHANGE FIELD LIMITS SR05, 100 /HALT AFTER CURRENT TEST SR56, 70 /STARTING FIELD (0-7) SR911, 7 /ENDING FIELD (0-7) CS, 0 /COMPLEMENT STATUS /0000=NC (NO COMPLEMENT) /BIT 1=1C (ONE COMPLEMENT) /BIT 2=2C (TWO COMPLEMENTS) TS, 0 /TEST STATUS /0000=NO TEST /BIT 0 = ALL ZEROS TEST /BIT 1 = ALL ONES TEST /BIT 2 = 0000-7777 WCP TEST /BIT 3 = 7777-0000 WCP TEST /BIT 4 = 2525-5252 WCP TEST /BIT 5 = 5252-2525 WCP TEST /BIT 6 = MARCH PATTERN FS, 0 /FIELD STATUS BANK 0 FS1, 0 /FIELD STATUS BANK 1 FS2, 0 /FIELD STATUS BANK 2 FS3, 0 /FIELD STATUS BANK 3 /BITS 0-7 COINCIDE WITH FIELDS /0-7. FOR EACH FIELD NO IN /THE SYSTEM THE EQUIVALENT BIT /IS SET. RS, 0 /RELOCATION STATUS BANK 0 RS1, 0 /RELOCATION STATUS BANK 1 RS2, 0 /RELOCATION STATUS BANK 2 RS3, 0 /RELOCATION STATUS BANK 3 /BITS 0-7 COINCIDE WITH FIELDS /0-7. FS IS XFERRED INTO RS. /EACH FIELD THAT FAILS SETS THE /EQUIVALENT BUT SO THAT PROGRAM /WILL NOT RELOCATE TO A FAILING FIELD. CRELD, 0 /0 = INHIBIT PROGRAM RELOCATION PROFLD, 0 /PROGRAM IN FIELD 00X0 TSTFLD, 0 /TESTING FIELD 00X0 COUNT, 0 /MOVE ERROR COUNTER MOVE, 0 /MOVE ADDRESS COUNTER HEAD1, 0 /7777 MEANS TYPEOUT ERROR HEADING TEMP, 0 /TEMP STORAGE LOCATION TSTAD, 0 /TEST ADDRESS COUNTER FCNT, 0 /COUNT # OF FIELDS PRESENT RELCNT, 0 /END OF PASS COUNTER STARTF, 0 /STARTING FIELD 00X0 ENDF, 0 /ENDING FIELD 00X0 INSAME, 0 /PROGRAM IN SELECTED FIELD LEGAL0, 0 /LEGAL FIELD SELECTION CONTROL A, 0 /A REG TO WRITE/READ B, 0 /B REG TO WRITE/READ P2, 0 /CONTROLS 2 PAGES W4, 0 /CONTROLS 4 WORDS GDATA, 0 /GOOD DATA = DATA WRITTEN BDATA, 0 /BAD DATA = DATA READ SAC, 0 /SAVE AC (INT) SMQ, 0 /SAVE MQ (INT) NOTTY, 0 /PROGRAM FLAG FOR NO TELETYPE TO ABORT PRINTOUTS NUMFLD, 0 /NUMBER OF FIELDS BEING TESTED. FIVE, 0 /THIS IS NOW 15 MINUTE COUNTER MINS, 6570 ENDHLT=JMS I . XENDHL /END OF TEST LAS PRINT=JMS I . XPRINT GETSR=JMS I . XGETSR C8CAL=JMS I . XC8CAL SETFS=JMS I . XSETFS SETRS=JMS I . XSETRS RACA=JMS I . XRACA RACB=JMS I . XRACB *200 JMP START+1 /APT/200 = START ADDRESS. JMP START /STARTING ADDRESS IF NO TTY AVAILABLE JMS DFEIF /202 = RESTART ADDRESS SKP JMS TITLE /TYPEOUT PROG TITLE PATA, IOF TAD (7200 LXM /LOAD EXPANDED MODE REGISTER CLA /MAKE SURE AC CLEAR REM SPA CLA /SKIP IF KT8A NOT ENABLED CLA CLL CMA DCA EMMFLG /SET KT8A ACTIVE JMS PNTOPT JMS SETSW /SETUP SR DCA CS DCA TS DCA FS DCA RS STA DCA CRELD /CLEAR INH RELO DCA TSTAD /CLEAR TEST ADDRESS COUNTER TAD MINS /SET UP COUNTER DCA FIVE STA DCA HEAD1 /RESET ERROR HEADING JMS FSSET /SET FIELD STATUS & TYPE SELECTION JMS APTFL STA /AC=-1 TAD FCNT /-1 TO FIELDS IN SYSTEM DCA FCNT JMS LEGAL /CHECK FOR LEGAL FIELD SELECTION TAD NUMFLD /SET UP PASS COUNTER CIA /NEGATE IT DCA RELCNT /SAVE IT. TAD CRELD SNA CLA JMP PATM /NO RELOCATE & TEST ONLY 1 FIELD JMS CSR03 JMP PATO /RELOCATION PROGRAM JMP PATN /INHIBIT PROGRAM RELOCATION / /MAKE DF = IF / DFEIF, 0 IOF CLA CLL RIF TAD [6201 DCA .+1 CDF 0 JMP I DFEIF / /NO PROGRAM RELOCATION AND TEST ONLY 1 FIELD / PATM, RIF DCA PROFLD JMS PNOREL /TYPEOUT NO RELOCATION PATM0, JMS TEST ENDHLT /TEST FOR END OF PASS INFORMATION JMP PATA /YES JMP PATM0 /NO / /NO PROGRAM RELOCATION BUT TEST ALL SELECTED FIELDS / PATN, RIF DCA PROFLD JMS PNOREL /TYPEOUT NO RELOCATION PATN0, JMS TEST ENDHLT /TEST FOR END OF PASS INFORMATION JMP PATA /YES JMS CSR03 /NO JMP PATO /RELOCATE PROGRAM JMP PATN0 /CONTINUE / /CHECK ALL SELECTED FIELDS FROM EACH SELECTED FIELD / PATO, RIF DCA PROFLD TAD FS DCA RS /SET UP FIELD STATUS TAD FS1 DCA RS1 TAD FS2 DCA RS2 TAD FS3 DCA RS3 JMS PREL PATO0, JMS TEST ENDHLT /TEST FOR END OF PASS INFORMATION JMP PATA /YES JMS CSR03 /NO SKP JMP PATN /INHIBIT PROGRAM RELOCATION JMS SETREL /GO TEST RELOCATION JMP PATO0 /CONTINUE START, 5334 DCA NOTTY /SAVE TTY FLAG STATUS JMS APTIZ /GO SET UP MEMORY SIZE FROM PSR OR SR TAD NOTTY /GET TTY FLAG SNA CLA /TTY AVAILABLE JMP PATA-1 /YES GO PRINT TITLE IOF /NO, TURN THE INTERRUPT OFF JMP PATA /GO START WITHOUT TITLE TAD HCW2 /GET HARDWARE WORD 2 AND (7377 /MASK OUT CL8 BIT DCA HCW2 CLA CMA JMP START+1 /GO SET FLAG FOR NO TELETYPE / /THIS ROUTINE DETERMINES IF LAST AFTER TEST SELECTED /AND/OR CHANGE FIELD LIMITS SELECTED /IF FIELD LIMITS ARE TO CHANGE RETURN CALL+1. IF THEY ARE NOT TO /CHANGE RETURN CALL+2. / XENDHL, 0 GETSR /GET CURRENT SWITCH VALUE AND SR05 /HALT AFTER TEST SNA CLA /SKIP IF HALT AFTER TEST SELECTED JMP .+3 /DON'T HALT C8CAL /TEST FOR ACTIVE CONSOLE HLT /NON ACTIVE CONSOLE, JUST HALT GETSR /GET SWITCHES AGAIN AND SR04 /ISOLATE CHANGE FIELD LIMITS SWITCH SNA CLA /SKIP IF FIELD LIMITS ARE TO CHANGE ISZ XENDHL JMP I XENDHL / PAGE /DETERMINE WHICH RELOCATION ROUTINE TO USE. / SETREL, 0 TAD EMMFLG SZA CLA /SKIP IF EXPANDED MODE NOT ENABLED JMP KT8REL / /SETUP TO RELOCATE THE PROGRAM / /THIS ROUTINE IS USED ONLY IF KM8E OR KM8A FUNCTIONS ARE TO BE TESTED / KM8REL, CLA /MAKE SURE AC IS CLEAR RIF /GET INSTRUCTION FIELD OF PROGRAM DCA PROFLD /SAVE THE VALUE TAD PROFLD CLL RTR RAR /MOVE INTO PROPER POSITION DCA FLDCNT STA TAD FLDCNT AND SR911 DCA FLDCNT TAD FLDCNT TAD (TRSTAB /ESTABLISH POINTER OF STATUS /ROUTINE DCA TEMP /SAVE THE POINTER TAD I TEMP /GET ROUTINE TO EXECUTE DCA TRS /AND SAVE IT JMS I TRS /GO TEST STATUS JMP KM8REL+7 TAD FLDCNT /SET UP FIELD TO DO AND SR911 /ISOLATE BITS 9-11 CLL RTL RAL /SET UP FOR INSTRUCTION JMP CSAME /GO TEST FOR SAME FIELD / JMP KM8REL+7 / / /THIS ROUTINE WILL TEST THE KT8A FUNCTIONS. / KT8REL, CLA /MAKE SURE AC IS CLEAR RIF /GET PROGRAM FIELD DCA PROFLD /AND SAVE IT TAD PROFLD RACA DCA FLDCNT /SAVE THE BINARY COUNT VALUE OF FIELD STA TAD FLDCNT AND (37 DCA FLDCNT TAD FLDCNT /ADD IN OFFSET AND SR911 TAD (TRSTAB /GET STARTING ADDRESS OF ROUTINE POINTER DCA TEMP /SAVE THE POINTER ADDRESS TAD I TEMP /GET ACTUAL ROUTINE ADDRESS DCA TRS /SAVE THE ROUTINE ADDRESS JMS I TRS /GO TEST FOR PROPER FIELD SELECTION JMP KT8REL+6 TAD FLDCNT /DECREMENT FIELD VALUE AND (37 /ISOLATE 5 BITS RACB /REARRANGE INTO PROPER FORMAT JMP CSAME /GO TEST FOR VALID FIELD SELECTION JMP KT8REL+6 / CSAME, DCA TSTFLD /SAVE FIELD VALUE TO TEST JMS SAME /PROFLD=TSTFLD JMP I SETREL /YES JMS RELO /GO RELOCATE PROGRAM RIF /GET PROGRAM LOCATION DCA PROFLD JMP I SETREL /EXIT RELOCATION ROUTINE / TRS, 0 /STORAGE FOR TEST STATUS ROUTINE TRSTAB, TRS0 TRS1 TRS2 TRS3 TRS4 TRS5 TRS6 TRS7 / / /TEST COMPLEMENT STATUS /RETURN IF NC, RETURN+1 IF 1C, RETURN+2 IF 2C / TCS, 0 CLA TAD CS SNA JMP I TCS /NC ISZ TCS CLL RTL SZL JMP I TCS /1C ISZ TCS SPA CLA JMP I TCS /2C APTEOB, NOP /APT HLT /ERRONEOUS STATUS BITS SET JMP .-1 / /SET UP PROPER FIELD STATUS BITS / XSETFS, 0 TAD FLDCNT /GET FIELD 10 CD CLL RTR RAR /MOVE BAND SELECT INTO POSITION AND (3 TAD (FS /ESTABLISH POINTER TO ADDRESS OF STATUS DCA TEMP /AND SAVE THE POINTER JMP I XSETFS /AND EXIT / /ESTABLISH RELOCATION STATUS POINTER / XSETRS, 0 TAD FLDCNT /GET FIELD 10 CD CLL RTR RAR AND (3 TAD (FS DCA TEMP /SAVE THE POINTER JMP I XSETRS / / PAGE / /TEST PATTERN CONTROL / TEST, 0 JMS PAR CLA DCA A DCA B JMS STS0 /ALL ZEROS TEST JMS TEST0 STA DCA A STA DCA B JMS STS1 /ALL ONES TEST JMS TEST0 STA DCA B DCA A JMS STS2 /0000-7777 WCP TEST JMS TEST0 STA DCA A DCA B JMS STS3 /7777-0000 WCP TEST JMS TEST0 CLA TAD [2525 DCA A TAD [5252 DCA B JMS STS4 /2525-5252 TEST JMS TEST0 CLA TAD [5252 DCA A TAD [2525 DCA B JMS STS5 /2525-5252 TEST JMS TEST0 CLA DCA TS /CLEAR TEST STATUS IOF JMS MOSTST /GO PERFORM MARCH PATTERN JMP I TEST / /TEST ALL FIELDS SELECTED FOR TEST / KTEST, JMP I TEST0 TEST0, 0 DCA FLDCNT /CLEAR FIELD INDICATOR DCA BANK /CLEAR BANK VALUE JMS NUFLD /GO TEST FOR VALID SELECTION JMP T0UPD /NOT A VALID FIELD. UPDATE AND TRY AGAIN JMS WRFLD /GO WRITE SELECTED FIELD T0UPD, TAD FLDCNT CIA /COMPLEMENT CURRENT VALUE TAD FCNT /SEE IF AT MAXIMUM FOUND SNA CLA /SKIP IF NOT AT MAX AVAILABLE JMP TEST1 ISZ FLDCNT /UPDATE FIELD TO DO JMP TEST0+3 /GO BACK AND TRY NEXT FIELD / / / TEST1, DCA FLDCNT /CLEAR FIELD INDICATOR DCA BANK /CLEAR BANK INDICATOR JMS NUFLD JMP T1UPD JMS RDFLD /READ PATTERN WRITTEN TAD COUNT /TEST FOR ANY READ ERRORS SZA CLA JMS SETERR /GO SET UP PROPER ERROR ROUTINE T1UPD, TAD FLDCNT /SET UP TO TEST FOR MAX FIELDS CIA TAD FCNT /GET NUMBER OF FIELDS FOUND SNA CLA /SKIP IF NOT AT MAX JMP TEST8 /GO ON TO NEXT TEST ISZ FLDCNT JMP TEST1+2 /GO BACK AND DO NEXT VALUE / / / / / / /THIS ROUTINE DETERMINES IF A VALID FIELD IS SELECTED. /A VALID SELECTION RETURNS+2 /NON-VALID SELECTION RETURNS+1 / NUFLD, 0 TAD FLDCNT /GET FIELD TO TEST AND SR911 /ISOLATE FIELD TAD (TFSTAB /GET TO POINTER OF FIELD STATUS DCA TFS /SAVE THE VALUE TAD I TFS /GET ROUTINE TO EXECUTE DCA TFS /AND SAVE IT JMS I TFS /GO TEST FOR VALID FIELD SELECTION JMP I NUFLD /NOT A VALID FIELD TAD EMMFLG SNA CLA /SKIP IF EXPANDED MODE ENABLED JMP NOEMM TAD FLDCNT RACB /REARRANGE AC INTO PROPER FORMAT SETFLD, DCA TSTFLD JMS SAME /PROFLD=TSTFLD SKP ISZ NUFLD JMP I NUFLD /GOT A VALID FIELD / NOEMM, TAD FLDCNT AND SR911 /ISOLATE FIELD TO DO CLL RTL RAL /MOVE INTO BITS 6-8 JMP SETFLD /GO TEST FOR FIELD SELECTION / TFS, 0 / TFSTAB, TFS0 TFS1 TFS2 TFS3 TFS4 TFS5 TFS6 TFS7 / / PAGE / / TEST8, GETSR AND SR04 /CHANGE FIELD LIMITS? SZA CLA JMP PATA /YES JMP KTEST / /WRITE A & B PATTERN INTO SELECTED FIELD / WRFLD, 0 TAD [-40 DCA P2 /WRITE 2 PAGES JMS WRA /WRITE 4 WORDS FROM A REG JMS WRB /WRITE 4 WORDS FROM B REG ISZ P2 JMP .-3 TAD [-40 DCA P2 JMS WRB JMS WRA ISZ P2 JMP .-3 TAD TSTAD SZA CLA JMP WRFLD+1 ISZ FIVE /SEE IF READY TO PRINT 15 YET JMP I WRFLD TAD NOTTY /GET THE TELETYPE FLAG SPA CLA /IS THERE ONE AVAILABLE JMP I WRFLD /NO-ABORT THE FIVE MINUTE TYPEOUT TAD MINS /RESET FIFTEEN MINUTE COUNTER DCA FIVE JMS MES 4543 6165 /TYPE A 15 0000 JMP I WRFLD /END OF MEMORY REACHED WRA, 0 TAD [-4 DCA W4 //WRITE 4 WORDS FROM A REG TAD TSTFLD TAD [6201 DCA .+1 CDF 0 /TEST DF WRA1, TAD A DCA I TSTAD ISZ TSTAD NOP ISZ W4 JMP WRA1 TAD PROFLD /4 WORDS ARE WRITTEN TAD [6201 DCA .+1 CDF 0 /PROGRAM DF JMP I WRA WRB, 0 TAD [-4 DCA W4 /WRITE 4 WORDS FROM B REG TAD TSTFLD TAD [6201 DCA .+1 CDF 0 /TEST DF WRB1, TAD B DCA I TSTAD ISZ TSTAD NOP ISZ W4 JMP WRB1 TAD PROFLD /4 WORDS ARE WRITTEN TAD [6201 DCA .+1 CDF 0 /PROGRAM DF JMP I WRB / /TYPEOUT FIELDS SELECTED FOR TESTING / TOSEL, 0 CLA CLL CMA RTL /AC=-3 DCA BANK /SAVE BANK VALUE TAD BANK CIA /MAKE BANK VALUE POSITIVE CLL RTL RAL /SHIFT OVER FOR OTHER ROUTINES DCA FLDCNT TAD BANK CIA TAD [FS /ESTABLISH STATUS CONTROL WORD DCA TEMP TAD I TEMP /GET ADDRESS OF CONTROL WORD TAD [-7760 /SEE IF THERE IS A FIELD TO DO SNA CLA /IS THIS BANK TO BE TESTED JMP TOSEL1 /UPDATE BANK SELECT VALUE TAD BANK CIA TAD [260 /MAKE ASCII VALUE FOR BANK NUMBER JMS TYPE /TYPE IT TAD (": JMS TYPE /PRINT A ":" JMS FLDSEL TAD (240 JMS TYPE TOSEL1, ISZ BANK /UPDATE BANK VALUE NOP TAD BANK SMA SZA CLA /SKIP IF LAST BANK NOT DONE JMP I TOSEL /EXIT ROUTINE JMP TOSEL+3 /GO BACK AND TRY AGAIN / PAGE / /READ & TEST A & B REG PATTERN FROM SELECTED FIELD / RDFLD, 0 JMS I IAPTOK /APT/ CLA TAD TSTFLD TAD [6201 DCA RDA2 TAD RDA2 DCA RDB2 RDA2, CDF 0 /TEST DF TAD [-100 DCA P2 /READ AND TEST 2 PAGES RDFLDA, TAD [-4 DCA W4 /READ AND TEST 4 WORDS RDAC, DCA CS /NO COMPLEMENT JMS READ CIA TAD A SZA JMS ERRA /A REG ERROR - NC JMS READ CMA DCA I TSTAD JMS SCS1 /1 COMPLEMENT JMS READ IAC TAD A SZA JMS ERRA1 JMS READ CMA DCA I TSTAD JMS SCS2 /2 COMPLEMENTS JMS READ CIA TAD A SZA JMS ERRA /A REG ERROR - 2C ISZ TSTAD NOP ISZ W4 JMP RDAC /COMPLETE 4 WORDS ISZ P2 JMP RDFLDB /COMPLETE 2 PAGES TAD PROFLD TAD [6201 DCA .+1 CDF 0 /PROGRAM DF TAD TSTAD SZA CLA JMP RDA2 /READ ANOTHER 2 PAGES JMP I RDFLD /END OF MEMORY REACHED RDB2, CDF 0 /TEST DF TAD [-100 DCA P2 /READ AND TEST 2 PAGES RDFLDB, TAD [-4 DCA W4 /READ AND TEST 4 WORDS RDBC, DCA CS /NO COMPLEMENT JMS READ CIA TAD B SZA JMS ERRB /B REG ERROR - NC JMS READ CMA DCA I TSTAD JMS SCS1 /1 COMPLEMENT JMS READ IAC TAD B SZA JMS ERRB1 /B REG ERROR - 1C JMS READ CMA DCA I TSTAD JMS SCS2 /2 COMPLEMENTS JMS READ CIA TAD B SZA JMS ERRB /B REG ERROR - 2C ISZ TSTAD NOP ISZ W4 /COMPLETE 4 WORDS JMP RDBC ISZ P2 JMP RDFLDA /COMPLETE CURRENT 2 PAGES JMP RDB2 / /READ TEST ADDRESS SUBROUTINE / READ, 0 TAD I TSTAD TAD I TSTAD TAD I TSTAD TAD I TSTAD TAD I TSTAD TAD I TSTAD TAD I TSTAD TAD I TSTAD TAD I TSTAD TAD I TSTAD TAD I TSTAD CLA TAD I TSTAD JMP I READ / / /KEYBOARD INTERRUPT OCCURRED / KBINT, 0 TAD NOTTY /GET THE TELETYPE FLAG SMA CLA /IS THERE A TELETYPE AVAILABLE JMP .+3 /YES, GO PRINT THE ERROR HLT /NO, HLT - INTERRUPTED FROM THE KEYBOARD JMP KBINTC /GO CLEAR FLAG AND CONTINUE JMS MES TEXT "%#INT FROM KB" KBINTC, KCC STA DCA HEAD1 JMP I KBINT PAGE ERRA, 0 CIA TAD A DCA BDATA /DATA READ TAD A JMS GERRC /GO TO ERRC SETUP ROUTINE TAD A DCA I TSTAD /REWRITE BAD LOCATION JMP I ERRA ERRA1, 0 DCA TEMP TAD A CMA TAD TEMP DCA BDATA /DATA READ TAD A CMA JMS GERRC /GO TO ERRC SETUP ROUTINE TAD A CMA DCA I TSTAD /REWRITE BAD LOCATION JMP I ERRA1 ERRB, 0 CIA TAD B DCA BDATA /DATA READ TAD B JMS GERRC /GO TO ERRC SETUP ROUTINE TAD B DCA I TSTAD /REWRITE BAD LOCATION JMP I ERRB ERRB1, 0 DCA TEMP TAD B CMA TAD TEMP DCA BDATA /DATA READ TAD B CMA JMS GERRC /GO TO ERRC SETUP ROUTINE TAD B CMA DCA I TSTAD JMP I ERRB1 GERRC, 0 /GO TO ERRC DCA GDATA /DATA WRITTEN TAD PROFLD TAD [6201 DCA .+1 CDF 0 /PROGRAM DF JMS ERRC /DATA OR CHKBD ERROR TAD TSTFLD TAD [6201 DCA .+1 CDF 0 /TEST DF JMP I GERRC / /CHECK FOR LEGAL FIELD SELECTION / LEGAL, 0 CLA CLL DCA INSAME /SAME FIELD CONTROL CLL CLA CMA RAL /AC=-2 DCA LEGAL0 /LEGAL SELECTION CONTROL DCA TSTFLD TAD EMMFLG /GET KT8A INDICATOR SNA CLA /SKIP IF ACTIVE JMP NOEMB DCA FLDCNT /START WITH FIELD 0 JMS LGLFLD JMS LEGALA /VALID FIELD SELECTION ISZ FLDCNT /UPDATE PATTERN TAD FLDCNT RACB /REARRANGE INTO PROPER CONFIGURATION DCA TSTFLD /AND STORE THE NEW VALUE TAD FLDCNT AND (37 /ISOLATE FIELD SZA CLA /SKIP IF RETURNED TO ZERO JMP .-11 /GO BACK AND TRY AGAIN ILEGAL, ISZ LEGAL0 JMP NOFLD /NO FIELD SELECTION TAD INSAME SZA CLA JMP PINF /PROG IN SELECTED FIELD DCA CRELD /ONLY 1 FIELD SELECTED JMP I LEGAL / /KM8 FUNCTIONS / NOEMB, DCA FLDCNT /START WITH FIELD 0 JMS LGLFLD /GO TEST FOR VALID SELECTION JMS LEGALA ISZ FLDCNT /UPDATE FIELD NUMBER TAD FLDCNT /GET BACK FIELD SELECTION AND SR911 /ISOLATE FIELD CLL RTL RAL /MOVE INTO POSITION DCA TSTFLD /SAVE NEW VALUE TAD TSTFLD SZA CLA /GONE BACK TO ZERO? JMP NOEMB+1 /GO BACK AND TRY AGAIN JMP ILEGAL /INVALID SELECTIONS OR NOT ENOUGH / / / /LEGAL FIELD SELECTION SUBROUTINE / LEGALA, 0 ISZ LEGAL0 /FIELD SELECTED SKP JMP I LEGAL /AT LEAST 2 FIELDS SELECTED RIF DCA PROFLD JMS SAME /PROGRAM IN SELECTED FIELD? ISZ INSAME /YES JMP I LEGALA /SET UP FOR TESTING FIELD STATUS FOR LEGAL SELECTION / LGLFLD, 0 CLA /MAKE SURE AC IS CLEAR TAD FLDCNT /GET FIELD TO TEST AND SR911 /ISOLATE FIELDS TAD (TFSTAB DCA TEMP /SAVE ROUTINE POINTER TAD I TEMP /GET POINTER DCA TEMP JMS I TEMP /EXECUTE FS ROUTINE ISZ LGLFLD /INVALID FIELD JMP I LGLFLD / / PAGE / /RETURN IF PROGRAM IN SELECTED FIELD /RETURN+1 IF PROGRAM NOT IN SELECTED FIELD / SAME, 0 TAD PROFLD CIA TAD TSTFLD SZA CLA ISZ SAME /PROG NOT IN SELECTED FIELD JMP I SAME / /RETURN IF SR03=0. RETURN+1 IF SR03=1 / CSR03, 0 GETSR AND SR03 SZA CLA ISZ CSR03 /INHIBIT PROGRAM RELOCATION JMP I CSR03 / /SETUP FIELD STATUS (FS) /INC FIELDS NOT PRESENT OR NOT SELECTED /STORE NUMBER OF FIELDS PRESENT IN FCNT / FSSET, 0 CLA DCA FCNT /CLEAR FIELD COUNT 3077 TAD NOTTY SMA CLA /SKIP IF NO TTY AVAILABLE JMP .+10 TAD HCW1 SPA CLA /SKIP IF NO HARDWARE SWITCHES JMP .+5 TAD PSR /GET PSEUDO SWITCH REGISTER AND (37 DCA ENDF /SET UP LAST FIELD TO DO JMP .+15 /BYPASS SETUP C8CAL HLT GETSR /GET NEW SWITCH VALUE AND (37 /ISOLATE FIELD MIN DCA ENDF /SAVE THE STARTINNG FIELD GETSR /GET NEW SWITCH VALUE BSW AND (37 DCA STARTF /SAVE END FIELD LIMIT JMS SETPAR /PRINT "SELECT TEST PARAMETER" C8CAL HLT / /NOW DETERMINE WHICH FIELDS TO TEST / DCA FS DCA FS1 DCA FS2 DCA FS3 TAD EMMFLG SNA CLA /TEST TO SEE IF EXPANDED MODE FEATURES JMP BANK0 /NOT ENABLED. TEST AS THOUGH A KM8E/A DCA FLDCNT TAD FLDCNT /GET BACK VALUE TO DO RACB /REARRANGE INTO PROPER FORMAT TAD [6201 DCA .+1 HLT /CHANGED TO DATA FIELD TO TEST JMS CFP /GO TEST FIELD FOR PRESENCE JMS SPFLD /SET APPROPRIATE BIT ISZ FLDCNT /UPDATE PATTERN TAD FLDCNT AND (37 /GONE BACK TO ZERO YET SZA CLA /SKIP IF BACK TO FIELD ZERO JMP .-13 JMP FSEND BANK0, TAD (7760 DCA FS1 TAD (7760 DCA FS2 TAD (7760 DCA FS3 BANK0A, CLA LRR /CLEAR RELOCATION RRR DCA FLDCNT JMS TESBNK /TEST BANK 0 FSEND, TAD NOTTY /GET TTY FLAG SPA CLA /IS TTY AVAILABLE JMP I FSSET /NO. ABORT TTY MESSAGE AND RETURN JMS PNTFLD JMP I FSSET /SET UP ROUTINE TO SET STATUS BIT / SPFLD, 0 TAD FLDCNT AND SR911 /ISOLATE FIELD TAD (SFSTAB DCA TEMP /SAVE POINTER TAD I TEMP DCA TEMP /SAVE THE POINTER JMS I TEMP /GO PERFORM SET FUNCTION NOP JMP I SPFLD / / /PRINT SELECTED OPTION FOR TESTING WHETHER KM8 OR KT8 / PNTOPT, 0 TAD NOTTY /TEST FOR NOTTY TO USE SZA CLA JMP I PNTOPT /NO TTY AVAILABLE TAD EMMFLG SZA CLA /SKIP IF KT NOT ENABLED TAD (7 /"T-"M TAD (1315 /"KM" DCA OPT /SAVE OPTION VALUE JMS MES 4543 /CRLF OPT, 0 TEXT "8 SELECTED FOR TESTING " JMP I PNTOPT / PAGE / /RETURN+1 IF FIELD PRESENT IN SYSTEM & IS SELECTED / CFP, 0 CLA CLL RIF TAD [6201 DCA CFP0 TAD [-1 DCA I CHECK TAD I CHECK SZA CLA /SKIP IF NOT PRESENT JMP .+3 CFP0, CDF 0 /PROGRAM DF JMP I CFP ISZ FCNT /FIELD IS PRESENT RDF /STARTF=ENDF DCA CFPTMP /SAVE TEST FIELD TAD EMMFLG SNA CLA /SKIP IF EXPANDED MODE ACTIVE JMP .+5 TAD CFPTMP /GET BACK SELECTED FIELD RACA /CHANGE INTO BINARY COUNT DCA CFPTMP /RESTORE IT FOR TESTING JMP .+5 TAD CFPTMP /GET BACK FIELD VALUE CLL RTR RAR /CHANGE TO BINARY COUNT NUMBER DCA CFPTMP /SAVE NUMBER FOR TESTING TAD ENDF CIA TAD STARTF SZA JMP CFP2 TAD CFPTMP /GET BACK NUMBER CIA TAD STARTF SNA CLA CFP1, ISZ CFP /FIELD IS PRESENT AND SELECTED ISZ NUMFLD /FIELD PRESENT AND SELECTED JMP CFP0 CFP2, SPA CLA JMP CFP4 /STARTF < ENDF TAD CFPTMP CIA TAD STARTF SNA JMP CFP1 /DF = STARTF (SELECTED) SPA CLA JMP CFP1 /DF > STARTF (SELECTED) CFP3, TAD CFPTMP /DF < STARTF *** CIA TAD ENDF SNA JMP CFP1 /DF = ENDF (SELECTED) SPA CLA JMP CFP0 /DF > ENDF (NOT SELECTED) JMP CFP1 /DF < ENDF (SELECTED) CFP4, TAD CFPTMP /STARTF < ENDF CIA TAD STARTF /DF = STARTF (SELECTED) SNA JMP CFP1 /DF = STARTF (SELECTED) SPA CLA JMP CFP3 /DF > STARTF THIS TIME *** JMP CFP0 /DF < STARTF (NOT SELECTED) CHECK, CHECK0 CHECK0, 0 CFPTMP, 0 / / /FIND OUT WHICH FIELDS HAVE BEEN SELECTED FOR TESTING / FLDSEL, 0 JMS TFS7 JMP .+3 TAD [267 JMS TYPE /FIELD 7 JMS TFS6 JMP .+3 TAD [266 JMS TYPE /FIELD 6 JMS TFS5 JMP .+3 TAD [265 JMS TYPE /FIELD 5 JMS TFS4 JMP .+3 TAD [264 JMS TYPE /FIELD 4 JMS TFS3 JMP .+3 TAD [263 JMS TYPE /FIELD 3 JMS TFS2 JMP .+3 TAD [262 JMS TYPE /FIELD 2 JMS TFS1 JMP .+3 TAD [261 JMS TYPE /FIELD 1 JMS TFS0 JMP .+3 TAD [260 JMS TYPE /FIELD 0 JMP I FLDSEL / PAGE / /CONVERT OCTAL NUMBERS FOR TYPEOUT / SIXTY, 0 CLA CLL TAD I SIXTY /ADDRESS OF OPERAND DCA S0 ISZ SIXTY TAD I SIXTY /STORAGE ADDRESS DCA S1 ISZ SIXTY TAD [77 CMA /AC=7700 AND I S0 /FIRST TWO DIGITS OF OPERAND BSW JMS CNV /CONVERT DIGITS FOR TYPEOT ISZ S1 /INC STORAGE ADDRESS TAD [77 AND I S0 /SECOND 2 DIGITS OF OPERAND JMS CNV JMP I SIXTY /DONE CNV, 0 DCA S2 TAD S2 CLL RTL RAL AND [707 /LEFT DIGIT TAD S2 AND [707 /RIGHT DIGIT TAD [6060 DCA I S1 /STORE CONVERTED DIGITS JMP I CNV S0, 0 S1, 0 S2, 0 / /TELETYPE OUTPUT WITH BELL / MES, 0 STA DCA INMODE /SET PRINTER ACTIVE INDICATOR /*CB*/ STA TAD MES /FIRST WORD -1 DCA 10 TAD I 10 DCA M0 TAD M0 BSW JMS TYPCH /TYPEOUT FIRST CHARACTER TAD M0 JMS TYPCH /TYPEOUT SECOND CHARACTER JMP MES+6 /CONTINUE TYPCH, 0 AND [77 SZA JMP .+3 DCA INMODE /CLEAR MESSAGE ACTIVE INDICATOR /*CB*/ JMP I 10 /END OF MESSAGE RETURN TAD [-34 SZA JMP .+3 TAD [207 /CODE IS BELL JMP MTP TAD [-4 SMA /CODE LESS THAN 40? JMP .+3 /NO TAD [340 /YES, ADD 300, CODE IS ALPHA JMP MTP TAD [-3 SZA JMP .+3 TAD [212 /CODE IS LINE FEED JMP MTP TAD [-2 SZA JMP .+3 TAD [215 /CODE IS CR SKP TAD [245 /ADD 200 TO OTHERS > 40 MTP, JMS TYPE JMP I TYPCH M0, 0 / / /TEST THE SELECTED BANK FOR FIELDS AVAILABLE / TESBNK, 0 CDF 70 JMS CFP /CHECK FIELD PRESENT JMS SFS7 /SET FIELD STATUS BIT 7 CDF 60 JMS CFP JMS SFS6 CDF 50 JMS CFP JMS SFS5 CDF 40 JMS CFP JMS SFS4 CDF 30 JMS CFP JMS SFS3 CDF 20 JMS CFP JMS SFS2 CDF 10 JMS CFP JMS SFS1 CDF 0 JMS CFP JMS SFS0 JMP I TESBNK FLDCNT, 0 / /MARCH TEST IN ERROR / TWAR, 0 JMS MES TEXT "MARCH - " JMP I TWAR / PAGE / /TYPEOUT CHARACTER IN AC AND A SPACE TYPSP, 0 JMS TYPE TAD [240 JMS TYPE JMP I TYPSP / /ERROR ROUTINE (BELL ON ERROR HAS PRIORITY) / RETURN, 0 /PROGRAM RETURN ADDRESS CODERR, JMS I IAPTER GETSR AND SR02 /BELL ON ERROR? SNA CLA JMP .+7 RBELL, TAD NOTTY /GET TTY FLAG SPA CLA JMP I RETURN /NO TELETYPE AVAILABLE DO NOT RING BELL TAD [207 JMS TYPE /RING BELL JMP I RETURN GETSR AND SR01 SZA CLA JMP STOP /INHIBIT TYPEOUT TAD EMMFLG /TEST FOR KT8A SNA CLA JMP .+5 RIF /GET PROGRAM FIELD RACA /BINARY COUNT NUMBER DCA TEMP JMP .+5 RIF CLL RTR RAR /MAKE A BINARY NUMBER DCA TEMP /SAVE CHARACTER JMS SIXTY TEMP ERROR0-1 TAD [4543 DCA ERROR0-1 TAD RETURN TAD [-1 DCA TEMP JMS SIXTY TEMP ERROR1 TAD NOTTY /GET TTY FLAG SPA CLA /IS THERE A TTY ON SYSTEM JMP I ADDER /NO. GO HALT ON ERRORS INSTEAD-INFO IN AC JMS MES 4543 ERROR0, 0 /FIELD ERROR1, 0 0 /PROGRAM LOCATION OF ERROR JMS 4040 0 JMP I .+1 /TYPEOUT ERROR ADDER, 0 /ADDRESS OF ERROR TYPEOUT STOP, GETSR AND SR00 /HALT AFTER ERROR? SNA CLA JMP LIMIT /INHIBIT ERROR HALT TAD RETURN TAD [-1 HLT /HALT WITH AC = ERROR JMS LIMIT, GETSR AND SR04 /CHANGE FIELD LIMITS? SZA CLA JMP PATA /YES JMP I RETURN /NO / /RELOCATION MOVE ERROR / ERRM, 0 ISZ COUNT /MOVE ERROR OCCURRED SKP JMP .-2 CLA TAD ERRM DCA RETURN /RETURN ADDRESS TAD (PERRM DCA ADDER /ERROR TYPEOUT ADDRESS JMP CODERR PERRM, JMS FLDDAT /SET UP FIELD VALUE TO PRINT Z10 /WHERE TO PUT IT JMS SIXTY MOVE Z11 TAD NOTTY /GET TTY FLAG SPA CLA /IS THERE A TELETYPE AVAILABLE? JMP ERRMM /NO-HALT ON ERRORS INSTEAD-INFO IN AC JMS MES TEXT "RELO ERR AT " JMS MES Z10, 0 Z11, 0 0 0 STA DCA HEAD1 JMP STOP //RELOCATION ERROR ROUTINE ON A SYSTEM WITHOUT A TELETYPE ERRMM, CLA CMA TAD RETURN / HLT /AC=PROGRAM LOCATION OF ERROR JMS CLA TAD FLDCNT /GET TEST FIELD AND (37 /MASK TO FIELD BITS HLT /AC=FIELD BEING TESTED IN BITS 7-11 CLA TAD MOVE HLT /AC=ADDRESS OF LOCATION IN ERROR CLA CMA DCA HEAD1 JMP STOP /GO CHECK FOR HALT AFTER ERROR SWITCH PAGE / /DATA OR CHECKERBOARD ERROR OCCURRED / ERRC, 0 ISZ COUNT /ERROR OCCURRED SKP JMP .-2 CLA TAD ERRC DCA RETURN /RETURN ADDRESS TAD (PERRC DCA ADDER /ERROR TYPEOUT ADDRESS GETSR AND SR02 /BELL ON ERROR SZA CLA JMP RBELL /RING BELL GETSR AND SR01 SZA CLA JMP STOP /INHIBIT TYPEOUT ISZ HEAD1 SKP JMS ERRHD /TYPEOUT ERROR HEADING JMP CODERR PERRC, JMS FLDDAT /SET UP FIELD INFORMATION Z1 JMS SIXTY TSTAD Z2 JMS SIXTY GDATA Z3 JMS SIXTY BDATA Z4 TAD NOTTY /GET TTY FLAG SPA CLA /IS THERE A TTY AVAILABLE JMP ERRCC /NO GO HALT ON ERRORS INSTEAD JMS MES Z1, 0 Z2, 0 0 /FAIL ADDR 4040 4040 Z3, 0 0 /GOOD 4040 Z4, 0 0 /BAD 4000 PARORC, JMS TTS JMS TN /NONE JMP STOP JMS T0 /ALL 0 JMP PERRO0 JMS T1 /ALL 1 JMP PERRO0 JMS T07 /0000 - 7777 WCP JMP PERRO0 JMS T70 /7777 - 0000 WCP JMP PERRO0 JMS T25 /2525 - 5252 WCP JMP PERRO0 JMS T52 /5252 - 2525 WCP SKP JMS TWAR /MARCH PATTERN FAILURE PERRO0, JMS TCS TAD [35 /NC TAD [-1 /1C TAD [262 /2C JMS TYPE TAD [303 JMS TYPE JMP STOP /DATA OR CHECKERBOARD ERROR ON A NON TTY SYSTEM- ERROR INFO IN AC FOR HALTS ERRCC, CLA CMA TAD RETURN /GET JMS ERROR ADDRESS HLT /AC=PROGRAM LOCATION OF ERROR JMS CLA TAD FLDCNT /GET FIELD BEING TESTED AND (37 /MASK OUT FIELD BITS HLT /AC=FIELD BEING TESTED BITS 7-11 CLA TAD TSTAD HLT /AC=FAILING ADDRESS IN FIELD BEING TESTED CLA TAD GDATA /GET THE GOOD DATA HLT /AC=THE GOOD DATA CLA TAD BDATA /GET THE DATA READ HLT /AC=THE BAD DATA CLA JMS TTS /GET THE PATTERN BEING TESTED PATERR, TAD TSNUM /GET THE PATTERN HLT /AC=PATTERN NUMBER CLA JMP STOP /GO CHECK FOR HALT AFTER ERROR / /TYPEOUT TEST BEING EXECUTED / TN, 0 JMS MES TEXT "NO PATTERN" JMP I TN PAGE T0, 0 JMS MES TEXT "ALL 0 - " JMP I T0 T1, 0 JMS MES TEXT "ALL 1 - " JMP I T1 T07, 0 JMS MES TEXT "0000-7777 WCP - " JMP I T07 T70, 0 JMS MES TEXT "7777-0000 WCP - " JMP I T70 T25, 0 JMS MES TEXT "2525-5252 WCP - " JMP I T25 T52, 0 JMS MES TEXT "5252-2525 WCP - " JMP I T52 / /PARITY ERROR / PARINT, CLA TAD (INTR DCA RETURN JMS SIXTY 0 Z20 JMS SIXTY TSTAD Z21 TAD NOTTY /GET TTY FLAG SPA CLA /IS THERE A TELETYPE AVAILABLE JMP PARERR /NO, GO HALT WITH ERROR INFO IN AC JMS MES /PRINT HEADER TEXT "%#PARITY ERR, LOC 0=" JMS MES Z20, 0 0 /CONTENT OF LOC 0 4040 2423 2401 0475 /TSTAD= 0000 GTF AND [7 TAD [260 JMS TYPE /TYPE DATA FIELD JMS MES Z21, 0 0 /CONTENT OF TSTAD 4000 CMP STA DCA HEAD1 JMP PARORC /TYPE PRESENT TEST /PARITY ERROR ON A NON TTY SYSTEM- ERROR INFO IN THE AC FOR EACH HALT PARERR, TAD 0 /GET THE INTERRUPTED PC HLT /AC=INTERRUPT PC (LOCATION 0) CLA GTF /GET THE FLAGS AND (7 /MASK TO DATA FIELD HLT /AC=DATA FIELD AT TIME OF PARITY ERROR CLA TAD TSTAD HLT /AC=ADDRESS IN FIELD BEING TESTED CLA CMP /CLEAR MEMORY PARITY ERROR BIT JMP PARORC /GO GET PATTERN BEING TESTED PAGE / /UNWANTED INTERRUPT OCCURRED / BADINT, TAD (BADINT JMS I IAPTER /GO TO APT IF NEED BE TAD NOTTY /GET THE TELETYPE FLAG SMA CLA /IS THERE A TELETYPE ON THE SYSTEM JMP .+3 /YES GO PRINT THE MESSAGE HLT /UNWANTED INTERRUPT OCCURRED JMP BINTC /GO CLEAR THE WORLD AND CONTINUE JMS MES TEXT "%#UNWANTED INTERRUPT OCCURRED" BINTC, CAF STA DCA HEAD1 JMP INTR / /SET ONLY STATUS BIT SPECIFIED / STS0, 0 /SET TS0 (ALL 0 TEST) CLA STL RAR DCA TS JMP I STS0 STS1, 0 /SET TS1 (ALL 1 TEST) CLA STL RTR DCA TS JMP I STS1 STS2, 0 /SET TS2 (0000 - 7777 WCP TEST) CLA STL RTR RAR DCA TS JMP I STS2 STS3, 0 /SET TS3 (7777 - 0000 WCP TEST) CLA STL RTR RTR DCA TS JMP I STS3 STS4, 0 /SET TS4 (2525 - 5252 WCP TEST) CLA IAC BSW CLL RAL DCA TS JMP I STS4 STS5, 0 /SET TS5 (5252 - 2525 WCP TEST) CLA IAC BSW DCA TS JMP I STS5 SCS1, 0 /SET CS1 (1 COMPLEMENT) CLA STL RTR DCA CS JMP I SCS1 SCS2, 0 /SET CS2 (2 COMPLEMENT) CLA STL RTR RAR DCA CS JMP I SCS2 / /SET ALSO STATUS BIT SPECIFIED / SFS0, 0 /SET FS0 (DON'T TEST FIELD 0) CLA SETFS /SETUP BANK POINTER TAD I TEMP RAL STL RAR DCA I TEMP /SAVE STATUS WORD JMP I SFS0 SRS0, 0 /SET RS0 (DON'T RELO TO FIELD 0) CLA SETRS /SETUP BANK POINTER TAD I TEMP RAL STL RAR DCA I TEMP /SAVE NEW WORD JMP I SRS0 SFS1, 0 /SET FS1 (DON'T TEST FIELD 1) CLA SETFS /SETUP BANK POINTER TAD I TEMP RTL STL RTR DCA I TEMP /SAVE NEW WORD JMP I SFS1 SRS1, 0 /SET RS1 (DON'T RELO TO FIELD 1) CLA SETRS /SETUP BANK POINTER TAD I TEMP TAD RS RTL STL RTR DCA I TEMP /SAVE NEW WORD JMP I SRS1 SFS2, 0 /SET FS2 (DON'T TEST FIELD 2) CLA SETFS /SETUP BANK POINTER TAD I TEMP RTL SMA TAD [4000 RTR DCA I TEMP /SAVE NEW WORD JMP I SFS2 SFSTAB, SFS0 SFS1 SFS2 SFS3 SFS4 SFS5 SFS6 SFS7 PAGE SRS2, 0 /SET RS2 (DON'T RELO TO FIELD 2) CLA SETRS /SETUP BANK POINTER TAD I TEMP RTL SMA TAD [4000 RTR DCA I TEMP /SAVE NEW WORD JMP I SRS2 SFS3, 0 /SET FS3 (DON'T TEST FIELD 3) CLA SETFS /SETUP BANK POINTER TAD I TEMP AND [7360 TAD [400 DCA I TEMP /SAVE NEW WORD JMP I SFS3 SRS3, 0 /SET RS3 (DON'T RELO TO FIELD 3) CLA SETRS /SETUP BANK POINTER TAD I TEMP AND [7360 TAD [400 DCA I TEMP /SAVE NEW WORD JMP I SRS3 SFS4, 0 /SET FS4 (DON'T TEST FIELD 4) CLA SETFS /SETUP BANK POINTER TAD I TEMP AND [7560 TAD [200 DCA I TEMP /SAVE NEW WORD JMP I SFS4 SRS4, 0 /SET RS4 (DON'T RELO TO FIELD 4) CLA SETRS /SETUP BANK POINTER TAD I TEMP AND [7560 TAD [200 DCA I TEMP /SAVE NEW WORD JMP I SRS4 SFS5, 0 /SET FS5 (DON'T TEST FIELD 5) CLA SETFS /SETUP BANK POINTER TAD I TEMP AND [7660 TAD [100 DCA I TEMP /SAVE NEW WORD JMP I SFS5 SRS5, 0 /SET RS5 (DON'T RELO TO FIELD 5) CLA SETRS /SETUP BANK POINTER TAD I TEMP AND [7660 TAD [100 DCA I TEMP /SAVE NEW WORD JMP I SRS5 SFS6, 0 /SET FS6 (DON'T TEST FIELD 6) CLA SETFS /SETUP BANK POINTER TAD I TEMP AND [7720 TAD [40 DCA I TEMP /SAVE NEW WORD JMP I SFS6 SRS6, 0 /SET RS6 (DON'T RELO TO FIELD 6) CLA SETRS /SETUP BANK POINTER TAD I TEMP AND [7720 TAD [40 DCA I TEMP /SAVE NEW WORD JMP I SRS6 SFS7, 0 /SET FS7 (DON'T TEST FIELD 7) CLA SETFS /SETUP BANK POINTER TAD I TEMP AND [7740 TAD [20 DCA I TEMP /SAVE NEW WORD JMP I SFS7 SRS7, 0 /SET RS7 (DON'T RELO TO FIELD 7) CLA SETRS /SETUP BANK POINTER TAD I TEMP AND [7740 TAD [20 DCA I TEMP /SAVE NEW WORD JMP I SRS7 / /TEST TEST STATUS /RETURN IF NO TEST /RETURN+2 IF ALL 0 TEST /RETURN+4 IF ALL 0 TEST /RETURN+6 IF 0000 - 7777 TEST /RETURN+8 IF 7777 - 0000 TEST /RETURN+10 IF 2525 - 5252 TEST /RETURN+12 IF 5252 - 2525 TEST /RETURN+14 IF MARCH PATTERN / TTS, 0 CLA DCA TSNUM /CLEAR PATTERN NUM FOR NON TTY SYSTEMS TAD TS AND [7770 SNA JMP TTYCHK /NO TEST ISZ TSNUM ISZ TTS ISZ TTS TTS0, CLL RAL MQL SZL /CHECK THIS TEST BIT JMP TTYCHK ISZ TSNUM ISZ TTS ISZ TTS SWP JMP TTS0 /CHECK NEXT TEST BIT TSNUM, 0 TTYCHK, CLA TAD NOTTY /GET PROGRAM FLAG SPA CLA /WAS THERE A TELETYPE AVAILABLE JMP PATERR /NO, GO HALT ON ERROR JMP I TTS /RETURN TO ERROR PRINTOUT PAGE / /TEST FIELD STATUS /RETURN IF FIELD STATUS BIT SET (DON'T TEST FIELD) /RETURN+1 IF FIELD STATUS BIT RESET (TEST THIS FIELD) / TFS0, 0 CLA SETFS /SETUP BANK POINTER TAD I TEMP SMA CLA /FIELD 0 ISZ TFS0 JMP I TFS0 TFS1, 0 CLA SETFS /SETUP BANK POINTER TAD I TEMP RAL SMA CLA ISZ TFS1 /FIELD 1 JMP I TFS1 TFS2, 0 CLA SETFS /SETUP BANK POINTER TAD I TEMP RTL SMA CLA ISZ TFS2 /FIELD 2 JMP I TFS2 TFS3, 0 CLA SETFS /SETUP BANK POINTER TAD I TEMP RTL RAL SMA CLA /FIELD 3 ISZ TFS3 JMP I TFS3 TFS4, 0 CLA SETFS /SETUP BANK POINTER TAD I TEMP RTL RTL SMA CLA /FIELD 4 ISZ TFS4 JMP I TFS4 TFS5, 0 CLA SETFS /SETUP BANK POINTER TAD I TEMP BSW RAR SNL CLA /FIELD 5 ISZ TFS5 JMP I TFS5 TFS6, 0 CLA SETFS /SETUP BANK POINTER TAD I TEMP BSW SMA CLA /FIELD 6 ISZ TFS6 JMP I TFS6 TFS7, 0 CLA SETFS /SETUP BANK POINTER TAD I TEMP BSW RAL SMA CLA /FIELD 7 ISZ TFS7 JMP I TFS7 / /TEST RELOCATION STATUS /RETURN IF RELO STATUS BIT SET (DON'T RELO TO FIELD) /RETURN+1 IF RELO STATUS BIT RESET (RELO TO THIS FIELD) / TRS0, 0 CLA SETRS /SETUP BANK POINTER TAD I TEMP SMA CLA /FIELD 0 ISZ TRS0 JMP I TRS0 TRS1, 0 CLA SETRS /SETUP BANK POINTER TAD I TEMP RAL SMA CLA /FIELD 1 ISZ TRS1 JMP I TRS1 TRS2, 0 CLA SETRS /SETUP BANK POINTER TAD I TEMP RTL SMA CLA /FIELD 2 ISZ TRS2 JMP I TRS2 TRS3, 0 CLA SETRS /SETUP BANK POINTER TAD I TEMP RAL RTL SMA CLA /FIELD 3 ISZ TRS3 JMP I TRS3 TRS4, 0 CLA SETRS /SETUP BANK POINTER TAD I TEMP RTL RTL SMA CLA /FIELD 4 ISZ TRS4 JMP I TRS4 TRS5, 0 CLA SETRS /SETUP BANK POINTER TAD I TEMP BSW RAR SNL CLA /FIELD 5 ISZ TRS5 JMP I TRS5 TRS6, 0 CLA SETRS /SETUP BANK POINTER TAD I TEMP BSW SMA CLA /FIELD 6 ISZ TRS6 JMP I TRS6 / PAGE / TRS7, 0 CLA SETRS /SETUP BANK POINTER TAD I TEMP BSW RAL SMA CLA /FIELD 7 ISZ TRS7 JMP I TRS7 / /TYPEOUT ERROR HEADING / ERRHD, 0 TAD NOTTY /GET TTY FLAG SPA CLA JMP I ERRHD /NO TELETYPE AVAILABLE DON'T PRINT JMS MES TEXT "%#PR LOC FAIL ADR GOOD BAD PATTERN" JMP I ERRHD / /TYPEOUT PROGRAM TITLE / TITLE, 0 TAD NOTTY /GET TTY FLAG SPA CLA /TTY AVAILABLE? JMP I TITLE /NO, ABORT MESSAGE JMS MES TEXT "%##PDP-8E EXT MEM DATA & CHKBD#" JMP I TITLE / /TYPEOUT TO SET SWITCHES / SETSW, 0 TAD NOTTY /GET TTY FLAG SPA CLA /IS THERE A TTY AVAILABLE JMP I SETSW JMS MES TEXT "%#SELECT FIELD PARAMETERS%#" JMP I SETSW / /TYPEOUT "NO RELOCATION" / PNOREL, 0 TAD NOTTY /GET TTY FLAG SPA CLA /IS THERE A TTY ON SYSTEM JMP I PNOREL /NO, GO RUN TEST JMS MES TEXT "%#NO RELOCATION, PROG IN FIELD " RIF CLL RTL RAL TAD [6000 DCA Z8 JMS MES Z8, 0 STA DCA HEAD1 JMP I PNOREL / /TYPEOUT "RELOCATION" PREL, 0 TAD NOTTY /GET TELETYPE FLAG SPA CLA /PRINT MESSAGE? JMP I PREL /NO TTY - DO NOT PRINT JMS MES TEXT "%#PROG WILL RELOCATE" STA DCA HEAD1 JMP I PREL / PAGE / / / /RELOCATE THE PROGRAM / RELO, 0 CLA DCA COUNT /CLEAR ERROR COUNTER DCA MOVE /CLEAR MOVE COUNTER ISZ RELCNT /SEE IF ALL FIELDS DONE JMP .+5 TAD NUMFLD CIA DCA RELCNT JMS ENDPAS TAD [6201 TAD PROFLD DCA RELO2 TAD [6201 TAD TSTFLD DCA RELO3 TAD RELO2 DCA RELO4 CLL CLA IAC RAL /AC=2 TAD RELO3 DCA RELO5 RELO2, CDF 0 /MOVE FROM DF TAD I MOVE RELO3, CDF 0 /MOVE TO DF DCA I MOVE TAD I MOVE RELO4, CDF 0 /MOVE FROM DF CIA TAD I MOVE SZA CLA JMS ERRM /MOVE ERROR ISZ MOVE JMP RELO2 TAD COUNT SZA CLA /SKIP IF MOVE ERROR JMP I RELO RELO5, CDI 0 /NEW PROGRAM FIELD JMP I RELO / /INTERUPT ROUTINE / INTROU, JMS SAVINT SPO /SKIP IF PARITY OPTION JMP .+3 SMP JMP PARINT /PARITY ERROR KSF JMP BADINT /UNWANTED INTERRUPT JMS KBINT /KEYBOARD INTERRUPT INTR, JMS RESINT CLA TAD SMQ /RESTORE MQ MQL GTF RTF CLA TAD SAC /RESTORE AC JMP I 0 / /TURN INTERRUPT ON IF FIELD 0 AND PARITY OPTION INSTALLED / PAR, 0 CLA CLL CAF SPO /SKIP IN PARITY OPTION JMP I PAR RIF SNA CLA /SKIP IF NOT FIELD 0 ION JMP I PAR SAVINT, 0 CLA TAD SIXTY DCA A1 TAD CNV DCA A2 TAD S0 3337 TAD S1 DCA A4 TAD S2 DCA A5 TAD MES DCA A6 TAD TYPCH DCA A7 TAD M0 DCA A8 TAD TYPE DCA A9 TAD TYPSP DCA A10 TAD RETURN DCA A11 TAD ERROR0 DCA A12 TAD ERROR1 DCA A13 JMP C80000 /C8/ A1, 0 /C8/ A2, 0 /C8/ A3, 0 /C8/ A4, 0 /C8/ A5, 0 /C8/ A6, 0 /C8/ A7, 0 /C8/ A8, 0 /C8/ A9, 0 /C8/ A10, 0 /C8/ A11, 0 /C8/ A12, 0 /C8/ A13, 0 /C8/ PAGE /C8/ C80000, /C8/ TAD ERROR1+1 DCA A14 TAD ADDER DCA A15 TAD TN DCA A16 TAD T0 DCA A17 TAD T1 DCA A18 TAD T07 DCA A19 TAD T70 DCA A20 TAD T25 DCA A21 TAD T52 DCA A22 TAD TCS DCA A23 TAD TTS DCA A24 TAD SAVINT /C8/ DCA C80001 /C8/ JMP I C80001 /C8/ C80001, 0 /C8/ RESINT, 0 CLA TAD A1 DCA SIXTY TAD A2 DCA CNV TAD A3 DCA S0 TAD A4 DCA S1 TAD A5 DCA S2 TAD A6 DCA MES TAD A7 DCA TYPCH TAD A8 DCA M0 TAD A9 DCA TYPE TAD A10 DCA TYPSP TAD A11 DCA RETURN TAD A12 DCA ERROR0 TAD A13 DCA ERROR1 TAD A14 DCA ERROR1+1 TAD A15 DCA ADDER TAD A16 DCA TN TAD A17 DCA T0 TAD A18 DCA T1 TAD A19 DCA T07 ENDHLT, TAD A20 PRINT, DCA T70 GETSR, TAD A21 C8CAL, DCA T25 SETFS, TAD A22 SETRS, DCA T52 RACA, TAD A23 RACB, DCA TCS TAD A24 DCA TTS JMP I RESINT A14, 0 /C8/ A15, 0 /C8/ A16, 0 /C8/ A17, 0 /C8/ A18, 0 /C8/ A19, 0 /C8/ A20, 0 /C8/ A21, 0 /C8/ A22, 0 /C8/ A23, 0 /C8/ A24, 0 /C8/ / PAGE / /TYPEOUT "NONE" FOR NO LEGAL FIELD SELECTION / NOFLD, TAD NOTTY /GET THE TTY FLAG SPA CLA /WAS IT SET JMP PATA /YES NO TELETYPE DO NOT PRINT JMS MES TEXT "NONE" JMP PATA /SETUP SWITCHES AGAIN / /THIS SUBROUTINE ESTABLISHES THE PROPER ERROR ROUTINE TO GO TO / / SETERR, 0 CLA TAD FLDCNT AND SR911 TAD (ERRTAB /GET TO ERROR ROUTINE TO EXECUTE DCA SRS TAD I SRS /GET ROUTINE TO EXECUTE DCA SRS /SAVE IT JMS I SRS /GO EXECUTE ROUTINE STA /AC=-1 TAD FCNT /-1 TO NUMBER OF FIELDS TO DO DCA FCNT /SAVE NEW VALUE TAD FCNT SZA CLA /ANY FIELDS LEFT TO DO JMP I SETERR /YES CONTINUE TESTING JMS MES TEXT "%#DISCONNECTED" HLT JMP .-1 /DON'T CONTINUE JMP I SETERR / ERRTAB, SRS0 SRS1 SRS2 SRS3 SRS4 SRS5 SRS6 SRS7 / SRS, 0 / PNTFLD, 0 JMS MES 4543 0 TAD FCNT AND SR56 /ISOLATE BANK INFORMATION CLL RTR RAR /MOVE INTO POSITION TAD [260 JMS TYPE /TYPE BANK SELECTION TAD FCNT /GET FIELD CNT AND SR911 TAD [260 /SET UP ASCII FOR FIELDS JMS TYPSP /TYPEOUT # OF FIELDS IN THIS SYSTEM JMS MES TEXT "FIELDS IN THIS SYSTEM" JMS MES TEXT "%#FIELDS SEL'D ARE " JMS TOSEL JMP I PNTFLD / / /ROUTINE TO CHECK FOR CONSOLE PACKAGE ACTIVE / /IF CONSOLE PACKAGE ACTIVE, GO TO CONSOLE PACKAGE /RETURN CALL + 2 / /IF CONSOLE PACKAGE NOT ACTIVE, RETURN CALL + 1 / XC8CAL, 0 DCA CHRTMP /SAVE AC TAD HCW2 /GET HCW2 AND K400 /TEST FOR BIT 3=1 CONSOLE ACTIVE SZA CLA JMP .+3 /CONSOLE IS ACTIVE TAD CHRTMP /GET BACK THE CHARACTER JMP I XC8CAL /AND EXIT. RIF /READ INSTRUCTION FIELD TAD (OFFSET /ADD CONSOLE PACKAGE FIELD OFFSET TAD (CIF /ADD CIF INSTRUCTION CODE DCA .+1 /SAVE MODIFIED CIF FOR EXECUTION HLT /MODIFIED CIF TO CONSOLE PACKAGE FIELD TAD CHRTMP /RESTORE AC JMS I C8LOC /GO TO CONSOLE PACKAGE ISZ XC8CAL /INCREMENT RETURN ADDRESS JMP I XC8CAL /RETURN CALL + 2 CONSOLE WAS ACTIVE / C8LOC, C8ENTR /POINTER TO CONSOLE PACKAGE K400, 0400 /CONSTANT CHRTMP, 0 /TEMPORARY AC SAVE AREA XGETSR, 0 CLL CLA TAD HCW1 SPA CLA /SKIP IF PSEUDO SWITCH REGISTER TO BE USED CLA OSR SKP /READ SWITCHES AND SKIP TAD PSR /THIS WILL BE ZERO IF CONSOLE NOT ACTIVE JMP I XGETSR /EXIT WITH VALUE IN AC PAGE / /PRINT "SELECT TEST PARAMETERS" / SETPAR, 0 CLA TAD NOTTY SPA CLA /SKIP IF TTY AVAILABLE JMP I SETPAR JMS MES TEXT "#%SELECT TEST PARAMETERS#%" JMP I SETPAR / / /TYPEOUT CHARACTER IN AC / TYPE, 0 DCA TEMP /SAVE THE CHARACTER TAD HCW2 /GET HCW2 SPA CLA /SKIP APT NOT ACTIVE JMP I TYPE /EXIT IF APT ACTIVE TAD TEMP /GET BACK CHARACTER SKON JMP TYPOFF PRINT ION CLA JMP I TYPE TYPOFF, PRINT CLA JMP I TYPE / /TYPEOUT "PROGRAM IN SELECTED FIELD" / PINF, TAD NOTTY /GET THE TELETYPE PROGRAM FLAG SPA CLA /IS THERE A TELETYPE AVAILABLE JMP PATA /NO TTY- DO NOT PRINT JMS MES /GO PRINT MESSAGE TEXT "%#PROGRAM IN SELECTED FIELD" JMP PATA /GO SETUP SWITCHES AGAIN /SET UP THE FIELD IN ERROR FOR TYPEOUT /LOCATION FOLLOWIN CALL IS WHERE TO STORE INFORMATION / FLDDAT, 0 TAD I FLDDAT /GET LOCATION TO STORE IT IN DCA DATTMP /SAVE IT ISZ FLDDAT /UPDATE RETURN TAD EMMFLG SNA CLA /SKIP IF KT8 ACTIVE JMP .+5 TAD TSTFLD /GET FIELD BEING DONE RACA /BINARY NUMBER DCA TEMP /SAVE IT JMP .+5 /PROCESS IT TAD TSTFLD CLL RTR RAR DCA TEMP /SAVE IT JMS SIXTY TEMP /LOCATION TO DO OD /WHERE TO PUT IT TAD YY /GET DECODED VALUE DCA I DATTMP JMP I FLDDAT /AND EXIT / / OD, 0 YY, 0 DATTMP, 0 / / /MAKE A BINARY NUMBER OUT OF A FIELD CHANGE / XRACA, 0 DCA RTEMP TAD RTEMP AND K104 DCA RTEMP1 /SAVE BANK VALUE TAD RTEMP1 BSW /5 INTO 11 CLL RTL /MOVE INTO 9 RAL /NOW 8 TAD RTEMP1 RAL AND (30 /ISOLATE BANK DCA RTEMP1 TAD RTEMP AND (70 /ISOLATE FIELD CLL RTR RAR /INTO BIT 9-11 TAD RTEMP1 JMP I XRACA /EXIT WITH BINARY NUMBER IN THE AC / /MAKE A FIELD CHANGE OUT OF A BINARY NUMBER / XRACB, 0 DCA RTEMP TAD RTEMP CLL RTR RAR /BANK IN 10-11 AND (3 TAD (BANKR /MAKE A POINTER DCA XRACA /SAVE THE POINTER TAD RTEMP AND (7 /ISOLATE FIELD CLL RTL RAL /MOVE INTO POSITION TAD I XRACA JMP I XRACB / RTEMP, 0 RTEMP1, 0 BANKR, 0 4 100 K104, 104 / PAGE / / / / /THE FOLLOWING TEST IS A MARCH PATTERN DEVELOPED FOR TESTING /THE MS8-C MOS MEMORY. / / THE TEST SELECTED FOR THE MOS MEMORY TESTING IS A TYPICAL MARCH / PATTERN. THE TEST BEGINS BY LOADING THE ENTIRE MEMORY WITH / A 2525 PATTERN. THEN STARTING AT ADDRESS ZERO OF LOWEST POSSIBLE / FIELD THE TEST READS THE CONTENTS, COMPARES IT, AND THEN WRITES BACK / THE COMPLEMENT VALUE. THE PROCESS IS REPEATED THROUGHOUT THE ENTIRE / MEMORY. / / NEXT THE PROCESS REPEATS FROM MAXIMUM TO MINIMUM, COMPLEMENTING / AS IT IS BEING DONE. / / THE ENTIRE SEQUENCE IS THEN REPEATED USING A BACKGROUND OF / 5252. THIS INSURES THAT A ONE AND A ZERO CAN BE WRITTEN INTO / EACH MEMORY CELL. / / / / MOSTST, 0 CLL CLA CMA RAL /AC=-2 DCA PATCNT CLL CLA CMA RAL /AC=-2 DCA TSTCNT CLL CLA DCA FLDCNT DCA BANK /CLEAR INDICATORS CLL CLA IAC DCA ADDINC CLL CLA IAC DCA FLDINC MOSLOD, JMS NUFLD /TEST FOR VALID FIELD SELECTION JMP M0UPD /GO UPDATE FIELD VALUE TAD PROFLD /GET CURRENT FIELD TAD [6201 /MAKE IT A CDF DCA MOSFLD /SAVE FOR RETURN TAD TSTFLD TAD [6201 /MAKE TEST FIELD A CDF DCA .+2 MEMLOD, TAD PAT1 /FILL MEMORY WITH BACKGROUND CDF 0 /CHANGED TO LOAD FIELD DCA I TSTAD MOSFLD, CDF 0 /MAKD DF=PROFLD ISZ TSTAD /SEE IF ALL DONE JMP MEMLOD /GO BACK AND TRY IT AGAIN /UPDATE TEST FIELD VALUE AND TEST AGAIN / M0UPD, CLA TAD FLDCNT CIA TAD FCNT /TEST FOR MAX VALUE SNA CLA /SKIP IF NOT AT MAX JMP .+3 /AT MAX START READING ISZ FLDCNT /UPDATE FIELD TO DO JMP MOSLOD /GO BACK AND TEST THIS FIELD VALUE / /AT THIS POINT ALL MEMORY IS FILLED WITH BACKGROUND 2525 / JMS I IAPTOK /NOTIFY APT IF REQUIRED. DCA FLDCNT DCA BANK /CLEAR INDICATORS AGAIN FOR READ CYCLE MOSRED, JMS NUFLD JMP M1UPD /NOT A VALID SELECTION TAD PAT1 /SET UP COMPARISON DCA GDATA TAD PROFLD /GET CURRENT FIELD LOCATION TAD [6201 /MAKE IT A CDF DCA REDFLD /SET UP RETURN TAD TSTFLD /GET FIELD TO READ TAD [6201 /MAKE IT A CDF DCA .+1 /AND SAVE IT FOR USE REDLUP, CDF 0 /CHANGE TO TEST FIELD CDF TAD I TSTAD /GET VALUE IN SELECTED FIELD DCA BDATA /SAVE IT FOR COMPARISON TAD PAT2 /NOW WRITE BACK COMPLEMENT VALUE DCA I TSTAD /BACK INTO SELECTED FIELD REDFLD, CDF 0 /CHANGED TO CURRENT CDF TAD GDATA CIA TAD BDATA /SET UP COMPARISON SZA CLA /SKIP IF EQUAL JMS MOSERR /GO REPORT ERROR TAD TSTAD TAD ADDINC /ADD IN ADDRESS OFFSET. DCA TSTAD /AND RESTORE NEW VALUE TAD TSTAD SZA CLA JMP REDLUP /GO BACK AND DO THE NEXT M1UPD, TAD FLDINC SPA CLA /SKIP IF READING LOW TO HIGH JMP .+3 /BYPASS COMPARISON TAD FCNT CIA TAD FLDCNT SNA CLA /SKIP IF NOT AT MAX JMP .+5 TAD FLDINC /ADD IN FIELD OFF SET VALUE TAD FLDCNT /TO THE CURRENT FIELD POSITION DCA FLDCNT JMP MOSRED /GO BACK AND READ NEXT FIELD / /NOW UPDATE PATTERN TO LOAD AND READ BACK VALUE / TAD FLDINC CIA /NEGATE CURRENT FIELD INCREMENT VALUE DCA FLDINC /AND RESTORE IT TAD ADDINC /NOW DO SAME FOR THE ADDRESS OFFSET CIA DCA ADDINC TAD ADDINC SMA CLA /SKIP IF READING HIGH TO LOW JMP .+5 STA /AC=-1 DCA TSTAD /START AT ADDRESS 7777 OF HIGH FIELD TAD FCNT /START AT HIGHEST FIELD DCA FLDCNT TAD PAT1 CMA /COMPLEMENT PATTERN DCA PAT1 TAD PAT2 CMA DCA PAT2 JMS I IAPTOK ISZ TSTCNT /ALL DONE? SKP JMP .+4 CLL CLA CML RTR /SET BIT ONE OF CS WORD DCA CS /ONES COMPLEMENT JMP MOSRED DCA CS TAD PAT1 CMA DCA PAT1 TAD PAT2 CMA DCA PAT2 ISZ PATCNT /SEE IF ALL PATTERNS DONE JMP MOSTST+3 JMP I MOSTST / ADDINC, 0 FLDINC, 0 TSTCNT, 0 ADDCNT, 0 PATCNT, 0 PAT1, 2525 PAT2, 5252 / PAGE / XPRINT, 0 TLS TSF JMP .-1 TCF CLA KSF /IS KEY BOARD WAITING JMP I XPRINT KRB /GET CHARACTER C8CAL /TEST FOR ACTIVE CONSOLE CLA /NOT ACTIVE JUST IGNORE CHARACTER KCC /CLEAR FLAG JMP I XPRINT / / MOSERR, 0 ISZ COUNT /UPDATE ERROR COUNT TAD (40 DCA TS /SAVE TEST STATUS FOR PRINTOUT DCA CS TAD GDATA /DATA WRITTEN JMS GERRC DCA COUNT JMP I MOSERR / / /PRINT END OF PASS MESSAGE / ENDPAS, 0 CLA TAD NOTTY SPA CLA /SKIP IF TTY AVAILABLE JMP I ENDPAS ISZ PASSES JMS SIXTY PASSES ENDMES JMS MES TEXT "#%END OF PASS " JMS MES ENDMES, 0 0 0 JMP I ENDPAS / PASSES, 0 0 / /APT/ ROUTINE TO HANDLE ERRORS UNDER THE CONTROL OF APT / PAGE APTER, 0 /APT/ IOF /APT/ DCA APTIZ /SAVE ANYTHING IN THE AC TAD HCW2 /GET HCW2 SMA CLA /SKIP IF APT ALIVE JMP I APTER RIF /APT/ TAD [6203 /APT/CREATE A CDF INST. DCA I APTER1 /APT/CDF IN PROM CODE TAD I APTER1 DCA .+4 /APT/MODIFY NEXT CDF INST. TAD APTIZ /SEE IF ANYTHING WAS IN AC SNA /SKIP IF THERE WAS TAD ADDER /APT/AC=ERROR PC. CDF 0 /APT/(MODIFIED CDF) DF=IF. NOP JMP 6520 /APT/CALL APT = "ERROR" / APTER1, 6523 / /APT/ THIS ROUTINE INITIALIZES PROGRAM FOR APT / APTIZ, 0 IOF /MAKE SURE INTERRUPT IS OFF TAD HCW2 /GET APT CONTROL WORD SMA CLA /SKIP IF APT ENABLED. JMP NOTAPT STA /AC=-1 DCA NOTTY /NOP CONSOLE TERMINAL TAD (37 /SET UP FOR AUTO SIZE DCA PSR JMP APTEX /APT ENABLED NOTAPT, TAD NOTTY SMA CLA /SKIP IF NO TTY ON SYSTEM JMP .+12 TAD HCW1 /GET CONFIGURATION WORD 1 SPA CLA /SKIP IF SOFTWARE SWITCHES TO BE USED JMP .+6 TAD PSR /GET PSEUDO SWITCH REGISTER SZA CLA /SKIP IF NO VALUE IN PSEUDO SWITCHES JMP .+3 TAD (37 /SETUP DEFAULT FOR AUTO SIZING DCA PSR SKP CLA /BYPASS SAVING OS/8 MONITOR JMS C8SM /SAVE OS8 MONITOR IN FIELD 1 APTEX, JMP I APTIZ /AND EXIT / / / / / /APT/ ROUTINE TO "NOTIFY" APT THAT THE PROGRAM IS RUNNING OK. APTOK, 0 CLA /APT/ TAD HCW2 /APT/UNDER APT CONTROL? SMA CLA /APT/SKP IF YES JMP APTOK0 IOF /APT/ RIF /APT/AC=IF. TAD [6203 /APT/CREAD A CDF INST. DCA I APTOK1 /APT/SET UP APT CODE CDF TAD I APTOK1 DCA .+1 /APT/MODIFY NEXT LOC. CDF 0 /APT/(MODIFIED CDF) DF=CURRENT IF. NOP JMS 6500 /APT/CALL APT - "PROG OK". JMP I APTOK /APT/RTN FROM APT - RETURN TO CALL+1. APTCTX, 0 APTCTY, 0 APTOK1, 6505 /LOCATION TO OVERLAY FOR PROPER FIELD / /SEE IF KEY BOARD WAITING / APTOK0, 0 KSF JMP I APTOK KRB C8CAL /TEST FOR CONSOLE CLA /IGNORE CHARACTER KCC JMP I APTOK /EXIT / / /THIS ROUTINE DETERMINES IF MEMORY IS CONTIGUOUS IS LOWER 32K /OF MEMORY. IF NOT FIELD 7 IS NOT TESTED. / APTFL, 0 /APT/ TAD HCW2 /GET APT CONTROL WORD SMA CLA /SKIP IF APT ENABLED JMP I APTFL /EXIT IF NOT CLA STL RTR IAC /AC=6000 DCA APTMOV /SET UP STARTING ADDRESS APTLUP, CDF 70 /POINTER TO PROM CODE TAD I APTMOV /GET AN ADDRESS CDF 0 /FIELD ZERO DCA I APTMOV /SAVE THE VALUE TAD I APTMOV /GET BACK THE VALUE JUST MOVED CIA CDF 70 /BACK TO FIELD 7 FOR COMPARE TAD I APTMOV /GET BACK ORIGINAL VALUE CDF 0 /BACK TO FIELD 0 SZA CLA /SKIP IF EQUAL JMS MOVFAL /MOVE FAILURE. SOME BAD STUFF ISZ APTMOV /UPDATE ADDRESS POINTER JMP APTLUP /GO BACK AND TRY AGAIN / /AT THIS POINT THE APT PROM CODE IS SITTING IN THE PROGRAM /FIELD. FROM THIS POINT OUT ALL APT PROCESSING WILL BE DONE /IN THE FIELD BEING EXERCISED. / TAD FS /TEST TO SEE IF LOWER 32K CONTIGUOUS SNA CLA JMP I APTFL /ALL MEMORY CONTIGUOUS TAD FS /GET BACK FIELD STATUS AND (7740 /MASK OUT 7 TAD (20 /NOP FIELD 7 TESTING DCA FS /AND RESTORE FIELD STATUS WORD JMP I APTFL /AND EXIT. / APTMOV, 0 / MOVFAL, 0 STA TAD MOVFAL /ERROR PC CDF 0 /ERROR FIELD CIF 70 /TO PROM CODE JMP 6520 /REPORT THE ERROR / / /THE FOLLOWING LOCATIONS FROM 6000 TO 7777 ARE USED AS THE COMMUNICATIONS /INTERFACES FOR APT SHOULD APT BE AVAILABLE. / *6000 /CS/ LOOP1, JMS SAVDF TAD NOTTY /GET THE TELETYPE FLAG SPA CLA /IS THERE ONE ON THE SYSTEM JMP LOOP1A-1 /NO ABORT MESSAGE AND GALT JMS MES TEXT "%#LOOP ON ADDRESS SET IN SR" JMS RESDF LOOP1A, GETSR DCA SR TAD I SR CMA DCA I SR TAD I SR CMA DCA I SR JMP LOOP1A SR, 0 / /C8/ ROUTINE TO SAVE PAGE 37 OF FIELD 1 C8SM, 0 CLA RIF /READ THE INSTRUCTION FIELD TAD (6201 /ADD CDF 0 TO IT DCA C8SM0 /MODIFY THE CDF INSTR AT LOC C8SM0 TAD (7577 /SET UP PAGE 37 POINTER -1 DCA 10 /SAVE IN AUTO INDEX 10 TAD (C8SA-1 /GET ADDRESS-1 OF STORAGE AREA DCA 11 /SAVE IN AUTO INDEX 11 C8SM1, CDF 10 /CHANGE DATA FIELD TO 1 TAD I 10 /GET THE WORD C8SM0, CDF 0 /CHANGE DATA FIELD TO PROG FIELD DCA I 11 /SAVE IN STORE AREA TAD 10 /CHECK TO SEE IF PAGE DONE CMA SZA CLA /DONE SAVING PAGE? JMP C8SM1 /NO-DO NEXT WORD JMP I C8SM /YES-RETURN TO CALL+1 /C8/ ROUTINE TO RESTORE PAGES 37 OF FIELD 0 AND 1 C8RM, C8TEMP RIF /GET THE PRESENT DATA FIELD TAD (6201 /GET THE CDF INSTRUCTION DCA C8RM0 /SAVE THE NEW CDF INSTRUCTION TAD C8RM0 DCA C8RM01 TAD (7577 /SET UP AUTO INDEX FOR RESTORE OF 0 DCA 10 /SAVE IN AUTO INDEX 10 TAD (C8SA-1 /SET UP STORAGE POINTER DCA 11 /SAVE IN AUTO INDEX 11 TAD (7577 /SET UP AUTO INDEX OF RESTORE OF FIELD 1 DCA 12 /SAVE IN AUTO INDEX 12 TAD (7577 /SET UP NEXT POINTER DCA 13 /SAVE IN AUTO INDEX 13 C8RM01, CDF 0 TAD 13 CMA SNA CLA /ALL DONE? JMP C8RM0 TAD I 11 /GET DATA TO RESTORE CDF 10 /CHANGE DATA FIELD TO 1 DCA I 13 /PUT IT IN FIELD 1 JMP C8RM01 /GO DO NEXT WORD C8RM0, CDF 0 /MODIFIED CDF INSTRUCTION TO PROG FIELD TAD 10 /RESTORATION DONE? CMA SNA CLA /SKIP IF NO JMP C8RM1 TAD I 10 /GET DATA FROM PROGRAM FIELD CDF 0 DCA I 12 /RESTORE 0 JMP C8RM0 C8RM1, CDF CIF 0 /CHANGE DATA AND INSTR FIELD TO 0 JMP I .+1 7600 / *6200 /C8/ LOOP2, JMS SAVDF TAD NOTTY /GET TELETYPE STATUS SPA CLA /IS THERE ONE ON THE SYSTEM JMP LOOP2A-2 /NO ABORT MESSAGE AND HALT FOR INFO JMS MES TEXT "%#LOOP ONLY THE 2 ADDRESSES INPUT FROM THE SR" JMS IN12 JMS RESDF LOOP2A, TAD I FIRST CMA DCA I FIRST TAD I SECOND CMA DCA I SECOND JMP LOOP2A IN12, 0 TAD NOTTY /GET TELETYPE FLAG SPA CLA /IS THERE ONE ON THE SYSTEM JMP IN12A /NO-ABORT MESSAGE AND HALT FOR INFO JMS MES TEXT "%#SET SR TO FIRST ADDRESS & CONT" C8CAL IN12A, HLT GETSR DCA FIRST TAD NOTTY /GET FLAG STATUS AGAIN SPA CLA /TELETYPE AVAILABLE? JMP FIRST-4 /NO-ABORT MESSAGE AND HALT FOR INFO JMS MES TEXT "%#SET SR TO SECOND ADDRESS & CONT" C8CAL HLT GETSR DCA SECOND JMP I IN12 FIRST, 0 SECOND, 0 *6400 /C8/ LOOP3, JMS SAVDF TAD NOTTY /GET THE TELETYPE STATUS SPA CLA /IS THERE A TELETYPE AVAILABLE? JMP LOOP3A-6 /NO-ABORT MESSAGE AND HALT FOR INFO JMS MES TEXT "%#LOOP FROM FIRST ADDRESS THRU SECOND ADDRESS" JMS IN12 TAD FIRST DCA SRL1 TAD SECOND DCA SRL2 JMS RESDF LOOP3A, TAD SRL1 DCA SRL LOOP3B, TAD I SRL CMA DCA I SRL TAD I SRL CMA DCA I SRL TAD SRL CIA TAD SRL2 SNA CLA JMP LOOP3A ISZ SRL JMP LOOP3B JMP LOOP3 SRL, 0 SRL1, 0 SRL2, 0 *6500 /C8/ LOOP5, JMS SAVDF TAD NOTTY /GET TTY FLAG SPA CLA /IS THERE A TELETYPE AVAILABLE JMP LOOP5A-6 /NO-ABORT MESSAGE AND HALT FOR INFO JMS MES TEXT "%#LOOP DATA IN THE SR THRU THE ADDRESS SELECTION" JMS IN12 TAD FIRST DCA SR5A TAD SECOND DCA SR5B JMS RESDF LOOP5A, TAD SR5A DCA SR5C LOOP5B, GETSR DCA I SR5C TAD I SR5C DCA I SR5C TAD SR5C CIA TAD SR5B SNA CLA JMP LOOP5A /START AGAIN WITH FIRST ADDRESS ISZ SR5C JMP LOOP5B /DO NEXT ADDRESS C8CAL HLT /HALT RESULTED FROM ILLEGAL LIMITS JMP LOOP5 SR5A, 0 /FIRST ADDRESS OF GROUP SR5B, 0 /LAST ADDRESS OF GROUP SR5C, 0 /ADDRESS COUNTER *6600 /C8/ LOOP4, JMS SAVDF TAD NOTTY /GET TTY STATUS SPA CLA /IS THERE ONE ON THE SYSTEM JMP LOOP4A-4 /NO-ABORT MESSAGE AND HALT FOR INFO JMS MES TEXT "%#LOOP DATA IN THE SR ON THE INPUT ADDRESS" JMS MES TEXT "%#SET SR TO ADDRESS & CONT" C8CAL HLT GETSR DCA SR4 JMS RESDF /RESTORE DATA FIELD TO NEW LOOP4A, GETSR DCA I SR4 TAD I SR4 JMP LOOP4A SR4, 0 SAVDF, 0 CLA RDF DCA SAVE RIF TAD [6201 DCA .+1 CDF 0 /PROGRAM DF JMP I SAVDF SAVE, 0 RESDF, 0 TAD SAVE TAD [6201 DCA .+1 CDF 0 /LOOP DF JMP I RESDF / PAGE C8SA=. / / C O N S O L E P A C K A G E / / /IF ENTERED WITH AC=0000 THE SWITCH REGISTER /MODIFICATION ROUTINE IS ENTERED AUTOMATICALLY. /IF ENTERED WITH AC NOT EQUAL TO 0000, THE /KEYBOARD INPUT DECODER IS ENTERED AND IT IS ASSUMED /THAT THE AC CONTAINS THE ASCII CODE TO BE /CHECKED FOR A VALID CONTROL CHARACTER. / / / RSTART=PATA OFFSET=0 / / *7200 / C8TEMP, 0 /TEMPORARY WORK AREA C8CDI, CIF CDF /USED TO CREAD CDI TO PROGRAM FIELD C8CDF, CDF /USED TO CREAD CDF TO CONSOLE FIELD C8SWR, 0 /SWITCH REGISTER SAVE AREA C8MODE, 0 /PRINT MODE SWITCH C8CNTR, 0 /USED AS COUNTER C8M3, -3 /CONSTANT C8M4, -4 /CONSTANT C8M5, -5 /CONSTANT C8M10, -10 /CONSTANT C8M260, -260 /CONSTANT C8K7, 7 /CONSTANT C8K240, 240 /CONSTANT C8K260, 260 /CONSTANT C8K275, 275 /CONSTANT C8K277, 277 /CONSTANT C8K322, 322 /CONSTANT C8K323, 323 /CONSTANT / / C8ENTR, 0 DCA C8TEMP /SAVE AC RDF /READ PROGRAM FIELD TAD C8CDI /ADD CDI INSTRUCTION DCA C8CNTR /SAVE SCI TO PROGRAM FIELD TEMPORARILY RIF /READ CONSOLE FIELD TAD C8CDF /ADD CDF INSTRUCTION DCA C8FLD /SAVE CDF TO CONSOLE FIELD TAD I (HCW1 /GET HCW1 FROM PROGRAM FIELD SPA CLA /SKIP IF USING PSEUDO SWR SKP CLA OSR /GET HARDWARE SWR AND SKIP TAD I (PSR /GET PSEUDO SWR DCA C8SWR /SAVE SWITCH REGISTER TAD I (INMODE /GET MESSAGE ACTIVE FLAG DCA C8MODE /SAVE MESSAGE ACTIVE FLAG C8FLD, HLT /MODIFIED CDF TO CONSOLE DATA FIELD TAD C8ENTR /GET RETURN ADDRESS DCA C8RTN /SAVE FOR EXIT TAD C8CNTR /GET CDI TO PROGRAM FIELD DCA C8PFLD /SAVE CDI TO PROGRAM FIELD FOR EXIT TAD C8TEMP /GET AC UPON ENTRY SZA /SKIP IF IT WAS ZERO JMP C8CNTL /AC NOT ZERO, GO CHECK CTRL CHAR / /PRINT OUT SR=XXXX WHERE XXXX IS THE CURRENT CONTENTS /OF THE SWITCH REGISTER BEING USED (EITHER PSEUDO OR HARDWARE) / C8PSW, JMS C8CRLF /DO A AND TAD C8K323 /GET ASCII CODE FOR "S" JMS C8TYP /PRINT "S" TAD C8K322 /GET ASCII CODE FOR "R" JMS C8TYP /PRINT "R" TAD C8K275 /GET ASCII CODE FOR "=" JMS C8TYP /PRINT "=" TAD C8M4 /AC=-4 DCA C8CNTR /SET UP OCTAL DIGIT COUNTER TAD C8SWR /GET SWITCH REGISTER RAL /EXTRA ROTAT FOR LINK C8LOPA, RAL RTL /ROTATE OCTAL DIGITS FOR PRINTING DCA C8SWR /SAVE ROTATED SWR TAD C8SWR /GET ROTATED SWR AND C8K7 /MASK OFF DIGIT TO PRINT TAD C8K260 /ADD ASCII BASE CODE JMS C8TYP /PRINT AN OCTAL DIGIT TAD C8SWR /GET SWR ISZ C8CNTR /INCREMENT LOOP COUNTER JMP C8LOPA /GO PRINT NEXT DIGIT / /ACCEPT KEYBOARD INPUT OF OCTAL DIGITS, , /CTRL/C OR CTRL/G. ALL OTHER CHARACTERS ARE INVALID /AND WILL BE ECHOED, FOLLOWED BY A "?", /A CARRIAGE RETURN, LINE FEED, AND A RESTART OF /THE SR=XXXX ROUTINE / CLA CLL TAD C8M5 /AC=-5 DCA C8CNTR /SET UP TO ACCEPT 5 CHARACTERS DCA C8BLD /CLEAR SWITCH REG. BUILD AREA DCA C8FLG /CLEAR SWR CHANGE SWITCH TAD C8K240 /GET ASCII CODE FOR SPACE JMS C8TYP /SPACE OVER ONE POSITION C8SRLP, JMS C8TTY /GO WAIT FOR KEYBOARD INPUT DCA C8TEMP /SAVE INPUT CHARACTER TAD C8TEMP /GET CHARACTER TAD (-203 SNA /SKIP IF NOT CTRL/C JMP C8CTLC /GO TO CTRL/C ROUTINE TAD C8M4 /SUBTRACT 4 SNA /SKIP IF NOT CTRL/G JMP C8CTLG /GO TO CTRL/G ROUTINE TAD C8M3 /SUBTRACT 3 SNA /SKIP IF NOT LINE FEED JMP C8EXT1 /GO TO LINE FEED EXIT TAD C8M3 /SUBTRACT 4 SNA CLA /SKIP IF NOT CARRIAGE RETURN JMP C8EXT2 /GO TO CARRIAGE RETURN EXIT TAD C8TEMP /GET CHARACTER JMS C8TYP /ECHO IT TAD C8TEMP /GET CHARACTER TAD C8M260 SPA /SKIP IF >= TO ASCII CODE FOR ZERO JMP C8ERR /INVALID CHARACTER NOT OCTAL DIGIT TAD C8M10 SMA CLA /SKIP IF <= ASCII CODE FOR SEVEN JMP C8ERR /INVALID CHARACTER NOT OCTAL DIGIT STA /AC=7777 DCA C8FLG /SET SWR CHANGE FLAG TAD C8TEMP /GET CHARACTER AND C8K7 /MASK TO 3 BITS DCA C8TEMP /SAVE OCTAL DIGIT TAD C8BLD /GET SWR BUILD AREA CLL RTL RAL /ROTATE TO BUILD SWR TAD C8TEMP /ADD NEXT OCTAL DIGIT DCA C8BLD /SAVE NEW SWR ISZ C8CNTR /INCREMENT OCTAL DIGIT COUNTER JMP C8SRLP /CONTINUE ACCEPTING OCTAL DIGITS / C8ERR, CLA CLL TAD C8K277 /GET ASCII CODE FOR "?" JMS C8TYP /PRINT "?" JMS C8CRLF /DO A AND JMP C8PSW /GO START OVER / / PAGE / C8BLD, 0 /SWITCH REGISTER BUILD AREA C8STRT, RSTART /ADDRESS OF START OF PROGRAM C8RTN, 0 /STORAGE FOR RETURN ADDRESS C8FLG, 0 /SWR CHANGE SWITCH C8SFLG, 0 /CTRL/S ACTIVE FLAG C8K177, 0177 /CONSTANT C8K200, 0200 /CONSTANT C8K77, 0077 /CONSTANT C8M40, -40 /CONSTANT C8K100, 0100 /CONSTANT C8K215, 0215 /CONSTANT C8K212, 0212 /CONSTANT C8K303, 0303 /CONSTANT C8K307, 0307 /CONSTANT C8K336, 0336 /CONSTANT C87600, 7600 /CONSTANT / / C O N T R O L C H A R A C T E R / / D E C O D E R O U T I N E / C8CNTL, TAD (-203 SNA /SKIP IF NOT CTRL/C JMP C8CTLC /CTRL/C TYPED EXIT TO MONITOR TAD (-4 SNA /SKIP IF NOT CTRL/G JMP C8CTLG /CTRL/G TYPED GO PRINT "^G" TAD (-12 SNA /SKIP IF NOT CTRL/Q JMP C8CTLQ /CTRL/Q TYPED TAD (-2 SNA /SKIP IF NOT CTRL/S JMP C8CTLS /CTRL/S TYPED DCA C8MODE /SET MESSAGE ACTIVE FLAG ISZ C8SFLG /TEST CTRL/S ACTIVE FLAG JMP C8ECHO /GO ECHO CHARACTER AND RETURN TO PROGRAM / /CTRL/S HANDLER / C8CTLS, STA /AC=7777 DCA C8SFLG /SET CTRL/S ACTIVE FLAG TAD C8MODE /GET MESSAGE ACTIVE FLAG SNA CLA /SKIP IF CTRL/S TYPED WHILE MESSAGE ACTIVE JMP C8PFLD /RETURN TO PROGRAM / C8WAIT, STA DCA C8SFLG /SET CTRL/S ACTIVE INDICATOR JMS C8TTY /WAIT FOR KEYBOARD INPUT TAD (-203 SNA /SKIP IF NOT CTRL/C JMP C8CTLC /CTRL/C TYPED EXIT TO MONITOR TAD (-16 SZA CLA /SKIP IF CTRL/Q JMP C8WAIT /NOT CTRL/C OR CTRL/Q CONTINUE WAITING C8CTLQ, DCA C8SFLG /CLEAR CTRL/S ACTIVE FLAG JMP C8PFLD /RETURN TO MAIN PROGRAM / /CONTROL G HANDLER / C8CTLG, JMS C8CRLF /DO A AMD TAD C8K336 /GET ASCII CODE FOR UP ARROW JMS C8TYP /PRINT UP ARROW TAD C8K307 /GET ASCII CODE FOR "G" JMS C8TYP /PRINT "G" JMP C8PSW /GO TO "SR=XXXX" ROUTINE / /CONTROL C HANDLER / C8CTLC, DCA C8SFLG TAD C8K336 /GET ASCII CODE FOR UP ARROW JMS C8TYP /PRINT UP ARROW TAD C8K303 /GET ASCII CODE FOR "C" JMS C8TYP /PRINT "C" JMP C8RM /RESTORE MONITOR AND EXIT / C8ECHO, TAD C8TEMP /GET CHARACTER JMS C8TYP /ECHO IT JMP C8PFLD /RETURN TO PROGRAM / / / / /PRINT ONE CHARACTER / C8TYP, 0 ISZ C8SFLG /TEST CTRL/S ACTIVE FLAG SKP /SKIP IF CTRL/S NOT ACTIVE JMP C8WAIT /GO WAIT FOR CTRL/Q OR CTRL/C TLS /TRANSMIT CHARACTER TSF /TEST TTY FLAG JMP .-1 /WAIT FOR TTY FLAG TCF /CLEAR TTY FLAG CLA /CLEAR AC DO NOT CLEAR LINK JMP I C8TYP /RETURN / /WAIT FOR KEYBOARD INPUT THEN EXIT WITH ASCII CODE IN AC / C8TTY, 0 KSF /SKIP IF KEYBOARD FLAG SET JMP .-1 /WAIT FOR KEYBOARD INPUT KRB /READ KEYBOARD BUFFER CLEAR FLAG AND C8K177 /MASK TO 7 BITS TAD C8K200 /SET BIT 4 JMP I C8TTY /RETURN / /EXECUTE A CARRIAGE RETURN AND LINE FEED / C8CRLF, 0 TAD C8K215 /GET ASCII CODE FOR CARRIAGE RETURN JMS C8TYP /GO EXECUTE THE CARRIAGE RETURN TAD C8K212 /GET ASCII CODE FOR LINE FEED JMS C8TYP /GO EXECUTE THE LINE FEED JMP I C8CRLF /RETURN / /CONSOLE PACKAGE EXIT IF TERMINATED WITH LINE FEED / C8EXT1, JMS C8CRLF /DO A AND TAD C8PFLD /GET MODIFIED CDI TO PROGRAM FIELD DCA .+1 /SAVE FOR EXECUTION HLT /MODIFIED CDI TO PROGRAM FIELD ISZ C8FLG /TEST SWR CHANGE FLAG JMP I C8STRT /RESTART PROGRAM WITHOUT CHANGE OF SWR TAD C8BLD /GET NEW SWITCH REGISTER DCA I (20 /SAVE IT IN PROGRAM FIELD JMP I C8STRT /RESTART PROGRAM WITH NEW PSEUDO SWR / /EXIT FROM CONSOLE PACKAGE IF TERMINATED WITH CARRIAGE RETURN / C8EXT2, JMS C8CRLF /DO A AND C8PFLD, HLT /MODIFIED CDI TO PROGRAM FIELD CLA CLL /CLEAR AC AND LINK FOR RETURN ISZ C8FLG /TEST SWR CHANGE FLAG JMP I C8RTN /RETURN TO PROGRAM WITHOUT CHANGE OF SWR TAD C8BLD /GET NEW SWITCH REGISTER DCA I (20 /SAVE IT IN PROGRAM FIELD JMP I C8RTN /RETURN TO PROGRAM / / / PAGE / $$$