*** SET LOG-ON INITIALIZATION INSTRUCTIONS * LDA ZCODE LOAD LIST BASE ADDRESS ADA .1 INDEX BY 1 LDA A,I LOAD INST ADDRESS LDA A,I LOAD INSTRUCTION (OTB) LDB ZTTYB LOAD STORE ADDRESS BASE ADB ZCHN# INDEX BY CHANNEL # STA B,I SET INSTRUCTION (OTB) * LDB ZBTB3 LOAD TABLE BASE ADR ADB ZCHN# INDEX BY USER # LDB B,I LOAD DESTINATION ADR STA B,I STORE INSTRUCTION LDB ZBTB5 ADB ZCHN# LDB B,I STA B,I * LDA ZCODE LOAD LIST BASE ADDRESS ADA .6 INDEX BY 6 LDA A,I LOAD INST ADR LDA A,I LOAD INSTRUCTION (CLC) LDB ZTTYC LOAD STORE BASE ADR ADB ZCHN# INDEX BY USER # STA B,I SET (CLC) INSTRUCTION * ISZ ZCHN# INDEX TO NEXT CHANNEL ISZ ZNUSR DONE? JMP ZLOP2 NO-CONTINUE * *** CALL FOR CARD READER I/O ADDRESS * CLA CLEAR CARD READER IN SYSTEM FLAG STA CFLG$ JSB CRLND GCRIO JSB CRLND OUTPUT CR-LF LDA Z22 OUTPUT MESSAGE: LDB ZAG31 "CARD READER IN SYSTEM?" JSB ZLOT LDA M11 OUTPUT MESSAGE: LDB ZA9 "YES OR NO?" JSB ZLOT LDA Z20 * INPUT LDB ZBUF * RESPONSE JSB ZLIN * SZA,RSS NULL INPUT? JMP GCRIO YES - TRY AGAIN LDA ZBUF,I GET FIRST TWO CHARS INPUT CPA ZNO =NO? JMP NOCRD NO CARD READER SET NEW LWAM CPA ZYES =YES? RSS YES - GET CARD READER I/O ADR JMP GCRIO INVALID RESPONSE - TRY AGAIN * JSB CRLND OUTPUT CR-LF LDA ZM25 OUTPUT MESSAGE: LDB ZAG32 "CARD READER I/O JSB ZLOT ADDRESS?" JSB ZGADR GET CHANNEL NUMBER STB ZI/O SAVE FOR I/O MODIFICATION LDA ZI/O8 SET CARD READER STA B,I INTERRUPT INSTRUCTION LDA ZM4 SET CARD READER LDB ZLS10 I/O INSTRUCTIONS JSB ZSETI * LDA ZLS10 SET CLC LDA A,I IN POWER FAIL LDA A,I STA CFRDR,I * LDA JMP$1 PUT INSTR STA ERRO.,I IN 545B * LDA JMP$2 PUT INSTR STA RUN1,I IN 2141B * LDA JMP$3 PUT INSTR STA RUN2,I IN 2142B LDA JMP$4 LOAD INSTR LDB $RUN$ LOAD ADDRESS TO MFASE IN BASIC ADB .2 INDEX BY 2 STA B,I MODIFY INSTRUCTION LDB $LST$ LOAD LINK TO LIST IN BASIC ADB .10 INDEX BY 10 STA B,I MODIFY INSTRUCTION ADB Z129 INDEX ADDRESS STA B,I MODIFY INSTRUCTION ADB .3 INDEX ADDRESS STA B,I MODIFY INSTRUCTION LDA X6 LOAD LINK WORD LDB $FS3$ ADB M10 SUBTRACT 10 STA B,I MODIFY INSTRUCTION INB INDEX STORE ADDRESS STA B,I MODIFY INSTRUCTION STA CFLG$ SET CARD RDR IN SYSTEM FLAG JMP GPI/O-1 GET PHOTORDR CHANNEL NUMBER * NOCRD CLA DELETE CHECK CARD READER STA ?CARD,I INSTRUCTION IN MONITOR CCA DELETE "CARD" COMMAND STA ?CRD?,I LDA LWACR GET NEW LAST WORD MEM STA LWAFC SET NEW LWAM * *** GET PHOTOREADER I/O ADDRESS * JSB CRLND GPI/O JSB CRLND OUTPUT CR-LF LDA Z23 LDB ZA8 JSB ZLOT LDA M11 LDB ZA9 JSB ZLOT LDA Z20 INPUT LDB ZBUF RESPONSE JSB ZLIN SZA,RSS NULL INPUT? JMP GPI/O YES-TRY AGAIN LDA ZBUF,I GET INPUT CHARS CPA ZYES =YES? JMP ZPRIO GET PHOTOREADER I/O ADDRESS CPA ZNO =NO? RSS YES-DELETE PHOTOREADER DRIVER JMP GPI/O * LDA ZCIT1+6 DELETE CHECK PHOTOREADER STA ?PHTO,I INSTRUCTION IN MONITOR CCA DELETE "PTAPE" COMMAND STA ?PHO?,I LDA CFLG$ CARD READER IN SYSTEM? SZA JMP LCCWT YES - DO NOT RESET LWAM LDA PTINS,I DELETE CHECK LOCALL TTY INPUT STA ZPTZ,I LDA LWPRD GET NEW LAST WORD MEM STA LWAFC UPDATE LAST WORD JMP LCCWT ASK FOR CODE TABLE * ZPRIO JSB CRLND OUTPUT CR-LF LDA M25 OUTPUT MESSAGE: LDB ZA12 "PHOTO READER I/O JSB ZLOT ADDRESS?" JSB ZGADR GET CHANNEL NUMBER STB ZI/O SAVE FOR I/O MODIFICATION LDA ZI/O7 SET PHOTOREADER STA B,I INTERRUPT INSTRUCTION LDA ZG.6 SET PHOTOREADER LDB ZLST4 I/O INSTRUCTIONS JSB ZSETI LDA ZLST4 SET CLC RDR LDA A,I IN POWER FAIL LDA A,I STA PFRDR,I RESTART * *** LOAD AND CONSTRUCT CODE WORD TABLE * LCCWT JSB CCWT,I * *** ENTER AND CONSTRUCT INFORMATION TABLE * ZCIT1 LDA ZLNTT LOAD TABLE LENGTH ADR STA ZLNTH SAVE FOR STORE POINTER LDB ZADRT LOAD TABLE ADDRESS ADR STB ZSTOR SAVE FOR STORE POINTER LDB FWAFC GET FIRST WORD AVAIL MEM. STB ZCODE SAVE AS STORE POINTER * CLA SET LINES "IN" STA ZCNT COUNT TO ZERO LDB M11 SET MAX LINE COUNTER STB ZCHN# TO MINUS 11. * JSB CRLND JSB CRLND OUTPUT CR-LF LDA .24 OUTPUT MESSAGE: LDB ZAG20 "ENTER INFORMATION TABLE" JSB ZLOT * ZCIT2 JSB CRLND OUTPUT CR-LF LDA .72 INPUT 72 CHARS LDB ZBUF INTO ZBUF JSB ZLIN LDB ZBUF,I GET FIRST TWO CHARS INPUT CPB /E END-OF-INPUT? JMP ZCIT3 YES - COMPRESS TABLE SZA,RSS NULL INPUT? JMP ZCIT2+1 YES - GET NEXT LINE ISZ ZCHN# TOO MANY LINES? JMP *+6 NO - ACCEPT NEW LINE JSB CRLND OUTPUT ERROR MESSAGE: LDA Z18 LDB ZAG21 "# LINES EXCEEDS 10" JSB ZLOT JMP ZCIT1 RE-ENTER TABLE * *** PROCESS NEW LINE * ISZ ZCNT INDEX LINE COUNTER STA ZLNTH,I SAVE LINE LENGTH STA *+8 SAVE IN CALL TO MOVE STACK LDB ZCODE LOAD STORE ADDRESS STB ZSTOR,I SAVE IN ADR TABLE ADA B INDEX (A) BY (B) STA ZCODE SET NEW F.W.A.M. LDA ZBUF SOURCE ADR IN (A) LDB ZSTOR,I DEST ADR IN (B) JSB ?MOVE,I MOVE STACK OF NOP (NOP) ELEMENTS * ISZ ZLNTH INDEX ISZ ZSTOR TABLE POINTERS JMP ZCIT2 GET NEXT ENTRY * ZCIT3 LDB ZCNT LOAD LINES-IN COUNT CMB,INB,SZB,RSS IF ZERO THEN- JMP ZCIT1 ASK AGAIN FOR INPUT STB Z?LNT,I STORE-# LINES IN LOG-IN LDB ZCNT RELOAD # LINES STB *+5 SAVE FOR MOVE STACK LDA ZLNTT LOAD (A)=SOURCE ADR LDB ZCODE (B)=DEST ADR STB Z?TBL,I SAVE START ADR IN LOG-IN JSB ?MOVE,I MOVE STACK OF LENGTH NOP VALUES LDB ZCODE LOAD FWAM ADB ZCNT UPDATE BY VALUE IN (ZCNT) STB ZCODE SAVE RESULT STB Z?ADR,I SAVE ADR TABLE ADR IN LOG-IN LDA ZCNT LOAD # LINES INPUT AND STA *+3 STORE FOR MOVE-STACK LDA ZADRT LOAD (A)=SOURCE ADR JSB ?MOVE,I MOVE STACK OF ADDRESS NOP VALUES LDB ZCODE RESET FIRST ADB ZCNT WORD AVAILABLE STB FWAFC FREE CORE. * JSB ZFCOR,I LDB ZSEXZ SET START ADR STB 3B IN 3B JSB CRLND JMP #PT#,I PUNCH SYSTEM TAPE * * *** SUBROUTINE TO CONVERT CHARACTER TO OCTAL * ZNBER NOP AND M177 MASK TO LOWER 6-BITS ADA ZN60 INDEX BY -OCT60 STA B SAVE IN (B) BRS,BRS SHIFT OUT BITS BRS (0-2) SZB,RSS TEST FOR ZERO REMAINDER ISZ ZNBER SET "SUCCESS" EXIT JMP ZNBER,I RETURN * *** SUBROUTINE TO MODIFY THE INSTRUCTIONS IN A LIST * ZSETI NOP STA ZCNT SAVE # WORDS TO MODIFY STB ZBUFF SAVE BASE ADDRESS ZLP1 LDB ZBUFF,I LOAD ADDRESS LDA B,I ACCESS INSTRUCTION AND D100 MASK OFF BITS (0-5) IOR ZI/O ADD ON CHANNEL NUMBER STA B,I RESTORE INSTRUCTION ISZ ZBUFF INDEX TO NEXT WORD IN LIST ISZ ZCNT DONE? JMP ZLP1 NO JMP ZSETI,I YES-RETURN * * *** SUBROUTINE TO INPUT CHANNEL # FROM TTY * ZGADR NOP LDA Z20 SET TO INPUT 20 CHARS LDB ZBUF GIVE I/O BUFFER ADDRESS JSB ZLIN GET INPUT FROM TTY * CPA .2 2 CHARS INPUT? JMP ZTWO YES-PROCESS * ZERRR JSB CRLND LDA Z20 OUTPUT MESSAGE: LDB ZAG2 "INVALID I/O JSB ZLOT ADDRESS" JSB CRLND GET NEW INPUT JMP ZGADR+1 * ZTWO LDA ZBUF,I LOAD FIRST CHARS ALF,ALF FROM TTY INPUT JSB ZNBER BUFFER. JMP ZERRR NOT A NUMBER SZA,RSS TEST IF ZERO JMP ZERRR NOT A NUMBER ALF,RAR POSITION NUMBER STA ZI/O SAVE IT LDA ZBUF,I GET NEXT CHAR JSB ZNBER IS IT A NUMBER? * JMP ZERRR NOT A NUMBER IOR ZI/O ADD ON PREVIOUS NUMBER STA B PUT IN B-REG JMP ZGADR,I RETURN * *** FIRST WORD AVAILABLE MEMORY TABLE * ZZFWA DEF * DEF SK2 DEF SK3 DEF SK4 DEF FINIS * *** LINKS TO LISTS OF INSTRUCTIONS TO BE MODIFIED * ZLST1 DEF ZDLS1 ZLST2 DEF ZDLS2 ZLST3 DEF ZDLS3 ZLST4 DEF ZDLS4 ZLS10 DEF ZDL10 * *** LINKS TO MESSAGE PRINT TABLE * ZAG1 DEF ZZG1 ZAG2 DEF ZZG2 ZAG3 DEF ZZG3 ZAG4 DEF ZZG4 ZA5 DEF ZZG5 ZA6 DEF ZZG5+4 ZA7 DEF ZZG7 ZA8 DEF ZZG8 ZA9 DEF ZZG9 ZA12 DEF ZZ12 ZAG20 DEF ZZG20 ZAG21 DEF ZZG21 ZAG31 DEF ZZG31 ZAG32 DEF ZZG32 * *** CONSTANTS AND DATA DECLARATIONS * A EQU 0 B EQU 1 ZBTB1 DEF * JSB I/O2,I JSB I/O3,I JSB I/O4,I JSB I/O5,I * ZBTB2 DEF * DEF ZDLS5 DEF ZDLS6 DEF ZDLS7 DEF ZDLS8 ZBTB3 DEF * DEF LTTY4+1 DEF LTTY4+2 DEF LTTY4+3 DEF LTTY4+4 * ZBTB4 DEF * DEF LTTY5+1 DEF LTTY5+2 DEF LTTY5+3 DEF LTTY5+4 * ZBTB5 DEF * DEF LTTY4+6 DEF LTTY4+8 DEF LTTY4+10 DEF LTTY4+12 * ZG.6 DEC -6 Z5 DEC 5 .11 DEC 11 Z13 DEC 13 Z20 DEC 20 .24 DEC 24 Z18 DEC 18 Z21 DEC 21 Z22 DEC 22 Z23 DEC 23 Z129 DEC 129 ZM12 DEC -12 ZM20 DEC -20 ZM22 DEC -22 ZM24 DEC -24 CHARS IN MESG. ZM27 DEC -27 ZN60 OCT -60 CFLG$ NOP ZCHN# NOP ZNUSR NOP - # USERS ZPNU NOP + # USERS ZI/O NOP ZCNT NOP ZSTOR NOP PTINS DEF CKL+8 CTBL$ DEF CHTBA ZPTZ DEF .LD.-1 Z&USR DEF &USR Z#USR DEF #USRS ZLCHN NOP ZCODE NOP ZBUFF NOP ZLNTH NOP ZNTRY NOP ZBUF DEF *+1 BSS 72 /E ASC 1,/E ZNO ASC 1,NO ZYES ASC 1,YE ZTTY[ DEF ZT[ ZTTYB DEF SRITB+1 ZTTYC DEF ZCLCZ ZINS1 JSB I/O1,I ZI/O6 JSB I/O6,I LOG TTY INT CELL INST ZI/O7 JSB I/O7,I PHOTRDR INT CELL INST ZI/O8 JSB I/O8,I CARD READER INT CELL INST ?CARD DEF CKPTR ?PHTO DEF CKPTR+1 ?CRD? DEF CA ?PHO? DEF PT PFRDR DEF ?PFLI CFRDR DEF ?PFLI+1 FWAFC DEF STCKS LWAFC DEF LWTSB-1 LWACR DEF .HSPR-1 LWPRD DEF MSSG-1 * ZADRT DEF *+1 DEFINES INFO TABLE TEMP ADRS BSS 10 ZLNTT DEF *+1 DEFINES INFO TABLE TEMP LNGTS BSS 10 Z?LNT DEF SYIN# Z?TBL DEF SLENA Z?ADR DEF SINA ZFCOR DEF ZFRC ZSEXZ DEF .SEX. #PT# DEF ZABST * ERRO. DEF ..ERR RUN1 DEF RN.$. RUN2 DEF RN.$.+1 JMP$1 JMP X4,I JMP$2 JMP X1,I JMP$3 JMP X2,I JMP$4 JMP X6,I CCWT DEF CDTBL ZM25 DEC -25 ZM4 DEC -4 HED ***** TIME-SHARE BASIC DRIVERS AND MONITOR ***** .SEX. CLC 0 JSB CRLND * *** INITIALIZE CLOCK * ?I1 JSB CRLND OUTPUT CR-LF LDA ZTI1 OUTPUT MESSAGE: LDB ZTA1 "YEAR?" JSB ZLOT LDA .4 INPUT RESPONSE OF YEAR LDB PTBA? JSB ZLIN CPA .2 TWO CHARS INPUT? RSS YES - INPUT O.K. JMP ?I1 NO - TRY AGAIN * LDB PTBA? CONVERT TO JSB DVERT BINARY JMP ?I1 INVALID INPUT LDA PTBA?,I STA YBUF,I * ?I2 JSB CRLND OUTPUT CR-LF LDA ZTI2 OUTPUT MESSAGE: LDB ZTA2 "MONTH?" JSB ZLOT LDA .4 INPUT RESPONSE OF MONTH LDB PTBA? JSB ZLIN CPA .2 TWO CHARS INPUT? RSS YES - INPUT O.K. JMP ?I2 NO - TRY AGAIN * LDB PTBA? CONVERT TO JSB DVERT BINARY JMP ?I2 INVALID INPUT SZA,RSS MONTH=0? JMP ?I2 YES-REJECT ADA ZM13 SUBTRACT 13 SSA,RSS MONTH<13? JMP ?I2 NO-REJECT LDA PTBA?,I STA MBUF,I * ?I3 JSB CRLND OUTPUT CR-LF LDA ZTI3 OUTPUT MESSAGE: LDB ZTA3 "DAY"? JSB ZLOT LDA .4 INPUT RESPONSE OF DAY LDB PTBA? JSB ZLIN DAY BUFFER CPA .2 TWO CHARS INPUT? RSS YES - INPUT O.K. JMP ?I3 NO - TRY AGAIN LDB PTBA? CONVERT TO JSB DVERT BINARY JMP ?I3 INVALID INPUT * STA DATE?,I NO-SAVE DATE LDA PTBA?,I 22255-80003 D xx