|
|
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: 14276 (0x37c4)
Notes: pts_type(SC)
Names: »DCADDR.SC«
└─⟦7b35573c9⟧ Bits:30009690 Philips computer tape "600402"
└─⟦this⟧ »M:AF/DCADDR.SC«
IDENT DCADDR REL 11.0 81-01-26 870105041100 * *********************************************** * * PHILIPS TERMINAL SYSTEM PTS * * DC:ADR : ADDRESS TRANSLATION ROUTINES FOR * DATA COMMUNICATION SOFTWARE * ************************************************ * EJECT * *********************************************** * * PROGRAM DESCRIPTION * * FOLLOWING SUBROUTINES CAN BE FOUND IN THIS MODULE : * * FNDDNA : FINDS A DTE NETWORK ADDRESS FROM A * SYMBOLIC DTE ADDRESS * * FNDDNT : FINDS A DTE NETWORK ADDRESS FROM A * SYMBOLIC DTE ADDRESS OF A SPECIFIED TYPE * * GETDNA : TRANSLATES A SYMBOLIC DTE ADDRESS INTO A * DTE NETWORK ADDRESS * * GETDNT : TRANSLATES A SYMBOLIC DTE ADDRESS OF A * SPECIFIED TYPE INTO A DTE NETWORK ADDRESS * * GETDSA : TRANSLATES A DTE NETWORK ADDRESS INTO A * SYMBOLIC DTE ADDRESS * EJECT * * GETDST : TRANSLATES A DTE NETWORK ADDRESS OF A SPECIFIED * TYPE INTO A SYMBOLIC DTE ADDRESS * * GETSNA : TRANSLATES A SYMBOLIC DTE ADDRESS AND A * SYMBOLIC SUB-ADDRESS INTO A NETWORK SUB-ADDRESS * * GETSNT : TRANSLATES A SYMBOLIC DTE ADDRESS OF A * SPECIFIED TYPE AND A SYMBOLIC SUB-ADDRESS * INTO A NETWORK SUB-ADDRESS * * GETSSA : TRANSLATES A SYMBOLIC DTE ADDRESS AND A * NETWORK SUB-ADDRESS INTO A SYMBOLIC SUB-ADDRESS * * GETSST : TRANSLATES A SYMBOLIC DTE ADDRESS OF A SPECIFIED * TYPE AND A NETWORK SUB-ADDRESS INTO A SYMBOLIC * SUB-ADDRESS * ********************************************************** * EJECT * * ENTRIES * ENTRY FNDDNA ENTRY FNDDNT ENTRY GETDNA ENTRY GETDNT ENTRY GETDSA ENTRY GETDST ENTRY GETSNA ENTRY GETSNT ENTRY GETSSA ENTRY GETSST * * * EXTERNALS * EXTRN SCTDCT DC TABLE DISP. IN SYSTEM CONTROL TABLE EXTRN SAVE8 SAVE REG. A1-A8 ON SYSTEM STACK EXTRN RETUR8 RELOAD A1-A8 AND RETURN EXTRN IHRET8 RELOAD A1-A8 AND RETURN INHIBIT * EJECT * * CONDITIONAL ASSEMBLY PARAMETERS * X:A EQU 1 SUB-ADDRESSING SUPPORTED ? SUBADR EQU X:A 0=NO 1=YES * CPU852 EQU 0 EXTENDED INSTRUCTION SET IF ZERO * * * SYSTEM EQUATES * DS EQU 0 ENTRY INDICATORS DN EQU 1 SS EQU 2 SN EQU 3 * EJECT * * * ROUTINES TO GET A SYMBOLIC DTE ADDRESS FROM A * DTE NETWORK ADDRESS (AND TYPE) * ************************************************* * * INPUT PARAMETERS : * A1 = LENGTH OF DTE NETWORK ADDRESS IN SEMI-OCTETS * A2 = BUFFER CONTAINING DTE NETWORK ADDRESS * A3 = TYPE (ONLY FOR GETDST ENTRY) * * CALLING SEQUENCES : * CF A15,GETDSA * CF A15,GETDST * * OUTPUT PARAMETERS : * A1 = SYMBOLIC DTE ADDRESS(OR -1 IF INVALID ADDRESS OR TYPE) * A3 = TYPE INDEX (IF GETDST ENTRY,OTHERWISE NOT CHANGED) * GETDSA EQU * IFT CPU852=0 MSR 8,A15 SAVE REG. A1-A8 XIF IFT CPU852=1 CF A15,SAVE8 SAVE REG. A1-A8 XIF SUR A3,A3 CLEAR TYPE INDICATOR RF GET090 GETDST EQU * IFT CPU852=0 MSR 8,A15 XIF IFT CPU852=1 CF A15,SAVE8 XIF EJECT * GET090 EQU * LDK A4,DS ENTRY INDICATOR GET100 EQU * LDKL A5,-1 RESET TYPE COUNTER LDKL A8,SCTDCT POINTER TO DC ADDRESS TABLE ENTRY GET110 EQU * LDR* A8,A8 MORE ENTRIES ? RF(Z) GET330 NO ADK A3,0 TYPE SPECIFIED ? RF(Z) GET120 NO CW A3,4,A8 TYPE FOUND ? RB(NE) GET110 NO ADK A5,1 STEP TYPE COUNTER * * TEST ON ENTRY * GET120 EQU * ADK A4,DS GETDSA/GETDST ENTRY ? RF(NZ) GET220 NO * * TEST ON ADDRESS LENGTH * CC A1,6,A8 SAME ? RB(NE) GET110 NO,TAKE NEXT * EJECT * * GET ADDRESS PARAMETERS * ADK A1,1 CONVERT.. SRC A1,1 ..LENGTH.. LDR A4,A1 ..INTO.. ANK A1,/7F ..OCTETS LDR A6,A8 GET ADDRESS WHERE TO.. ADK A6,7 ..FIND LAST OCTET OF.. ADR A6,A1 ..NETWORK ADDRESS ADR A2,A1 POINTER TO LAST OCTET IN BUFFER LDR A7,A1 SAVE LENGTH * * COMPARE DTE NETWORK ADDRESS * GET130 EQU * SUK A1,1 LAST ONE ? RF(N) GET160 YES SUK A2,1 NEXT OCTET SUK A6,1 POINTER TO NEXT OCTET LCR A4,A6 GET ONE DC ADDRESS TABLE OCTET CCR A4,A2 COMPARE WITH DRIVER BUFFER RB(E) GET130 EQUAL * EJECT * * COMPARED OCTETS NOT EQUAL * GET140 EQU * SUR A7,A1 FIRST ONE ? SUK A7,1 . RF(NZ) GET150 NO ADK A4,0 SEMI-OCTET BOUNDARY ? RF(N) GET150 NO ANK A4,/F0 MASK DRIVER SEMI-OCTET LCR A1,A2 GET DC ADDRESS TABLE OCTET ANK A1,/F0 MAKE IT SEMI-OCTET CWR A4,A1 EQUAL ? RF(E) GET160 YES GET150 EQU * LC A1,6,A8 RELOAD LENGTH LDK A4,DS RELOAD ENTRY INDICATOR RB GET110 TRY NEXT * * COMMON EXIT ROUTINE * GET160 EQU * LD A1,2,A8 GET SYMBOLIC DTE ADDRESS GET170 EQU * LDR A3,A3 TYPE TESTED ? RF(Z) GET180 NO ST A5,12,A15 SAVE TYPE COUNTER IN A3 GET180 EQU * ST A1,16,A15 SAVE A1 IFT CPU852=0 ABL RETUR8 RETURN TO CALLER XIF IFT CPU852=1 LD A1,18,A15 GET PSW ANK A1,/40 ENABLE MODE ? ABL(NZ) RETUR8 YES ABL IHRET8 RETURN INHIBIT TO CALLER XIF * EJECT * * * ROUTINES TO FIND OR GET A DTE NETWORK ADDRESS FROM A * SYMBOLIC NETWORK ADDRESS (AND TYPE) * ****************************************************** * * INPUT PARAMETERS : * A1 = SYMBOLIC DTE ADDRESS * A2 = BUFFER (ONLY IF GET... ENTRY) * A3 = TYPE (ONLY IF ...DNT ENTRY) * * CALLING SEQUENCES : * CF A15,FNDDNA * CF A15,FNDDNT * CF A15,GETDNA * CF A15,GETDNT * * OUTPUT PARAMETERS : * A1 = LENGTH OF DTE NETWORK ADDRESS IN SEMI-OCTETS * (OR -1 IF ILLEGAL SYMBOLIC DTE ADDRESS OR TYPE) * A2 = NEXT FREE ADDRESS IN BUFFER (IF GET... ENTRY) * A2 = POINTER TO NETWORK ADDRESS (IF FND... ENTRY) * A3 = TYPE INDEX (IF ...DNT ENTRY,OTHERWISE NOT CHANGED) * FNDDNT EQU * IFT CPU852=0 MSR 8,A15 SAVE REG. A1-A8 XIF IFT CPU852=1 CF A15,SAVE8 SAVE REG. A1-A8 XIF SUR A2,A2 CLEAR BUFFER ADDRESS RF GET210 * EJECT * FNDDNA EQU * IFT CPU852=0 MSR 8,A15 XIF IFT CPU852=1 CF A15,SAVE8 XIF SUR A2,A2 CLEAR BUFFER ADDRESS RF GET200 GETDNT EQU * IFT CPU852=0 MSR 8,A15 XIF IFT CPU852=1 CF A15,SAVE8 XIF RF GET210 GETDNA EQU * IFT CPU852=0 MSR 8,A15 XIF IFT CPU852=1 CF A15,SAVE8 XIF GET200 EQU * SUR A3,A3 CLEAR TYPE INDICATOR GET210 EQU * LDK A4,DN SET ENTRY INDICATOR RB GET100 RUN * EJECT * * TEST ON SYMBOLIC ADDRESS * GET220 EQU * CW A1,2,A8 FOUND ? RB(NE) GET110 NO * * GET ADDRESS PARAMETERS * LDK A1,0 LC A1,6,A8 GET DTE NETWORK ADDRESS LENGTH LDR A7,A1 GET LENGTH ADK A7,1 CONVERT LENGTH.. SRC A7,1 ..INTO.. ANK A7,/7F ..OCTETS LDR A6,A8 GET ADDRESS WHERE TO FIND.. ADK A6,7 ..NETWORK ADDRESS IFT SUBADR=1 * * TEST ON ENTRY * SUK A4,SS ...DNA/...DNT ENTRY ? RF(NN) GET310 NO XIF LDR A2,A2 NETWORK ADDRESS WANTED ? RF(NZ) GET240 YES LDR A2,A6 * EJECT * * SAVE PARAMETERS * GET230 EQU * ST A2,14,A15 SAVE NEXT ADDRESS RB GET170 EXIT * * GET NETWORK ADDRESS * GET240 EQU * SUK A7,1 READY ? RB(N) GET230 YES LCR A4,A6 MOVE ONE.. SCR A4,A2 ..OCTET ADK A2,1 ADK A6,1 RB GET240 TAKE NEXT * IFT SUBADR=1 EJECT * * * ROUTINES TO GET A SYMBOLIC SUB-ADDRESS FROM A * SYMBOLIC DTE ADDRESS (OF A SPECIFIED TYPE) AND A * NETWORK SUB-ADDRESS * **************************************************** * * INPUT PARAMETERS : * A1 = SYMBOLIC DTE ADDRESS * A2 = NETWORK SUB-ADDRESS * A3 = TYPE (ONLY IF GETSST ENTRY) * * CALLING SEQUENCE : * CF A15,GETSSA * CF A15,GETSST * * OUTPUT PARAMETERS : * A1 = SYMBOLIC SUB-ADDRESS(OR -1 IF ILLEGAL SYMBOLIC * DTE ADDRESS,TYPE OR NETWORK SUB-ADDRESS) * A3 = TYPE INDEX (ONLY IF GETSST ENTRY,OTHERWISE NOT CHANGED) * GETSST EQU * IFT CPU852=0 MSR 8,A15 XIF IFT SUBADR=1 IFT CPU852=1 CF A15,SAVE8 SAVE REG. A1-A8 XIF IFT SUBADR=1 RF GET300 * EJECT * GETSSA EQU * IFT CPU852=0 MSR 8,A15 XIF IFT SUBADR=1 IFT CPU852=1 CF A15,SAVE8 XIF IFT SUBADR=1 SUR A3,A3 CLEAR TYPE INDICATION GET300 EQU * LDK A4,SS SET ENTRY INDICATOR GET305 EQU * RB GET100 RUN * * TEST ON ENTRY * GET310 EQU * ADR A6,A7 GET # OF ENTRIES IN LCR A7,A6 ..SUB-ADDRESS TABLE LDR A4,A4 RF(NZ) GET410 NOT GETSSA/GETSST ENTRY * * GET SYMBOLIC SUB-ADDRESS * LDK A1,/30 RESET SYMBOLIC SUB-ADDRESS INDICATOR GET320 EQU * ADK A6,1 NEXT ENTRY CCR A2,A6 COMPARE NETWORK SUB-ADDRESSES RB(E) GET170 EXIT ! ADK A1,1 STEP SYMBOLIC SUB-ADDRESS SUK A7,1 MORE ENTRIES ? RB(P) GET320 YES XIF * EJECT * * INCORRECT PARAMETERS * IFT SUBADR=0 GETSNA EQU * DUMMY ENTRIES GETSNT EQU * GETSSA EQU * GETSST EQU * XIF GET330 EQU * LDKL A1,-1 ERROR INDICATION RB GET180 EXIT * IFT SUBADR=1 EJECT * * * ROUTINES TO GET A NETWORK SUB-ADDRESS FROM A * SYMBOLIC DTE ADDRESS (OF SPECIFIED TYPE) AND A * SYMBOLIC SUB-ADDRESS * *************************************************** * * INPUT PARAMETERS : * A1 = SYMBOLIC DTE ADDRESS * A2 = SYMBOLIC SUB-ADDRESS * A3 = TYPE (ONLY IF GETSNT ENTRY) * * CALLING SEQUENCES : * CF A15,GETSNA * CF A15,GETSNT * * OUTPUT PARAMETERS : * A1 = NETWORK SUB-ADDRESS(OR -1 IF ILLEGAL SYMBOLIC * DTE ADDRESS,TYPE OR SYMBOLIC SUB-ADDRESS) * A3 = TYPE INDEX (ONLY IF GETSNT ENTRY,OTHERWISE NOT CHANGED) * GETSNT EQU * IFT CPU852=0 MSR 8,A15 SAVE REG. A1-A8 XIF IFT SUBADR=1 IFT CPU852=1 CF A15,SAVE8 SAVE REG. A1-A8 XIF IFT SUBADR=1 RF GET400 * EJECT * GETSNA EQU * IFT CPU852=0 MSR 8,A15 XIF IFT SUBADR=1 IFT CPU852=1 CF A15,SAVE8 XIF IFT SUBADR=1 SUR A3,A3 CLEAR TYPE INDICATOR GET400 EQU * LDK A4,SN SET ENTRY INDICATOR RB GET305 RUN * * GET NETWORK SUB-ADDRESS * GET410 EQU * ANK A2,/FF ONLY ONE BYTE SIGNIFICANT SUK A2,/2F RB(NP) GET330 INVALID SYMBOLIC SUB-ADDRESS SUR A7,A2 SYMBOLIC SUB-ADDRESS WITHIN TABLE ? RB(N) GET330 NO ADR A6,A2 SET POINTER(INDEX STARTS WITH /30) LCR A1,A6 GET NETWORK SUB-ADDRESS RB GET170 EXIT * XIF * END