|
|
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: 10890 (0x2a8a)
Notes: pts_type(SC)
Names: »SIMHIN.SC«
└─⟦fce1dcf99⟧ Bits:30009704 Philips computer tape "KMD15"
└─⟦this⟧ »DLCSIM/SIMHIN.SC«
IDENT SIMHIN REL 1.1 78-04-21 870150240110 * * * LOG DC TASK * * ENTRY SIMHIN * * * EXTERNAL REFERENCES * * EXTRN MOL OWN LINE MESSAGES EXTRN MBL BEGIN OF LINE MESSAGES EXTRN MIL IN LINE MESSAGE EXTRN TAB1 CHAR TABLE 1 EXTRN PRPOOL PRINTER OCCUPIED BUFFER ADDRESSS EXTRN PROTYP PROCEDURE 0=HDLC,1=SDLC * * * 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 * * SIMHIN 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 CF A14,STAB1 SEARCH IN TABLE 1 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 * * * COMMENT CHARACTER * * ED300 EQU * CF A14,CRLF LDK A5,0 CF A14,PRTEXT LDR A5,A5 RB(Z) EDIT EJECT CM XSPACE CF A14,SPACE CF A14,GETCH GET ADDRESS FIELD RB(P) ED300 COMMENT LDR A5,A7 SAVE ADDRESS FIELD CF A14,GETCH GET CONTROL FIELD RB(P) ED300 COMMENT LDK A6,0 LDR A1,A7 ANK A1,/10 RF(Z) ED310 ADK A6,4 POLL/FINAL PRESENT ED310 LDR A1,A7 ANK A1,/01 RF(NZ) ED320 ADK A6,3 I-FRAME PRESENT (NR AND NS) LDK A4,16 LOAD 'I' RF ED400 ED320 LDR A1,A7 ANK A1,/02 RF(NZ) ED330 ADK A6,2 SUP-FRAME , NR PRESENT LDR A1,A7 ANK A1,/0C SRL A1,1 LDR A4,A1 LOAD TEXT NUMBER RF ED400 ED330 LDR A1,A7 ANK A1,/EC LDR A2,A1 XRK A1,/80 RF(NZ) ED340 LDK A4,8 LOAD 'SNRM' RF ED400 ED340 LDR A1,A2 XRK A1,/40 RF(NZ) ED350 LDK A4,10 LOAD 'DISC' RF ED400 ED350 LDR A1,A2 XRK A1,/60 RF(NZ) ED360 LDK A4,12 LOAD 'UA' RF ED400 ED360 LDR A1,A2 XRK A1,/84 ABL(NZ) ED470 UNKNOWN COMMAND LDK A4,14 LOAD 'CMDR' ED400 CF A14,EDTEX LDR A1,A6 ANK A1,1 RF(NZ) ED410 NS PRESENT CF A14,EDSPAC RF ED420 ED410 LDK A4,18 LOAD NS-TEXT CF A14,EDTEX LDR A1,A7 ANK A1,/0E MASK NS SRL A1,1 LC A1,HEXTAB,A1 CF A14,STORE LDK A1,',' CF A14,STORE ED420 LDR A1,A6 ANK A1,2 RF(NZ) ED430 NR PRESENT CF A14,EDSPAC RF ED440 ED430 LDK A4,20 LOAD NR TEXT CF A14,EDTEX LDR A1,A7 ANK A1,/E0 MASK NR SRL A1,5 LC A1,HEXTAB,A1 CF A14,STORE LDK A1,',' CF A14,STORE ED440 LDK A4,22 LOAD P/F TEXT CF A14,EDTEX LDR A2,A6 LDK A1,'0' ANK A2,4 RF(Z) ED450 NO POLL/FINAL LDK A1,'1' ED450 CF A14,STORE LDK A1,',' CF A14,STORE LDK A4,24 LOAD ADR TEXT CF A14,EDTEX LDR A4,A7 LDR A7,A5 CF A14,EDHEX LDK A1,',' CF A14,STORE ED460 CF A14,EDHEX LDR A7,A4 LD A1,PROTYP RF(NZ) ED467 SDLC LDK A3,0 SLL A7,8 LDK A4,8 ED465 LDR A2,A7 ANKL A2,/8000 ORR A3,A2 SUK A4,1 RF(Z) ED466 SRL A3,1 SLL A7,1 RB ED465 ED466 EQU * SRL A3,8 LDR A7,A3 ED467 EQU * CF A14,EDHEX ABL ED110 ED470 LDR A4,A7 UNKNOWN COMMAND LDR A7,A5 RB ED460 EJECT * * * MOVE TEXT TO PRINT BUFFER * * EDTEX LD A3,MIL,A4 GET TEXT ADDRESS LDKL A8,6 EDT10 SUKL A8,1 RF(N) EDT20 ALL MOVED LCR A1,A3 ADK A3,1 CF A14,STORE RB EDT10 EDT20 RTN A14 * * * MOVE 8 SPACE TO PRINT BUFFER * * EDSPAC LDKL A8,8 EDSP10 SUKL A8,1 RF(N) EDSP20 READY CM XSPACE CF A14,SPACE RB EDSP10 EDSP20 RTN A14 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 LDR A2,A2 RF(Z) PRT090 CWK A2,2 RF(NE) PRT095 PRT090 LDK A5,1 PRT095 EQU * 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 LDK A1,2 CW A1,PRECBL RF(E) PRLI10 NOTHING IN BUFFER 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 LKM DATA 1 LD A8,PROCCA RESTORE BUFFER ADDRESS RF(Z) PRLI05 NO BUFFER LKM DATA -8,PRPOOL RELEASE PRINTER CM PROCCA PRLI05 EQU * 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 0 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 /60,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 * * * 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