|
|
DataMuseum.dkPresents historical artifacts from the history of: Philips Data Systems |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Philips Data Systems Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 11044 (0x2b24)
Notes: pts_type(SC)
Names: »LOGIN.SC«
└─⟦8ac270cab⟧ Bits:30009705 Philips computer tape "LINSIM8-2"
└─⟦this⟧ »LINSIM82/LOGIN.SC«
└─⟦fce1dcf99⟧ Bits:30009704 Philips computer tape "KMD15"
└─⟦this⟧ »LINSIM/LOGIN.SC«
IDENT LOGIN REL 1.1 82-09-29 870150040110 #2 UPDATE #0 77.01.20 JES * * * LOG DC TASK * * ENTRY LOGIN * * * EXTERNAL REFERENCES * * EXTRN MOL OWN LINE MESSAGES EXTRN MBL BEGIN OF LINE MESSAGES EXTRN TAB1 CHAR TABLE 1 EXTRN TAB2 CHAR TABLE 2 EXTRN PRPOOL PRINTER OCCUPIED BUFFER ADDRESSS EXTRN TAB3 EXTRN TAB4 EXTRN CODE EXTRN ETX EXTRN ETB EXTRN SYN EXTRN PRFLAG * * * EQUATES * * * * * * RELATIVE ECB EQUATES * * ECBBA EQU 2 ECBRL EQU 4 ECBEL EQU 6 ECBRC EQU 8 ECBCW EQU /A * RES 20 A14 STACK STB EQU *-2 PROCCA DATA 0 ADDRESS TO PRINTER OCCUPIED BUFFER EJECT * * * INITIALIZE SYSTEM * * A9=BUFFER POINTER * A10=CHARACTER COUNTER * * LOGIN LDKL A14,STB LOAD STACK BASE SUR A10,A10 RESET CHARACTER COUNTER LDK A1,2 ST A1,PRECBL EMPTY PRINTER BUFFER LDK A1,1 ST A1,XSPACE SET SPACE INDICATOR EJECT * * * EDIT CHARACTERS FROM LINE * * EDIT CF A14,GETCH GET CHARACTER ED000 EQU * RF(P) ED300 COMMENT ANK A7,/FF CWK A7,/FF RF(E) ED110 MARK HOLD: PRINT THIS BUFFER CW A7,ETX RF(E) ED150 ETX: READ LRC CW A7,ETB RF(E) ED150 ETB: READ LRC LD A1,CODE RF(NZ) ED200 EBCDIC CF A14,STAB1 SEARCH IN TABLE 1 RF(Z) ED100 FOUND CF A14,STAB2 SEARCH IN TABLE 2 RF(Z) ED100 FOUND ED050 EQU * CF A14,EDHEX NOT FOUND: EDIT IT HEXADECIMAL ED100 LDK A1,100 CW A1,PRECBL RB(G) EDIT LINE NOT FULL ED110 CF A14,PRLINE PRINT LINE RB EDIT ED150 EQU * LD A1,CODE RF(NZ) ED250 EBCDIC CF A14,STAB2 PUT ETX OR ETB IN BUFFER ED160 EQU * CF A14,GETCH GET LRC RB(NZ) ED000 COMMENT OR POLL ANK A7,/FF CF A14,EDHEX EDIT LRC HEXADECIMAL RB ED100 ED200 EQU * CF A14,STAB3 RB(Z) ED100 FOUND CF A14,STAB4 RB(Z) ED100 FOUND RB ED050 EDIT HEXA ED250 EQU * CF A14,STAB4 CF A14,GETCH GET CRC RB(NZ) ED000 COMMENT OR POLLCOUNTER ANK A7,/FF CF A14,EDHEX RB ED160 * * * COMMENT CHARACTER * * ED300 EQU * CF A14,CRLF CF A14,PRTEXT RB EDIT EJECT * * * PRINT TEXT ON PRINTER * * A7 CONTAINS CONTROL CHARACTER * * PRTEXT LDR A6,A7 SAVE CHARACTER CF A14,PRLINE RELEASE PRINT BUFFER ADR A6,A6 DOUBLE FOR INDEXING ANK A6,/FF LDR A2,A6 ANK A2,/7F LD A3,MOL,A2 GET TEXT ADDRESS CWR A2,A6 RF(NE) PRT100 OWN LINE TEXT LD A3,MBL,A2 BEGINNING OF LINE PRT100 LDR* A4,A3 GET TEXT LENGTH CWK A1,100 RF(G) PRT130 INVALID LENGTH: SKIP TEXT ADK A3,2 SKIP LENGTH PRT110 SUK A4,1 RF(N) PRT120 ALL MOVED LCR A1,A3 ADK A3,1 CF A14,STORE RB PRT110 PRT120 ANK A6,/80 RF(Z) PRT130 BEGINNING OF LINE CF A14,PRLINE PRINT OWN LINE PRT130 RTN A14 EJECT * * * PRINT ONE LINE ON PRINTER * * PRLINE EQU * LDK A1,2 CW A1,PRECBL RF(E) PRLI10 NOTHING IN BUFFER LDK A1,/2B SET CONTROL WORD ST A1,PRBUF LDK A7,1 LKM DATA -7,PRPOOL OCCUPIE PRINTER ST A8,PROCCA SAVE BUFFER ADDRESS LDK A7,/86 STD WRITE AND WAIT LDKL A8,PRECB LDK A1,'P' PRINTER ENABLED CW A1,PRFLAG RF(E) PRLI02 NO,SKIP IT LKM DATA 1 PRLI02 EQU * LDK A1,2 ST A1,PRECBL CM PRBUF SET CONTROL-WORD = 0 CF A14,CRLF LDK A7,/86 STANDARD WRITE 'CRLF' LDKL A8,PRECB LDK A1,'P' PRINTER ENABLED CW A1,PRFLAG RF(E) PRLI03 NO,SKIP IT LKM DATA 1 PRLI03 EQU * LD A8,PROCCA RESTORE BUFFER ADDRESS RF(Z) PRLI05 NO BUFFER LKM DATA -8,PRPOOL RELEASE PRINTER CM PROCCA PRLI05 EQU * LDK A1,2 ST A1,PRECBL RESET LENGTH LDK A1,1 ST A1,XSPACE SET SPACE INDICATOR PRLI10 RTN A14 PRECB DATA /31,PRBUF,2,0,0,0 PRECBL EQU PRECB+4 REQUESTED LENGTH PRBUF DATA /2B CONTROL WORD RES 60 EJECT * * * GET ONE CHARACTER FROM LINE TO A7 * CR=0 IF NORMAL CHARACTER * CR=1 IF COMMENT CHARACTER * * GETCH SUKL A10,1 RF(NN) GETCH1 FETCH FROM BUFFER LDK A7,/81 READ NEW BUFFER LDKL A8,LGECB LKM DATA 1 LD A10,ECBEL,A8 GET EFFECTIVE LENGTH SUKL A10,1 LD A9,ECBBA,A8 GET BUFFER ADDRESS GETCH1 LCR A7,A9 LOAD CHARACTER ADKL A9,1 INCREMENT POINTER LC A1,ECBRC,A8 ADKL A14,4 SKIP STACK FOR RETURN ANK A1,/20 RF(NZ) GETCH3 COMMENT OR POLL COUNTER ABR* A14 RETURN WITH NORMAL CHARACTER EJECT GETCH3 SUK A1,1 SET CR ABR* A14 RETURN * LGECB DATA /61,LGBUF,20,0,0,0 LGBUF RES 20 EJECT * * * EDIT CHAR FROM A7 IN HEXADECIMAL FORM * * EDHEX CF A14,SPACE LDK A1,'/' CF A14,STORE LDR A1,A7 SRL A1,4 LC A1,HEXTAB,A1 CF A14,STORE 1ST CHAR LDR A1,A7 ANK A1,/F LC A1,HEXTAB,A1 CF A14,STORE 2ND CHAR CF A14,SPACE SPACE RTN A14 HEXTAB DATA '0123456789ABCDEF' EJECT * * * STORE CHAR FROM A1 IN PRINT BUFFER * * STORE LD A2,PRECBL SC A1,PRBUF,A2 IM PRECBL LDK A1,0 ST A1,XSPACE RTN A14 EJECT * * * EDIT CHARACTER DECIMAL FROM A7 * * EDDEC LDK A4,0 RESET INDEX EDD100 LDK A1,'0' ASCII ZERO AT START EDD110 CW A7,DECADE,A4 RF(L) EDD200 NO MORE SUBTRACTIONS SU A7,DECADE,A4 SUBTRACT AND INCREMENT ADK A1,1 RB EDD110 EDD200 CF A14,STORE STORE DIGIT ADK A4,2 CWK A4,10 RB(NE) EDD100 NEXT DIGIT RTN A14 CONVERSION DONE DECADE DATA 10000,1000,100,10,1 EJECT * * * SEARCH FOR A7 CHAR IN TABLE 1 * * * CR=1 IF NOT FOUND ELSE * CR=0 AND CORRESPONDING CODE IS STORED * * STAB1 LDK A2,3 SET INDEX LDK A1,1 CR IF NOT FOUND STAB10 CW A2,TAB1 RF(G) STAB30 END OF TABLE CC A7,TAB1,A2 RF(E) STAB20 FOUND ADK A2,2 RB STAB10 TRY NEXT STAB20 LC A1,TAB1-1,A2 GET CORRESPONDING CODE CF A14,STORE AND STORE IT LDK A1,0 STAB30 LC A2,2,A14 SET CR FOR RETURN ANK A2,/FC ANK A1,3 ADR A1,A2 SC A1,2,A14 RTN A14 EJECT * * * SEARCH FOR A7 CHAR IN TABLE 3 * * * CR=1 IF NOT FOUND ELSE * CR=0 AND CORRESPONDING CODE IS STORED * * STAB3 LDK A2,3 SET INDEX LDK A1,1 CR IF NOT FOUND STA10 CW A2,TAB3 RF(G) STA30 END OF TABLE CC A7,TAB3,A2 RF(E) STA20 FOUND ADK A2,2 RB STA10 TRY NEXT STA20 LC A1,TAB3-1,A2 GET CODE CF A14,STORE AND PRINT IT LDK A1,0 STA30 LC A2,2,A14 SET CR FOR RETURN ANK A2,/FC ANK A1,3 ADR A1,A2 SC A1,2,A14 RTN A14 EJECT * * * SEARCH FRO A7 CHAR IN TABLE 2 * * CR=1 IF NOT FOUND * CR=0 IF FOUND AND CORRESPONDING TEXT IN BUFFER * * STAB2 LDK A4,3 SET INDEX LDK A1,1 CR IF NOT FOUND STAB40 CW A4,TAB2 RF(G) STAB80 END OF TABLE CC A7,TAB2,A4 RF(E) STAB50 FOUND ADK A4,4 RB STAB40 NEXT CHAR STAB50 CF A14,SPACE LD A3,TAB2+1,A4 GET STRING ADDRESS LDR* A4,A3 GET LENGTH ADK A3,2 STAB60 SUK A4,1 RF(N) STAB70 LCR A1,A3 MOVE TEXT ADK A3,1 CF A14,STORE RB STAB60 STAB70 CF A14,SPACE SPACE LDK A1,0 STAB80 RB STAB30 SET CR FOR RETURN RTN A14 EJECT * * * SEARCH FRO A7 CHAR IN TABLE 4 * * CR=1 IF NOT FOUND * CR=0 IF FOUND AND CORRESPONDING TEXT IN BUFFER * * STAB4 LDK A4,3 SET INDEX LDK A1,1 CR IF NOT FOUND STA40 CW A4,TAB4 RF(G) STA80 END OF TABLE CC A7,TAB4,A4 RF(E) STA50 FOUND ADK A4,4 RB STA40 NEXT CHAR STA50 CF A14,SPACE LD A3,TAB4+1,A4 GET STRING ADDRESS LDR* A4,A3 GET LENGTH ADK A3,2 STA60 SUK A4,1 RF(N) STA70 LCR A1,A3 PRINT TEXT ADK A3,1 CF A14,STORE RB STA60 STA70 CF A14,SPACE SPACE LDK A1,0 STA80 RB STA30 RTN A14 EJECT * * * PUT SPACE IN BUFFER * * SPACE LD A1,XSPACE RF(NZ) SPA100 LDK A1,/20 CF A14,STORE IM XSPACE SPA100 RTN A14 XSPACE DATA 0 SPACE INDICATOR * * * CRLF IN BUFFER * * CRLF EQU * CF A14,SPACE LDK A1,/0D CF A14,STORE LDK A1,/0A CF A14,SPACE RTN A14 ** * END