File CD.PA (PAL assembler source file)

Directory of image this file is from
This file as a plain text file

/6    COMMAND DECODER FOR OS/8 MONITOR
/
/
/
/
/
/
/
/
/
/COPYRIGHT  (C)  1974 BY DIGITAL EQUIPMENT CORPORATION
/
/
/
/
/
/
/
/
/
/
/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
/CORPORATION.  DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
/FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
/
/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
/
/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
/DIGITAL.
/
/
/
/
/
/
/
/
/
/

/NOVEMBER 7, 1973 RL/EF/HJ/SR /ABSTRACT-- /COMMAND DECODER (CD) ACCEPTS TTY INPUT AND INTERPRETS /THAT INPUT AS A LIST OF OPTIONS AND FILE SPECIFICATIONS /FOR OS/8 CUSPS. TABLES ARE SETUP INDICATING THE SPECIFIED /FILES AND OPTIONS. /THIS VERSION OF CD IS CAPABLE OF RUNNING OS/8 BATCH. /MODIFICATIONS TO INITIALIZATION CODE HAVE BEEN MADE TO /ALLOW THIS. DCB=7760 SHNDLR=7607 USERFG=40 /LOCATION IN MAIN OS/8 ASSEMBLY - VOLATILE T1=41 /DITTO MCDREC=51 /ALSO PRETTY VOLATILE MOFILE=7600 MIFILE=7617 MPARAM=7643 FIELD 0 /JUSTINCASE CDVERSION=5 ODTVERSION=4
/V3 CHANGES TO CD: /1. FIXED LOTS OF BUGS / A:B:C IS ILLEGAL / 15-BIT = OPTION DOESN'T DESTROY ALTMODE BIT /2. ADDED ? SUPPORT IN SPECIAL MODE /3. ALLOWED SPECIAL MODE UNDER BATCH /4. REMOVED DCC CODE /5. ^U, RO TO BOL, AND LF ALL REPRINT * /6. VERSION # AT LOC ZERO /7. DON'T LOAD HANDLERS FOR OUTPUT DEVICE /8. CHANGED _ TO < STANDARD /V3 CHANGES TO ODT /1. REMOVED DCC CODE /2. FIXED CORE SIZE ROUTINE /3. ALLOWED SOFTWARE CORE SIZE /4. MODIFIED 'GO' COMMAND SO THAT IT DOESN'T RESTORE TRAP / LOCATION TO UNMODIFIED VALUE /5. FIXED BUG RE: JMS'S OUT OF FIELD WITH MAGIC LOCATION SET /6. TURN OFF INTERRUPTS ON BREAKPOINT /CHANGES AFTER FIELD TEST RELEASE: /1. FIXED BUG RE FILE LENGTHS GT 2047 BLOCKS
*200 CD, JMP I NUMBER /EXECUTED IN SYSGEN NUM, JMP I T ANALYZ, TAD [BEGLN-1 DCA XR TAD I XR SNA JMP NOBKAR TAD [-"< SZA CLA JMP .-5 CLA CMA NOBKAR, DCA OUTSW TAD [BEGLN-1 DCA LXR BEGGRP, TAD OUTSW SNA CLA TAD BEGDIF /DIFF BETWEEN INPUT & OUTPUT AREAS TAD [MOFILE-1 DCA CLXR STA DCA DVFLAG DCA DEV1 FILLP1, DCA DEV2 FILLP, JMS I [GNAME TAD ["A-": /AC CONTAINED DELIM - "A SNA CLA JMP DEVNAM JMS I [ASSIGN TAD OUTSW SNA CLA TAD LIMDIF /DIFF BETWWEN END OF OUTPUT & INPUT AREAS TAD OUTLIM /END OF OUTPUT AREA TAD CLXR SMA CLA JMP CDER1 TAD OUTSW SNA CLA LKUPSW, JMP INFILE /ZEROED IF IN "SPECIAL DECODE" MODE CDF 10 TAD DVICE DCA I CLXR TAD NAME1 DCA I CLXR TAD NAME2 DCA I CLXR TAD NAME3 DCA I CLXR TAD NAME4 CDSKP, SKP INFILE, JMS I [LOOKUP DCA I CLXR DLOOK, CDF 0 STA DCA DVFLAG TAD DELIM SNA JMP CDOVER TAD [-"[ SNA JMP I [OLENGT TAD ["[-", SNA JMP FILLP TAD [",-"< SNA JMP BKAROW TAD ["<-"= SZA CLA JMP I [CDER2 EQUAL, DCA NUMFUJ JMS NUMBER DCA I [MPARAM+3 CLA CLL CML RAR AND I [MPARAM-1 /PRESERVE ALTMODE TAD HIORD DCA I [MPARAM-1 JMP DLOOK
BKAROW, ISZ OUTSW JMP I [CDER2 JMP BEGGRP DEVNAM, TAD NAME1 DCA DEV1 ISZ DVFLAG JMP I [CDER2 /CATCHES A:B: TAD NAME2 JMP FILLP1 CDOVER, TSF JMP .-1 /LET PRINTER QUIET DOWN TCF /AND CLEAR FLAG CDF CIF 10 TAD TMONIT DCA I [200 /RESTORE "MONITO" TAD TUSRFG DCA I [USERFG /RESTORE "USER FLAG" TAD TFPUTX /LOAD "USER CALLING FIELD" INTO AC JMP I CD /RETURN - MONITOR RESTORES CORE IF NECESSARY NUMBER, 4000 /USED BY SYSGEN TAD CDSKP DCA NUMADD /SET NUMADD TO EITHER "SKP" OR "TAD NUM" DCA HIORD NUMLP, DCA NUM JMS NUMTST /INTO PAGE 0 FOR RANGE TEST SNL JMP EONUM DCA T CLA CLL CMA RTL DCA DELIM TAD NUM ROTLP, CLL RAL DCA NUMX TAD HIORD RAL SPA JMP I [CDER2 DCA HIORD TAD NUMX ISZ DELIM JMP ROTLP NUMADD, TAD NUM /SKP IF OCTAL TAD NUM TAD T JMP NUMLP EONUM, TAD ["0 DCA DELIM TAD NUM CDF 10 JMP I NUMBER
CDER1, JMS I [PRMESG TEXT /TOO MANY FILES/
IFZERO .&400 <*400> ASSIGN, 0 TAD CLXR AND DVFLAG TAD OUTLIM SMA SZA CLA /CHECK FOR OUTPUT OR FIRST INPUT JMP ASNORM /IF DEVICE WAS SPECIFIC, OR IF WE ARE ON THE INPUT SIDE, /PROCEED NORMALLY TAD NAME1 SNA CLA JMP ASGNST TAD DFLTNM+1 DCA DEV2 TAD DFLTNM DCA DEV1 ASNORM, TAD DEV1 DCA AS+1 TAD DEV2 DCA AS+2 TAD OUTSW SNA CLA /DON'T LOAD HANDLER IF WE ARE ON OUTPUT SIDE OF "_" TAD NAME1 SPKLG1, SNA CLA /OR IF THERE IS NO FILE NAME TO LOOK UP TAD GETHND /GETHND=11 NORMALLY, 0 IF IN "SPECIAL DECODE" MODE IAC DCA AS TAD [1401 /ALLOW TWO PAGE HANDLERS DCA ASADR CIF 10 JMS I [200 AS, 0 0 0 ASADR, 1401 JMP I [CDER0 TAD AS+2 ASGNST, DCA DVICE JMP I ASSIGN GNAME, 0 DCA NAME1 DCA NAME2 DCA NAME3 DCA NAME4 TAD [NAME1 DCA NMBASE CLA CMA DCA PERDSW DCA NAMECT GTNMLP, JMS I [GCH DCA DELIM TAD DELIM TAD [-"? SZA TAD ["?-"* SNA STARSW, JMP I [CDER2 /"JMP STARNM" IF "SPECIAL DECODE" MODE TAD ["*-". SNA CLA JMP PERIOD JMS I [DECODE JMP I GNAME
STARNM, CLA /THIS CODE HANDLES *'S AND ?'S CORRECTLY TAD DELIM AND [77 DCA DELIM TAD NAMECT TAD [-6 SMA CLA JMP GTNMLP TAD NAMECT CLL RAR TAD NMBASE DCA TT TAD DELIM SZL JMP .+4 RTL RTL RTL TAD I TT DCA I TT ISZ NAMECT JMP GTNMLP PERIOD, TAD NAME1 SZA CLA ISZ PERDSW JMP I [CDER2 ISZ NMBASE TAD [4 JMP GTNMLP-1 LOOKUP, 0 DCA LNAME TAD NAME1 SNA CLA JMP LKUPST JMP EXT1 LKUPLP, DCA LNAME TAD AS+2 CIF 10 JMS I [200 2 LNAME, 0 /NAME1 LENGTH, 0 JMP LFAILD TAD LENGTH CLL TAD [400 SNL CLA CLL RTL RTL AND [7760 LKUPST, CDF 10 TAD DVICE DCA I CLXR TAD LNAME JMP I LOOKUP
LFAILD, TAD NAMECT SNA CLA /WAS THERE AN EXPLICIT EXTENSION? TAD DEFALT /NO - WAS THERE A DEFAULT EXTENSION? SNA CLA JMP I [CDER3 /YES OR NO - FILE NOT FOUND ISZ NAMECT /NO AND YES - SET FLAG TO FAIL NEXT TIME JMP EXT2 /ZERO OUT THE EXTENSION AND TRY AGAIN CDER3, JMS I [PRNAME JMS I [PRMESG TEXT / NOT FOUND/
IFZERO .+200&1000 <*600> 0 /V3 [FREE LOC] SLSHCH, 0 /V3 SNA /V3 JMP I [CDER2 DCA DELIM TAD [MPARAM-1 DCA T JMS I [DECODE JMP I [CDER2 SZL TAD [32 CMA STL /THE FOLLOWING TURNS ON THE CORRECT OPTION BIT DCA TT SLSHLP, SZL ISZ T RAR SNL ISZ TT JMP SLSHLP DCA TT CDF 10 TAD TT CMA AND I T TAD TT DCA I T CDF 0 JMP I SLSHCH DECODE, 0 TAD DELIM TAD [-"9-1 CLL TAD ["9+1-"0 SZL JMP DCDYES TAD ["0-"Z-1 CLL CML TAD ["Z-"A+1 SNL DCDYES, ISZ DECODE JMP I DECODE CDER0, TAD DEV1 JMS I [PRWD TAD DEV2 JMS I [PRWD JMS I [PRMESG TEXT / DOES NOT EXIST/
RESTRT, JMS I [CRLF CDF 10 TAD [MOFILE-1 DCA XR TAD [-47 DCA T DCA I XR /ZERO OUT THE COMMAND DECODER OUTPUT AREA ISZ T JMP .-2 CDF 0 JMP I [GLINE GCH, 0 TAD I LXR TAD [-240 SNA JMP GCH+1 TAD [240-"/ SNA JMP SLASH TAD ["/-"( SNA JMP OPENP TAD ["( JMP I GCH SLASH, TAD I LXR JMS I [SLSHCH JMP GCH+1 OPENP, TAD I LXR TAD [-") SNA JMP GCH+1 TAD [") JMS I [SLSHCH JMP OPENP OLENGT, TAD OUTSW AND NAME1 /[N] IS ONLY LEGAL ON THE OUTPUT SIDE OF THE "_" SNA CLA /AND ONLY AFTER A FILE NAME JMP I [CDER2 TAD [-4 TAD CLXR DCA NMBASE CLA CLL CML RTL DCA NUMFUJ /SET "NUMBER" TO ACCEPT DIGITS 8 AND 9 TAD OLFUDJ /LOAD FUDGE SO THAT "NUMBER" WILL BE DECIMAL JMS I [NUMBER CLL RTL RTL AND [7760 TAD I NMBASE DCA I NMBASE CDF 0 TAD DELIM TAD [-"] /IS THERE A CLOSING BRACKET? SNA /IF NOT, "DLOOK" ROUTINE WILL DETECT IT JMS I [GCH DCA DELIM JMP I [DLOOK OLFUDJ, NUM&177+1570 CDER2, CLA JMS I [PRMESG TEXT /ILLEGAL SYNTAX/
IFZERO .&1000 <*1000> /TELETYPE INPUT ROUTINE FOR COMMAND DECODER GLINE, TAD (252 /SETS 1177=252 FOR * IN MESSAGE JMS I PRINT DCA RBFLAG TAD [BEGLN-1 DCA LXR CHLOOP, 6031 /KSF JMP CHLOOP TAD [200 6034 /KRS DCA NAME1 6032 /KCC TAD [SPADR-1 DCA XR DSPCHL, TAD I XR SZA TAD NAME1 SNA CLA JMP I XR JMP DSPCHL SPADR, -225;JMP CTRLU -215;JMP CARRET -377;JMP RUBOUT -375;JMP ALTMOD -376;JMP ALTMOD -233;JMP ALTMOD -200;JMP CHLOOP -217;JMP CHLOOP /^O -"_;JMP LESSTN -212;JMP LFEED -203;JMP CTRLC /MUST BE LAST - SEE CLRLIN CODE 0 JMS PRNT CINSRT, TAD NAME1 DCA I LXR TAD LXR TAD [-EOBUFR+2 SPA CLA JMP CHLOOP JMS CRLF JMP I [CDER2
CARRET, JMS CRLF CLFINI, DCA I LXR JMP I [ANALYZ LESSTN, JMS PRNT TAD ["< JMP CINSRT+1 CTRLC, CTRLU, TAD [336 JMS I PRINT TAD NAME1 TAD [100 CLRLIN, JMS I PRINT JMS CRLF TAD I XR SZA CLA JMP GLINE CDF 10 CLA CMA DCA I [7700 TSF JMP .-1 JMP I [7605 /7605=CDF CIF 10 CRLF, 0 TAD [215 DCA NAME1 JMS PRNT TAD [212 JMS I PRINT JMP I CRLF ALTMOD, TAD [244 DCA NAME1 CLA CLL CML RAR CDF 10 DCA I [MPARAM-1 CDF 0 JMS PRNT JMP CLFINI
RUBOUT, TAD LXR TAD [1-BEGLN SNA CLA JMP RBSPCL TAD [334 ISZ RBFLAG JMS I PRINT CLA CMA DCA RBFLAG TAD LXR DCA T TAD I T JMS I PRINT LBCKUP, CLA CMA TAD LXR JMP CHLOOP-1 RBSPCL, ISZ RBFLAG JMP CLRLIN+1 TAD [334 JMP CLRLIN PRNT, 0 ISZ RBFLAG JMP .+3 TAD [334 JMS I PRINT DCA RBFLAG TAD NAME1 JMS I PRINT JMP I PRNT LFEED, JMS CRLF DCA I LXR TAD [BEGLN-2 DCA XR TAD I XR SNA JMP LBCKUP JMS I PRINT JMP .-4
*1200 /INITIALIZATION - STORED OVER BY LINE BUFFER BEGLN=. /LINE BUFFER CDINIT, DCA TFPUTX CDF 10 CLA IAC TAD I [200 DCA TMONIT /SAVE AWAY MONITOR CALL ADDRESS SINCE WE CALL TAD I [USERFG /THE MONITOR RECURSIVELY, LIKEWISE SAVE DCA TUSRFG /THE "USER FLAG" AND THE FIELD WE WERE CALLED FROM TAD I [T1 /FETCH THE USERS ARGUMENT DCA DEFALT /STORE IN THE DEFAULT EXTENSION WORD DCA I [7 /ZERO "DIRECTORY SEGMENT IN CORE" KEY CDF 0 CIF 10 JMS I [200 13 /RESET ALL HANDLERS 0 /BUT NOT OUTPUT FILES TAD DEFALT TAD M5200 SZA CLA /IS THIS A REQUEST FOR A "SPECIAL DECODE"? JMP CDCONT /NO TAD ALTLIM DCA OUTLIM /YES - SET UP ALL THE PROPER LOCATIONS TAD ALTDF1 DCA LIMDIF /TO YIELD 1 OUTPUT FILE AND 5 INPUT FILES TAD ALTDF2 DCA BEGDIF /ALL OF WHICH ARE 5-WORD <DEVICE,NAME> ENTRIES DCA I PLKUPS TAD STARJM DCA I PSTARS /AND ALLOW * AS A FILE OR EXTENSION NAME DCA DEFALT /NO DEFAULT EXTENSION IN "SPECIAL" MODE TAD CCLA /STOPS FETCHES IN SPECIAL MODE DCA I PSPKG1 /NO HANDLER FETCHES NECESSARY EITHER SINCE NO LOOKUPS CDCONT, TAD I PRWD /SEE IF BATCH FLAG IS UP RAL SPA CLA /IF YES, GO TO PAGE0 CODE JMP TT /TT ETC. IS ONCE-ONLY CODE JMP I CDRST
CDRST, RESTRT+1 /CONSTANTS NECESSARY TO SUPPORT "SPECIAL DECODE" MODE M5200, -5200 ALTLIM, 1-MOFILE-5 ALTDF1, MOFILE+5-MPARAM+5 ALTDF2, 5 PLKUPS, LKUPSW STARJM, STARNM&177+5200 /"JMP STARNM" PSTARS, STARSW CCLA, CLA PSPKG1, SPKLG1
*1314 EOBUFR=. PRMESG, 0 TAD I PRMESG JMS PRWD TAD I PRMESG ISZ PRMESG AND [77 SZA CLA JMP PRMESG+1 JMP I [RESTRT PRWD, 7777 DCA T TAD T RTR RTR RTR JMS PCHAR TAD T JMS PCHAR JMP I PRWD PCHAR, 0 AND [77 SNA JMP I PCHAR /IGNORE NULLS TAD [240 AND [77 TAD [240 JMS TYPE JMP I PCHAR PRNAME, 0 TAD NAME1 / SNA /WOULD LIKE TO FIND ROOM FOR THESE 2 LOCS / JMP I [CDER2 JMS PRWD TAD NAME2 JMS PRWD TAD NAME3 JMS PRWD TAD NAME4 SNA CLA JMP I PRNAME TAD [256 JMS PCHAR TAD NAME4 JMS PRWD JMP I PRNAME TYPE, 0 JMP .+3 TSF JMP .-1 TLS CLA TAD [7000 DCA TYPE+1 TYPRET, JMP I TYPE IFNZRO TYPRET-1377 <BATCHX,ZQWE>
*4001 /PROG TO WRITE CD AND ODT ONTO NEW SYSTEM DEVICE /4000=JMS SYSSWP TO SWAP PGS 6600 AND 7600 TAD I (7777 /SET TO PROPER RECORD FOR FIELD 1 STUFF DCA F1STUF JMS I SYSHND 4600 0 MCDREC JMP CERR JMS I SYSHND 5011 0 ODTREC JMP CERR JMS I SYSHND 0110 /READ IN UPPER PG 7600 7600 F1STUF, 0 JMP CERR JMP I .+1 7605 /START HER UP CERR, TAD .+3 DCA 4001 JMP 4000 /RESWAP AND HALT HLT SYSHND, 7607
*0 CDVERSION HLT /POWER FAIL RESTART PROTECTION NUMTST, 7777 JMS I [GCH CMA TAD NUMFUJ TAD ["8 /TEST INPUT CHARACTER FOR RANGE CLL CMA /0-7 IF NUMFUJ=0 TAD [10 /0-9 IF NUMFUJ=2 TAD NUMFUJ JMP I NUMTST *15 LXR, 0 XR, 0 CLXR, 0 T, CDINIT TT, CDF 0 /***GETS SET TO CDF BATCH HIORD, TAD I DVICE /CHECK TO SEE IF BOS IS REALLY THERE NUMX, TAD OUTSW /IF NOT, SIGNAL ERROR RBFLAG, SNA CLA NAME1, JMP NAMECT /IT'S O.K.....PROBABLY! NAME2, CDF 0 /BAD. SIGNAL ERROR TO MONITOR NAME3, ISZ I NUMTST NAME4, JMP I [7605 /AND RESTART BATCH MONITOR NAMECT, CIF CDF 0 /*****GETS ALTERED****** NMBASE, JMP I .+1 /START UP IN CD AREA OF BATCH DEV1, RESTRT+1 /***GETS ADDRESS OF CD AREA DEV2, 0 PERDSW, 0 NUMFUJ, 0 DVFLAG, 0 DELIM, 0 OUTSW, 0 DEFALT, 0 DVICE, 0 DFLTNM, 0423;1300 /DSK BEGDIF, MIFILE-MOFILE LIMDIF, MIFILE-MPARAM+2 OUTLIM, 1-MIFILE GETHND, 11 TMONIT, 0 TUSRFG, 0 TFPUTX, 0 EXT1, TAD NAME4 DCA NAMECT /REMEMBER TYPED EXTENSION TAD NAMECT SNA TAD DEFALT /SUBSTITUTE DEFAULT IF ZERO EXT2, DCA NAME4 TAD [NAME1 JMP I .+1 LKUPLP PRINT, TYPE
FIELD 1
/INVISIBLE ODT FOR OS/8 MONITOR /LOADS INTO FIELD 1 NOW, BUT LOADS & EXECUTES IN FIELD 0 /DEFINITIONS OF MONITOR SYMBOLS - VOLATILE! ODTREC=60 UDNAME=7741 MREAD=7757 MGET=7667 KMREC=7 MTEMP=27 MARG1=7740 JSBITS=7746 *200 READ, JMS I [OCRLF READ5, DCA WORD DCA WORD+1 TAD [-6 DCA TOTE REA, KSF JMP .-1 JMS I [CTCTST JMP CTRC TAD [203 DCA TEMP KCC TAD TEMP JMS I [TYPN TAD [TABL1-1 DCA 10 CHFLP, TAD I 10 SPA JMP SEX CIA TAD TEMP SZA CLA JMP CHFLP TAD 10 TAD [TABL2-TABL1 DCA TEMP TAD I TEMP DCA TEMP CLL JMP FLDTST /SEE IF FIELD SETTING IS LEGAL CTRC, JMS I [DUMP JMP I [7605
TABL1=. 240 212 215 257 302 307 273 303 327 336 315 301 314 304 337 306 377 253 255 -270 /USED - SEE "SEX" EXAM, JMS TOTTST JMP EX2 TAD WORD DCA CAD TAD WORD+1 DCA CAD+1 EX2, JMS I [LOAD CAD JMS I [PNUM DCA SHUT JMP READ5 SEX, TAD TEMP CLL TAD [10 SNL JMP NO DCA TEMP CLA CLL CMA RTL DCA CRL SROT, TAD WORD+1 CLL RAL DCA WORD+1 RTL RAL TAD WORD RAL DCA WORD ISZ CRL JMP SROT TAD WORD+1 TAD TEMP DCA WORD+1 ISZ TOTE JMP REA NO, CLA TAD [277 JMS I [TYPN JMP READ
CRL, 0 JMS TOTTST JMP I CRL TAD WORD+1 ISZ SHUT JMS I [STORE CAD CLA JMP I CRL CRL1, JMS CRL JMP READ CRL2, TAD [215 JMS I [TYPN JMS CRL JMS I [TYPN ISZ CAD+1 NOP UPAR3, JMS I [TYPD CAD TAD [257 JMS I [TYPN JMP EX2 OPIN, JMS CRL JMS I [LOAD CAD DCA CAD+1 TAD INDFLD DCA CAD UPAR2, JMS I [OCRLF JMP UPAR3 SEMI, JMS CRL ISZ CAD+1 NOP JMP READ5
*400 /NOTE THAT LOCATIONS BURP,BURP+1 GET ALTERED AFTER BRKTST /IS EXECUTED. THEY BECOME: CDF 10; TAD I [MARG1 BURP, JMP I .+1 /GO REDETERMINE CORE SIZE BRKTST /TO MAKE ILLEGAL FIELD GIVE ? DCA SAC IOF TAD I [MTRAD DCA TRAD TAD I [MTRAD1 DCA TRAD+1 TAD I [MKEEP DCA KEEP TAD I [MPUNN DCA PUNN CLA IAC AND I [7700 DCA LINK TAD I [7700 CDF 0 AND [70 DCA DATFLD TAD DATFLD DCA INDFLD TAD [KMREC CDF 10 DCA I [MGET+4 CLA CLL CMA RAL AND I [MGET+2 DCA I [MGET+2 /REMOVE LOW-ORDER BIT FROM CONTROL WORD CDF 0 TAD KEEP JMS I [STORE TRAD TAD TRAD+1 IAC DCA GAME+1 TAD TRAD DCA GAME TAD KEEP DCA INST JMS I [IOTTST SKP JMP JMPLIP TAD TRAD DCA CAD TAD TRAD+1 DCA CAD+1 JMS I [EFFADR TAD CAD DCA FROG TAD CAD+1 DCA FROG+1 JMPLIP, JMS I [CTCTST JMP I [7605 CLA JMP I [LIP
CTCTST, 0 TAD [200 KSF STA KRS TAD [-203 SZA ISZ CTCTST JMP I CTCTST OCRLF, 0 TAD [215 JMS I [TYPN TAD [212 JMS I [TYPN CLA CMA DCA SHUT JMP I OCRLF TRAP, JMS TOTTST TAD [SHNDLR TAD WORD+1 DCA TRAD+1 TAD WORD DCA TRAD TAD [7000 DCA I [SHNDLR TAD [4 DCA WORD+1 TAD [UDNAME-MPUNN-1 DCA TEMP TAD [BRKCOD-1 DCA 10 TAD [UDNAME-1 DCA 11 TAD I 10 CDF 10 DCA I 11 CDF 0 ISZ TEMP JMP .-5 TAD I [JSBITS RTR SZL CLA TAD [5 CDF 10 TAD I [J7600 DCA I [J7600 /CHANGE JMP 7600 TO JMP 7605 IF ODT AREA NOT USED CDF 0 TAD I [JSBITS DCA JSTEMP /SAVE JSBITS BEFORE SETTING BRKPT TAD [CIF 10 JMS I [STORE WORD ISZ WORD+1 TAD [JMP I 6 JMS I [STORE WORD ISZ WORD+1 TAD [UDNAME JMS I [STORE WORD TAD JSTEMP DCA I [JSBITS /RESTORE JSBITS JMP I [READ SUBT, CML ADD, TAD WORD+1 /MODIFY CURRENT LOCATION POINTER SNA IAC /1 IS DEFAULT VALUE SZL /+ OR -? CIA /- TAD CAD+1 DCA CAD+1 JMP I [UPAR2 /AND DISPLAY LOC AND CONTENTS
*600 /MONITOR ENTERS ODT HERE LIP, HLT /ERROR. AT INIT, THE CODE AT 600 JMP I .+1 /IS CHANGED TO: ISZ PUNN; TTYTST, INIT /JMP XCONT; TSF JMP TTYOFF LIPTYP, JMS I [TYPD TRAD TAD P250 JMS I [TYPN TAD LINK TAD [260 JMS I [TYPN TAD [273 JMS I [TYPN TAD SAC JMS I [PNUM JMP I [READ JUMP, JMS TOTTST /TEST FOR 'G' WITH NO ADDRESS JMP I PNO TAD WORD DCA GAME TAD WORD+1 DCA GAME+1 TAD WORD DCA DATFLD TAD [7000 DCA INST DCA SAC DCA LINK JMP CONTX CONTIN, TAD WORD+1 CIA SNA CONTX, CMA DCA PUNN DCA I [7607 /IN CASE THERE WAS NO BREAKPOINT JMS I [LOAD /V3 TRAD /V3 DCA KEEP /V3 JMS I [OCRLF XCONT, TAD [JMP 4 JMS I [STORE TRAD CDF 10 TAD TRAD DCA I [MTRAD TAD TRAD+1 DCA I [MTRAD1 TAD KEEP DCA I [MKEEP TAD PUNN DCA I [MPUNN CDF 0 JMS I [SIM /SIMULATE THE BRKPOINTED INST HERE TAD LINK DCA I [MLINK TAD SAC DCA I [MAC TAD GAME TAD [CIF 0 DCA I [MSTCDF TAD DATFLD AND [70 TAD [CDF 0 DCA I [MCDF TAD GAME+1 DCA I [MSTADR JMS I [DUMP TAD I [JSBITS RTR SZL CLA JMP I [MSWITC JMP I [MREAD
UPAR1, JMS I [CRL JMS I [EFFADR JMP I [UPAR2 EFFADR, 0 JMS I [LOAD CAD AND [177 DCA TEMP JMS I [LOAD CAD AND [200 P250, SNA CLA JMP .+3 TAD CAD+1 AND [7600 TAD TEMP DCA TEMP JMS I [LOAD CAD AND [400 SNA CLA JMP NOIND TAD TEMP DCA CAD+1 JMS I [LOAD CAD DCA TEMP TAD CAD+1 AND P7770 TAD P7770 SZA CLA JMP NOAUTO ISZ TEMP P7770, 7770 /SPA SNA SZL CLA - NEVER SKIPS - USED TO PROTECT ISZ TAD TEMP JMS I [STORE CAD NOAUTO, TAD INDFLD AND [70 DCA CAD NOIND, TAD TEMP DCA CAD+1 JMP I EFFADR TTYOFF, AND I 0 /WASTE SOME TIME JMS I [IOTTST AND I 0 ISZ NOUGHT JMP TTYTST JMP LIPTYP /IF THE TTY FLAG ISN'T UP NOW, IT'LL NEVER GO UP NOUGHT, 0
TABL2=. REA /IGNORE BLANKS CRL2 CRL1 EXAM TRAP JUMP SEMI CONTIN WSER UPAR1 MASKX ACX LINKX DATF OPIN INDF RBOUT ADD SUBT
IFZERO 1000&. <*1000> PNUM, 0 DCA PUNN TAD [-4 DCA TEMP PN2, TAD PUNN RTL RAL DCA PUNN TAD PUNN RAL AND [7 TAD [260 JMS I [TYPN ISZ TEMP JMP PN2 TAD [240 JMS I [TYPN JMP I PNUM TYPD, 0 TAD I TYPD DCA TEMP TAD I TEMP CLL RTR RAR TAD [260 JMS I [TYPN ISZ TEMP TAD I TEMP JMS I [PNUM ISZ TYPD JMP I TYPD TYPN, 0 TLS TSF JMP .-1 CLA JMS I [CTCTST JMP I [CTRC TAD [-14 /^O? SZA CLA JMP I TYPN /NO KCC /YES JMP I [READ
WSER, JMS I [OCRLF TAD LIMLO DCA CKT+1 TAD INDFLD AND [70 DCA CKT WSER1, JMS I [LOAD CKT AND MASK CIA TAD WORD+1 SZA CLA JMP WSER2 JMS I [TYPD CKT TAD [257 JMS I [TYPN JMS I [LOAD CKT JMS I [PNUM JMS I [OCRLF WSER2, TAD CKT+1 ISZ CKT+1 NOP CIA TAD LIMHI SZA CLA JMP WSER1 JMP I [READ ACX, TAD [SAC-LINK LINKX, TAD [LINK-MASK MASKX, TAD [MASK-DATFLD DATF, TAD [DATFLD-INDFLD INDF, TAD [INDFLD DCA WORD+1 CLA CMA DCA WORD DCA TOTE TAD [257 JMS I [TYPN JMP I [EXAM
BRKCOD=. NOPUNC *UDNAME ENPUNC DCA MARG1 RAL RDF DCA 7700 TAD PODT DCA MGET+4 ISZ MGET+2 /DON'T REVERSE TAPE MOTION TO PICK UP ODT CDF CIF 0 J7600, JMP 7600 PODT, ODTREC P7603, 7603 MTRAD, 0 MTRAD1, 0 MKEEP, 0 MPUNN, 0 NOPUNC *BRKCOD+MPUNN-UDNAME+1 ENPUNC DUMP, 0 TAD STOFLG SNA CLA JMP I DUMP JMS I [SHNDLR 4200 1400 GREC, 0 HLT DCA STOFLG JMP I DUMP RBOUT, TAD [277 JMS I [TYPN TAD [240 JMS I [TYPN JMP I [READ5
IFNZRO .-1200&4000 <*1200> SIM, 0 JMS IOTTST JMS I [LOAD FROG DCA TEMP TAD TEMP DCA 0 JMS IOTTST TAD [777 CMA AND INST RAL CML SNL SMA JMP JMSJMP CML RAR DCA SOPR TAD DATFLD AND [70 TAD [CDF 0 DCA .+1 HLT TAD LINK CLL RAR TAD SAC SOPR, HLT SKP ISZ GAME+1 DCA SAC RAL DCA LINK RDF DCA DATFLD CDF CIF 0 EOSIM, TAD 0 CIA TAD TEMP EOTST, SNA CLA JMP .+3 TAD 0 JMS I [STORE FROG JMP I SIM IOTTST, 0 CLA CLL CML RTR TAD INST SZL CLA ISZ IOTTST JMP I IOTTST
JMSJMP, RTL SZL CLA JMP JMPX TAD TRAD DCA FROG TAD GAME+1 DCA 0 CLA IAC CLL JMPX, TAD FROG+1 DCA GAME+1 CML RAL /PUT -LINK IN AC (0 IF JMP, 1 IF JMS) JMP EOTST LOAD, 0 TAD I LOAD JMS I [GETADR NOP TAD I ADR CDF 0 ISZ LOAD JMP I LOAD STORE, 0 DCA LOAD TAD I STORE JMS I [GETADR ISZ STOFLG /INDICATE THAT WE'RE CHANGING THIS RECORD TAD LOAD DCA I ADR CDF 0 ISZ STORE JMP I STORE
GETADR, 0 DCA ADR TAD I ADR DCA FADR ISZ ADR TAD I ADR DCA ADR TAD FADR SNA JMP CKADR SPA CLA TAD [CDF 0 DCA .+1 FADR, 0 ISZ GETADR JMP I GETADR CKADR, TAD ADR RAL SZL SPA CLA JMP FADR+1 CLA CLL CMA RTL AND I [JSBITS DCA I [JSBITS /MODIFY THE JSW TO INDICATE ODT AREA VIOLATION TAD ADR CLL RTL RTL RAL AND [7 TAD [MTEMP+4 DCA GIREC TAD I [GREC CIA TAD GIREC SNA CLA JMP NOREAD JMS I [DUMP JMS I [SHNDLR 0200 G1400, 1400 GIREC, 0 HLT TAD GIREC DCA I [GREC NOREAD, TAD ADR AND [377 TAD G1400 DCA ADR JMP I GETADR
*1400 /INITIALIZATION CODE TO SET UP THE "MREAD" AREA IN FIELD 0 /WITH THE ODT CODE TO START UP A PROGRAM INIT, TAD [MREAD-MSTADR-2 DCA TEMP TAD [RSTCOD-1 DCA 10 TAD [MREAD-2 DCA 11 TAD I 10 DCA I 11 ISZ TEMP JMP .-3 JMS CORE /DETERMINE CORE FIELD SIZE TSF JMP .-1 JMP I [READ BRKTST, JMS CORE /GET CORE SIZE NOW THAT WE WERE TAD KLIP DCA I PLIP /SETUP LOCATIONS AT 600 TAD KLIP+1 DCA I PLIP+1 TAD KLIP+2 DCA I PLIP+2 TAD KCDF10 /JUST BREAKPOINTED IN. THEN RESTORE DCA I BURPO /LOCS AT BURP SO WE NEVER COME BACK TAD KCDF10+1 /HERE AGAIN UNTIL WE'RE SWAPPED DCA I BURP2 JMP I BURPO KCDF10, CDF 10 TAD I [MARG1 /SIMULATE LOCS AT BURP BURPO, BURP BURP2, BURP+1
RSTCOD=. NOPUNC *MREAD-1 ENPUNC SHNDLR JMS I .-1 1000 0 MTEMP+4 HLT MSWITC, TAD MLINK CLL RAR TAD MAC MCDF, CDF 0 JMP MSTCDF MAC, 0 MLINK, 0 MSTCDF, CIF 0 JMP I .+1 MSTADR, 0 NOPUNC *RSTCOD+MSTADR-MREAD+2 ENPUNC
CORE, 0 CDF 0 TAD I M1 AND COR70 SZA JMP USERC COR0, CDF 0 TAD CORSIZ RTL RAL AND COR70 TAD COREX DCA .+1 COR1, CDF TAD I CORLOC COR2, NOP DCA COR1 TAD COR2 DCA I CORLOC COR70, 70 TAD I CORLOC CORX, 7400 TAD CORX TAD CORV SZA CLA JMP COREX TAD COR1 DCA I CORLOC ISZ CORSIZ JMP COR0 COREX, CDF 0 TAD CORSIZ CLL RAL RTL USERCR, CIA DCA ZERO /STORE AWAY NEG OF FIRST NON-EXISTENT FIELD /AT ODT'S LOCATION 0 JMP I CORE CORLOC, CORX CORV, 1400 M1, -1
CORSIZ, 1 USERC, TAD L10 JMP USERCR L10, 10 KLIP, ISZ PUNN /THESE INSTRUCTIONS GO INTO 600 XCONT&177+5200 /JMP XCONT TSF PLIP, LIP LIP+1 LIP+2
*0 ZERO, ODTVERSION HLT /IN CASE BKPT WITH INTER ON STOFLG, 0 PUNN, 0 *4 /PAGE 0 LITERALS AND CELLS CIF 10 /PROTOTYPE BREAKPOINT JMP I 6 /USED BY PROGRAMS WITH JSBITS(10)=1 UDNAME /WHEN ODT IS RELOADED ON A BREAKPOINT *12 TOTE, 0 KEEP, 0 INST, 0 SHUT, -1 TRAD, 0;SHNDLR WORD, 0;0 LINK, 0 SAC, 0 CAD, 0;0 CKT, 0;0 GAME, 0;0 FROG, 0;0 TEMP, 0 JSTEMP, 0 DATFLD, 0 INDFLD, 0 MASK, 7777 LIMLO, 0 LIMHI, 7577 ADR, 0 FLDTST, TAD ZERO /LOC. 0 HAS FIRST IMAGINARY CORE FIELD TAD WORD /IF USER TRIES TO ADDRESS NON- SNL CLA /EXISTENT CORE, A ? RETURNS JMP I TEMP /HE'S OK. JMP I PNO PNO, NO TOTTST, 0 TAD TOTE TAD [6 SZA CLA ISZ TOTTST JMP I TOTTST $



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search