* * * LOGGING ROUTINES * * * ***************************** *** *** *** LOG-ON SUBROUTINE *** *** *** ***************************** * LOGON LDA .72 ASK FOR 72 CHARS INPUT LDB .BUFA GIVE I/O BUFFER ADDRESS JSB REED,I GET KEYBOARD INPUT SSA RECORD DELETED? JMP DLET STA INFO1 SAVE INPUT COUNT LDA .6 SET (A) TO 6 LDB .BUFA LOAD BUFFER ADDRESS JSB SETUP SET-UP CALL TO TABLE SEARCH LDA HELLO GET "HELLO" ADDRESS CCB JSB TSRCH,I SEARCH TABLE JMP INVAL NO- INVALID ACCESS LDB .BUFA RELOAD BUFFER ADDRESS ADB .3 INDEX BY 3. LDA INFO1 RELOAD CHAR INPUT COUNT ADA M6 SUBTRACT 6 JSB SETUP SET-UP CALL TO TABLE SEARCH LDA ACCT# GET ACCOUNT CODE ADDRESS LDB TBL GET TABEL LENGTH JSB TSRCH,I SEARCH TABLE JMP INVAL NOT VALID- INVALID ACCESS ALF,ALF ROTATE ACCOUNT NUMBER RAR INTO POSITION LDB USAC# LOAD USER ACCOUNT ADDRESS. ADB USN INDEX BY USER NUMBER. STA B,I SAVE USER ACCOUNT # * *** INPUT USER NAME AND I.D. * NAME LDA M11 OUTPUT MESSAGE: LDB MES1A NAME-I.D. JSB WRITE,I LDA .72 INPUT 72 CHARS LDB .BUFA GIVE INPUT BUFFER ADR JSB REED,I ASK FOR KEY BOARD INPUT SZA,RSS TEST FOR NULL INPUT JMP NAME NULL INPUT - TRY AGAIN SSA TEST FOR DELETED RECORD JMP NAME RECORD DELETED - TRY AGAIN STA INFO2 SAVE INPUT COUNT LDB BUSY LOAD BUSY FLAG SZB LOG TTY BUSY? JMP NOGO1 YES-TRY AGAIN LDA PNCMD LOAD PUNCH COMMAND STA BUSY TURN ON LOG TTY AND LTTY1 OTA 0 SET BUSY FLAG CLA OUTPUT JSB WRITE,I CR-LF ON USER TTY JSB ONOFF SET UP HEADER STA INFO3 SAVE CHARACTER COUNT * *** SET UP "TIME-ON" HEADER * LDB .10 SET CCNT TO 10 STB CCNT CHARS OUT LDB LGOM5 SET BADDR TO BUFFER STB BADDR ADDRESS -1 LDA HOUR LOAD HOURS COUNT JSB OUTIM OUTPUT HOURS COUNT LDA MINTS LOAD MINUTES COUNT JSB OUTIM OUTPUT MINUTES COUNT * *** OUTPUT LOG-ON DATA * * LDA INFO3 OUTPUT CHANNEL LDB LGOM1 INFO TO USER JSB WRITE,I LDA GTBSL OUTPUT TIME TO LDB LGOM4 USER JSB WRITE,I CLA OUTPUT JSB LCLOT,I CR-LF LDA INFO3 OUTPUT CHANNEL LDB LGOM1 INFOR TO LOG JSB LCLOT,I LDA GTBSL OUTPUT TIME-ON LDB LGOM4 TO LOG. JSB LCLOT,I LDA INFO2 LDB .BUFA OUTPUT USER MESSAGE JSB LCLOT,I TO LOG. JSB LCLIN,I CLA STA BUSY CLEAR BUSY FLAG * * OUTPUT SYSTEMS INFO * * SYIN# IS NUMBER OF LINES TO BE OUTPUTTED * SLENA IS ADDRESS OF TABLE OF LINE LENGTHS * SINA IS ADDRESS OF TABLE OF LINE ADDRESSES * * LDA SYIN# LOAD NUMBER OF LINES STA INFO1 SAVE IN COUNT LDA SLENA GET ADDRESS OF LENGTH TABLE STA INFO2 SAVE IT LDA SINA GET ADDRESS OF ADDRESS TABLE STA INFO3 SAVE IT * SYST LDA INFO2,I GET LENGTH LDB INFO3,I GET ADDRESS JSB WRITE,I OUTPUT LINE ISZ INFO2 INDEX TO NEXT LENGTH ISZ INFO3 NEXT ADDRESS ISZ INFO1 CHECK IF LAST ONE JMP SYST NO * CLEAR TIME JSB CLTM JMP ONADR,I GO TO BASIC * * *** SUBROUTINE TO SET UP "TIME-ON" HEADER * OUTIM NOP STA DTMP SAVE IN TEMP ADA M10 SUBTRACT 10 SSA,RSS POS? JMP *+3 YES-TIME>=0 LDA .48 OUTPUT A ZERO JSB OUTCR,I TO CLOCK BUFFER * LDA DTMP RELOAD CLOCK COUNT SZA ZERO? JMP *+4 NO-SET WITH OUTIN LDA .48 YES-PUT IN ZERO JSB OUTCR,I IN CLOCK BUFFER RSS JSB OUTIN,I INSERT TIME IN BUFFER JMP OUTIM,I RETURN * DTMP NOP * * INVALID ACCESS * * INVAL CLA OUTPUT A CR-LF JSB WRITE,I LDA .14 OUTPUT MESSAGE: LDB INVA "INVALID ACCESS" JSB WRITE,I JMP LOGON GO TO LOG-IN SECTION * INVA DEF *+1 ASC 7,INVALID ACCESS * *** SET UP CALL TO TABLE SEARCH * SETUP NOP CMA,SSA,RSS MAKE COUNT = -1-COUNT JMP INVAL STA CCNT BLS GET ADDRESS*2 STB BADDR SET AS BUFFER POINTER JSB GETCR,I GET A CHARACTER JMP INVAL NOT A VALID CHARACTER LDB SBUFA * STB SBPTR * INITIALIZE SYNTAX BUFFER STA SBPTR,I JMP SETUP,I RETURN * HELLO DEF *+1 OCT 0006 ASC 3,HELLO- DLET CLA,INA OUTPUT AN ESCAPE (\) LDB ESCP ON USER TTY JSB WRITE,I JMP LOGON ESCP DEF *+1 ASC 1,\ *************************** * * *** LOG-OFF ROUTINE *** * * *************************** LOGOF CLA JSB WRITE,I OUTPUT CR-LF LDA BUSY LOAD BUSY FLAG SZA IS LOG TTY BUSY? JMP NOGO2 YES- PRINT BUSY MESSAGE LDA PNCMD NO- LOAD PUNCH COMMAND STA BUSY SET BUSY FLAG LTTY2 OTA 0 OUTPUT MOTOR CONTROL COMMAND JSB ONOFF SET UP USER XX ACCOUNT XX STA INFO3 SAVE CHARACTER COUNT LDB LGOM1 OUTPUT IT JSB WRITE,I ON USER TTY * *** OUTPUT CONNECT TIME TO USER * LDA .14 SET CHARACTER OUT COUNT STA CCNT TO 14. LDB TIME1 GET CONNECT TIME STORE ADDRESS STB BADDR LDA MINA GET MINUTES ADDRESS ADA USN INDEX BY USER NUMBER LDA A,I LOAD MINUTES JSB OUTIN,I OUTPUT CONNECT TIME TO BUFFER LDA CCNT THEN OUTPUT LDB CONTA CONNECT TIME JSB WRITE,I ON USER TTY * * *** GLAD TO BE OF SERVICE, BYE * LDA GTBSL LOAD MESSAGE LENGTH LDB GTBSA LOAD ADDRESS JSB WRITE,I OUTPUT MESSAGE ON USER TTY * *** OUTPUT LOG-OFF ON LOG TTY * CLA OUTPUT CR-LF JSB LCLOT,I LDA INFO3 GET USER # ACCOUNT # LDB LGOM1 JSB LCLOT,I LDA CCNT GET CONNECT TIME COUNT LDB CONTA LOAD MESSAGE START ADRESS JSB LCLOT,I OUTPUT CONNECT TIME ON LOG TTY * * CLA OUTPUT CR-LF JSB LCLOT,I JSB CLTM CLEAR TIME * JSB LCLIN,I CLA STA BUSY CLEAR BUSY FLAG JMP LOGON * *** THIS SUBROUTINE SETS UP THE HEADER: * *** USER # ACCOUNT # * * ONOFF NOP LDA USN LOAD USER NUMBER IOR .48 ADD ON ASCII # BITS ALF,ALF POSITION TO UPPER WORDS IOR BLANK ADD ON SPACE CHAR STA LGOM2,I PUT IN BUFFER LDA .16 SET OUTPUT COUNT TO 16 CHARS STA CCNT LDB LGOM3 FETCH ACCOUNT # STORE ADDRESS STB BADDR LDB USAC# GET ADDRESS OF ACCOUNT TABLE ADB USN INDEX BY USER NUMBER LDA B,I LOAD ACTUAL USER ACCOUNT NUMBER JSB OUTIN,I ADD IT TO CHARACTER STRING LDA CCNT LOAD CHARACTERS IN COUNT JMP ONOFF,I RETURN * LGOM1 DEF *+1 ASC 9,CHAN: ACCOUNT LGOM2 DEF LGOM1+4 LGOM3 DEF LGOM1+8 LGOM4 DEF *+1 ASC 13,TIME ON: / / LGOM5 DEF LGOM4+5 * NOGO1 CLA JSB WRITE,I LDB NOGOA LDA NOGOL LOAD LENGTH OF BUSY MESSAGE JSB WRITE,I OUTPUT MESSAGE JMP NAME NOGO2 LDB NOGOA LDA NOGOL LOAD LENGTH JSB WRITE,I JMP PEXMA,I NOGOL DEC 19 NOGOA DEF *+1 ASC 10,LOG BUSY, TRY AGAIN * * * CLEAR TIME SUBROUTINE * * CLTM NOP CLA A=0 LDB SECA ADB USN STA B,I CLEAR CONNECT SEC COUNTER INA A=1 LDB MINA ADB USN STA B,I MINUTE COUNTER = 1 JMP CLTM,I RETURN * *************************** *** *** *** INTERRUPT TIMER *** *** *** *************************** * TIMR NOP * STA SAVAC STB SAVBC LDB #USRS LOAD -NUMBER OF USERS STB CHN SET FOR COUNTER LDB .60 SET FOR 60 SEC=1 MIN LDA SECA GET SECOND TABLE ADDRESS INA ADD 1 STA SEC SAVE ADDRESS LDA MINA GET MINUTE TABLE ADDRESS INA ADD 1 STA MIN SAVE IT CLA SET A=0 * INC. ISZ SEC,I INCREMENT SECONDS CPB SEC,I IS IT 60? JMP MINUT YES NEXTU ISZ SEC NEXT USER ISZ MIN ISZ CHN JMP INC. * ISZ SEKS INCREMENT SECONDS COUNTER CPB SEKS 60 SECONDS ELAPSED? RSS YES-INDEX MINUTES COUNT JMP STM-2 NO-RETURN * STA SEKS RESET SECONDS TO ZERO ISZ MINTS INCREMENT MINUTES COUNT CPB MINTS 60 MINUTES ELAPSED? RSS YES-INDEX HOUR COUNT JMP STM-2 NO-RETURN * STA MINTS RESET MINUTES TO ZERO ISZ HOUR INCREMENT HOURS COUNT LDB ?24 LOAD (B)=24 CPB HOUR 24 HOURS ELAPSED? RSS YES-PROCESS DAY JMP STM-2 RETURN * STA HOUR RESET HOURS TO ZERO ISZ DATE INDEX DATE ISZ FLG2A,I SET DAY CHANGE FLAG * * * RESTORE REGISTERS AND RETURN * LDA SAVAC LDB SAVBC STM STC 0,C SET CONTROL ON CLOCK JMP TIMR,I RETURN * * MINUT ISZ MIN,I INCREMENT MINUT COUNTER STA SEC,I CLEAR SECONDS COUNT JMP NEXTU * * * * FLG2A DEF FLAG2 SEKS NOP MINTS NOP HOUR NOP DATE NOP ?24 DEC 24 DBUF DEF LGOM4+10 PNCMD OCT 110000 * BUSY NOP USAC# DEF * USER ACCOUNTS-1 BSS 4 USER ACCOUNTS CONTA DEF *+1 ASC 7,CONNECT TIME: BSS 2 TIME1 DEF *-3 * * GTBSL DEC 26 GTBSA DEF *+1 ASC 13,GLAD TO BE OF SERVICE, BYE MIN NOP SEC NOP CHN NOP SAVAC NOP SAVBC NOP .14 DEC 14 .16 DEC 16 .60 DEC 60 MINA DEF * NOP NOP NOP NOP SECA DEF * NOP NOP NOP NOP #USRS NOP * * * MES1A DEF *+1 OCT 6412 ASC 5,NAME-I.D. LCLOT ABS OUTL * LCLIN ABS READL SKP * * * * * SINGLE CHARACTER SUBROUTINES * * * USER # 1 * * CHIN1 NOP LIA 0 LOAD CHARACTER AND M177 MASK PARITY CPA RTA IS IT A CARRIAGE RETURN? JMP CHIN1,I YES- RETURN TO P+1 OTB 0 NO, OUTPUT TTY BOARD COMMAND STC 0,C START INPUT JMP CHIN1,I RETURN * * CHOT1 NOP OTB 0 OUTPUT COMMAND OTA 0 OUTPUT CHARACTER STC 0,C START OUTPUT JMP CHOT1,I * * USER # 2 * CHIN2 NOP LIA 0 LOAD CHARACTER AND M177 MASK PARITY CPA RTA IS IT A CARRIAGE RETURN? JMP CHIN2,I YES- RETURN TO P+1 OTB 0 NO, OUTPUT TTY BOARD COMMAND STC 0,C START INPUT JMP CHIN2,I RETURN * * CHOT2 NOP OTB 0 OUTPUT COMMAND OTA 0 OUTPUT CHARACTER STC 0,C START OUTPUT JMP CHOT2,I * * USER # 3 * CHIN3 NOP LIA 0 LOAD CHARACTER AND M177 MASK PARITY CPA RTA IS IT A CARRIAGE RETURN? JMP CHIN3,I YES- RETURN TO P+1 OTB 0 NO, OUTPUT TTY BOARD COMMAND STC 0,C START INPUT JMP CHIN3,I RETURN * * CHOT3 NOP OTB 0 OUTPUT COMMAND OTA 0 OUTPUT CHARACTER STC 0,C START OUTPUT JMP CHOT3,I * *** USER # 4 * CHIN4 NOP LIA 0 LOAD CHARACTER AND M177 MASK PARITY BIT CPA RTA IS IT A CR? JMP CHIN4,I YES-RETURN TO P+1 OTB 0 NO-OUTPUT TTY BOARD COMMAND STC 0,C START INPUT JMP CHIN4,I RETURN * CHOT4 NOP OTB 0 OUTPUT TTY COMMAND OTA 0 OUTPUT CHARACTER STC 0,C START OUTPUT JMP CHOT4,I RETURN * * LOG TTY * CHINL NOP LIA 0 LOAD CHARACTER AND M177 MASK PARITY CPA RTA IS IT A CARRIAGE RETURN? JMP CHINL,I YES- RETURN TO P+1 OTB 0 NO, OUTPUT TTY BOARD COMMAND STC 0,C START INPUT JMP CHINL,I RETURN * * CHOTL NOP OTB 0 OTA 0 STC 0,C JMP CHOTL,I * * RTA OCT 15 PTBFA DEF PTBUF PTBUF BSS 3 22255-80006 D