|
|
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: 14298 (0x37da)
Notes: pts_type(SC)
Names: »PRT.SC«
└─⟦b6546aa17⟧ Bits:30009689 Philips computer tape "600325"
└─⟦this⟧ »REMIT2/PRT.SC«
IDENT PRT REL 2.1*79-10-20 870150540210
=1, ODD BUFFER ADDRESS
REL 2.1 79-05-23
*************************************************************************
*
* P R T : MODULE PRINTING MAIN FRAME MESSAGES ADDRESSED TO THE
* GENERAL PRINTER. LOCAL HARDCOPY PRINTING IS ALSO
* CARRIED OUT IN THIS MODULE
*
**********************************************************************
*
EJECT
*
*
* ENTRY PARAMETERS
*
*
ENTRY SNBUSY
ENTRY PRINT
ENTRY ICREAD
*
*
* EXTERNAL PARAMETERS
*
*
EXTRN UPDATE UPDATE BUFFER CONTENTS
EXTRN RFMDUP REPLACE FM & DUP CHARS
EXTRN GTRBUF
EXTRN DCGETM
EXTRN RELBUF
EXTRN DC1INQ
EXTRN DC2INQ
EXTRN REQTIM
*
EXTRN I:EVA0 CREDIT EVALUATION ROUTINE
*
EXTRN EMULA START
EJECT
*
*************************************************
*
* CONDITIONAL ASSEMBLY PARAMETERS
*
*****************************************
OFLIN EQU 1 OFFLINE HANDLING POSSIBLE IF ::= 1
DCLIN EQU 1 NUMBER OF MAIN FRAMES 81-2)
COPCMD EQU 1 COPY COMMAND IF := 1
*
* EQUATES
*
*
*
TIMDC EQU 300 DC TIME OUT VALUE: 30 S
ESC EQU /1B
SBA EQU /11
NULL EQU /7F NULL CHARACTER
NEWLIN EQU /7E NEW LINE CHARACTER
ENDMES EQU /7D END MESSAGE CHAR
FORMFD EQU /7C FORMFEED CHAR.
FMCH EQU /60
DUPCH EQU /7B
EJECT
*
*
* EQUATES
*
* COMMON EQU FOR ECB HANDLING
*
ECBBA EQU 2
ECBRL EQU 4
ECBEL EQU 6
ECBRC EQU 8
ECBCW EQU 10
*
*
* CREDIT USED EQU
*
*
* ECB REL. ADDRESSES
*
*
DIS EQU 20
*
ECBDC EQU -DIS-14
IFT DCLIN=2
ECBDC2 EQU ECBDC-DIS
ECBICR EQU ECBDC2-DIS
XIF
IFF DCLIN=2
ECBICR EQU ECBDC-DIS
XIF
IFT COPCMD=1
ECBICW EQU ECBICR-DIS
ECBPR EQU ECBICW-DIS
XIF
IFF COPCMD=1
ECBPR EQU ECBICR-DIS
XIF
*
*
* BASE ADDRESS FOR TCA AND ECB
*
TCABAS EQU A11
CREBAS EQU A13 ECB
*
* CONFIG DATA 'CB1' REL ADDRESSES
*
NBRKBV EQU 0 NUMBER OF KB/VDUS
NBRGTP EQU NBRKBV+2 NUMBER OF GTPS
*
MF1KBV EQU NBRGTP+2 DV ADDRESSES KB/VDU MF #1
MF1GTP EQU MF1KBV+16 DV ADDRESSES GTPS MF # 1
IFT DCLIN=2
MF2KBV EQU MF1GTP+16
MF2GTP EQU MF2KBV+16
XIF
EJECT
*
* TCA REL. ADDRESSES
*
TCT01 EQU 0
PRINTER EQU TCT01+2
BVDU EQU PRINTER+2 VDU SCREEN BUFFER
PCURS EQU BVDU+1920 CURSOR ADDRESS , BINARY
ATTRIB EQU PCURS+2 LAST ATTRIBUTE CHAR
CURATT EQU ATTRIB+2
WCC EQU CURATT+2 WCC/CCC CHARACTER
KBINH EQU WCC+2 KEYBOARD INHIBIT INDICATOR
LINCNT EQU KBINH+2 LINE COUNTER
DCLENG EQU LINCNT+2 DC READ EFFECTIVE LENGTH
ICWORK EQU DCLENG+2 WORK FIELD INTERTASK COMM
INTATT EQU ICWORK+2 INTENSITY ATTRIBUTE
OFFFLG EQU INTATT+2 OFFLINE FLAG
COPNO EQU OFFFLG+2 HARDCOPY TASK ID
CCC EQU COPNO+2 COPY COMMAND CHARACTER
MAIN EQU CCC+2 MAIN FRAME
MODE EQU MAIN+2 INSERT MODE SWITCH
KEYS EQU MODE+2 KEY LOCK STATUS
ECBDCC EQU KEYS+2 ECB ADDRESS LAST READ DC
ECBBLK EQU ECBDCC+2 ECBS FOR MULTIPLE WAIT &C
RDMORE EQU ECBBLK+10 BRANCH ADDRESS NEXT READ KB
*
PRBUSY EQU -2 PRINTER BUSY. OCCUPIES BOOLEAN VARAIBLE
EJECT
*
*
LBVDU EQU 1920 1920 CHARACTER DISPLAY
LPAGE EQU 48 LINES ON ONE PAGE
GTPLIN EQU 112 LINELENGTH MAX 112 CHAR. 'NL' ORDER IN
* BUFFER DETERMINES PRINT LINE LENGTH
*
EJECT
PRINT EQU *
CF A14,I:EVA0
LDR TCABAS,A9 LOAD ASSEM TCA BASE
LDR* A4,TCABAS REL TASK NO
AD A4,6,CREBAS 'CB1' ADDRESS
*************************************************
*
* TRANSFER PARAMETER FOR MAIN-FRAME #1
*
*************************************************
LC A1,MF1GTP-1,A4
ANK A1,/FF
LDKL A8,ECBDC
CF A14,EMULA
IFT DCLIN=2
*************************************************
*
* TRANSFER PARAMETER FOR MAIN-FRAME #2
*
*************************************************
LC A1,MF2GTP-1,A4
ANK A1,/FF
LDKL A8,ECBDC2
CF A14,EMULA TRANSFER PARAMETER
XIF
EJECT
*
* RELATIVE POS IN ECBBLK
ICR EQU 2
DC1 EQU 4
DC2 EQU 6
*
IFF DCLIN=2
LDK A1,2
XIF
IFT DCLIN=2
LDK A1,3
XIF
ST A1,ECBBLK,TCABAS
PRI100 EQU *
CM ICWORK,TCABAS
LD A1,ECBBLK+DC1,TCABAS
RF(NZ) PRI110 PENDING
CF A14,DC1INQ TEST IF ANY MESSAGE, NO WAIT
PRI110 EQU *
IFT DCLIN=2
LD A1,ECBBLK+DC2,TCABAS
RF(NZ) PRI120 PENDING
CF A14,DC2INQ TEST IF ANY MESSAGE MF # 2, NO WAIT
XIF
PRI120 EQU *
LD A1,ECBBLK+ICR,TCABAS
RF(NZ) PRI150 PENDING
LDKL A6,LBVDU REQ LENGTH
LDKL A3,BVDU BUFFER
ADR A3,TCABAS ADDRESS
CF A14,ICREAD READ INTERTASK NO WAIT
ST A8,ECBBLK+ICR,TCABAS
PRI150 EQU *
LDKL A7,ECBBLK
ADR A7,TCABAS
LKM
DATA 7 MULTIPLE WAIT
CW A8,ECBBLK+ICR,TCABAS
RF(E) ICRINP INPUT FROM INTERTASK
ST A8,ECBDCC,TCABAS SAVE ECB ADDRESS FOR CURRENT READ
CF A14,DCINP INPUT FROM DC
RB PRI100
EJECT
*
* READ INTERTASK, NOWAIT
*
* A3 = BUFFER ADDRESS
* A6 = REQ LENGTH
*
ICREAD EQU *
LDKL A8,ECBICR
ADR A8,CREBAS
LDKL A1,-1
CF A14,REQTIM
ST A6,ECBRL,A8 REQ LENGTH
ST A3,ECBBA,A8
LDK A7,2 READ NOT ADDRESSED, NO WAIT
LKM
DATA 1
RTN A14
EJECT
****************************************************************
*
* INPUT FROM DC
*
****************************************************
*
DCINP EQU *
CF A14,ICABOR ABORT INTERTASK READ
LDR A7,A7
RF(Z) DCIN10 NOT COMPLETED
IM ICWORK,TCABAS SET FLAG
RF ICRINP TAKE CARE OF INTERTASK INPUT
OR BUFFER WILL BE DESTROYED IN 'UPDATE'
DCIN10 EQU *
CF A14,GTRBUF GET RECEIVE BUFFER
LD A8,ECBDCC,TCABAS
CF A14,DCGETM READ MESSAGE
IFF DCLIN=2
CM ECBBLK+DC1,TCABAS
XIF
IFT DCLIN=2
CW A8,ECBBLK+DC2,TCABAS
RF(E) DCIN20 MF # 2
CM ECBBLK+DC1,TCABAS
RF DCIN30
DCIN20 EQU *
CM ECBBLK+DC2,TCABAS
XIF
DCIN30 EQU *
LD A1,ECBEL,A8 EFFECTIVE LENGTH
ST A1,DCLENG,TCABAS SAVE IT IN SAVE AREA
CF A14,UPDATE MOVE FROM DC TO PRINTER BUFFER;
IFT COPCMD=1
LD A1,ICWORK,TCABAS
RF(NZ) DCIN90 COPY COMMAND
XIF
LD A1,WCC,TCABAS WRITE CONTROL CHARACTER
ST A1,CCC,TCABAS COPY IT
CF A14,COPY COPY ON PRINTER
DCIN90 EQU *
CF A14,SNBUSY
RTN A14
EJECT
*
* ABORT INTERTASK READ
*
ICABOR EQU *
LDK A7,0
CM ECBBLK+ICR,TCABAS
LDKL A8,ECBICR
ADR A8,CREBAS
LKM
DATA 10
RTN A14
EJECT
*
* INPUT FROM INTERTASK
*
ICRINP EQU *
CM ECBBLK+ICR,TCABAS
LDK A1,X'38' PRINT BIT, 80 CHAR./LINE
ST A1,CCC,TCABAS SAVE AS COPY CONTROL CHARACTER
CF A14,COPY PRINT ON HARDCOPY DEVICE
LD A1,ICWORK,TCABAS
RB(NZ) DCIN10 TAKE CARE OF DC INPUT
RB PRI100
EJECT
*
*
* PRINT THE CONTENTS OF THE PRINTER BUFFER
*
*
LINLEN DATA /0028,/4050 LINE LENGTHS /40, 64 AND 80 CHARS
*
*
COPY LDKL A8,ECBPR
ADR A8,CREBAS PRINTER ECB
LD A7,ECBBA,A8
SUR A3,A3 =1
SC A3,0,A7 =1
SC A3,1,A7 =1
ADK A7,2 PRINt BUFFER ADDRESS
SUR A9,A9 RESET BUFFER INDEX
LDKL A4,BVDU
ADR A4,TCABAS
LD A2,CCC,TCABAS GET CCC/CCC
ANK A2,/08
RF(NZ) COP100 START PRINTER BIT SET
COPRTN RTN A14
COP100 EQU *
LD A2,CCC,TCABAS
ANK A2,/30
ABL(Z) COP111 NL DETERMINES LINE LENGTH
SRL A2,4
LDK A6,0
LC A6,LINLEN,A2 GET LINE LENGTH
COP110 CWR A9,A6
RF(L) COP120
COP115 CF A14,PRLINE LINE FULL: PRINT IT
RB COP110
COP120 CWK A3,LBVDU
ABL(NL) COP300 PRINT LAST LINE
LCR A2,A4
ANK A2,/7F RESET DISPLAY BIT
SCR A2,A4
CWK A2,/20
RF(NL) COP130
COP123 EQU *
ANK A2,6
XRK A2,6
RF(Z) COP150
COP125 LDK A2,/20 REPLACE ATTR BY SPACE
RF COP140
COP130 CWK A2,NULL
RB(E) COP125 REPLACE NULL BY SPACE
COP140 EQU *
CWK A2,/7D
RF(NE) COP141
LDK A2,/39
COP141 CWK A2,/7E
RF(NE) COP142
LDK A2,/35
COP142 EQU *
CF A14,RFMDUP FM OR DUP ?
COP143 CWK A2,/61 LOWER CASE CHARACTER ??
RF(L) COP144 NO!!
SUK A2,/20
COP144 SCR A2,A7
ADK A3,1
ADK A4,1
ADK A7,1
ADKL A9,1
RB COP110
COP150 LDK A2,/20 SPACE INSTEAD OF TEXT
SCR A2,A7
ADK A3,1
ADK A4,1
ADK A7,1
ADKL A9,1
CWR A9,A6
RF(L) COP160
CF A14,PRLINE LINE FULL : PRINT IT
COP160 LCR A2,A4
ANK A2,/7F
CWK A2,/20
RB(L) COP123 ATTRIBUTE
RB COP150 STILL IN PROTECTED FIELD
*
*
* LINE LENGTH AS DEFINED BY NL CHARACTER
*
*
* THE FIRST INSTR. ORIGINALLY HAD LABEL 'COP200'.
*
*
COP111 EQU *
CWK A9,GTPLIN
RF(L) COP220 BUFFER NOT FULL
COP210 CF A14,PRLINE PRINT LINE
ABL COP111
COP220 CWK A3,LBVDU
RF(NL) COP300 PRINT LAST LINE
LCR A2,A4
ANK A2,/7F
SCR A2,A4 RESET DISPLAY BIT
CWK A2,/20
RF(NL) COP230
COP223 ANK A2,/6 ATTRIBUTE CHARACTER
XRK A2,6
RF(Z) COP250 PROTECTED FIELD
COP225 LDK A2,/20 REPLACE ATTRIBUTE BY SPACE
RF COP240
COP230 CWK A2,NULL
RB(E) COP225 NULL IS REPLACED BY SPACE
COP240 EQU *
CWK A2,/7B
RF(NE) COP241
LDK A2,/2A
COP241 SCR A2,A7
ADK A3,1
ADK A4,1
ADK A7,1
CWK A2,NEWLIN
RB(E) COP210 NL CHAR: PRINT LINE
CWK A2,ENDMES
RF(E) COP300 UND MESSAGE: PRINT LAST LINE
ADKL A9,1
ABL COP111
COP250 LDK A2,/20 REPLACE TEXT BY SPACE
SCR A2,A7
ADK A3,1
ADK A4,1
ADK A7,1
ADKL A9,1
CWR A9,A6
RF(L) COP260
CF A14,PRLINE LINE FULL : PRINT IT
COP260 LCR A2,A4
ANK A2,/7F
CWK A2,/20
RB(L) COP223 ATTRIBUTE FOUND
RB COP250 STILL IN PROTECTED FIELD
COP300 LDR A9,A9
ABL(Z) COPRTN ALL PRINTED
CF A14,PRLINE PRINT LAST LINE
ABL COPRTN
EJECT
*
*
* PRINT ONE LINE ON PRINTER
*
* A9=NUMBER OF CHAR IN PRINT BUFFER
*
*
PRLINE IM LINCNT,TCABAS COUNT NBR OF PRINTLINES
RF(N) PRL100 NOT END OF PAGE
LDK A7,LPAGE END OF PAGE
NGR A7,A7
ST A7,LINCNT,TCABAS RESET LINE COUNTER
PRL100 LD A7,ECBBA,A8
LC A2,2,A7 GET FIRST CHAR IN BUFFER
ANK A2,/7F
CWK A2,FORMFD
RF(NE) PRL200 NOT FORM FEED
LDK A2,/20
SC A2,2,A7 REPLACE LF BY SPACE
PRL110 EQU *
LD A1,LINCNT,TCABAS FORM FEED
LDK A7,2
ST A7,ECBRL,A8 SET REQ LENGTH TO 2 FOR NEW LINE
PRL120 LDK A7,/86 STD WRITE
LKM
DATA 1
ADK A1,1 COUNT LINES
RB(N) PRL120
LDK A7,LPAGE
NGR A7,A7
ST A7,LINCNT,TCABAS RESET LINE COUNTER
PRL200 ADKL A9,2 ADJUST LENGTH FOR BUFFER CW
ST A9,ECBRL,A8 REQ LENGTH
LDK A7,/86 STD WRITE
LKM
DATA 1
LDK A7,0
LD A7,ECBBA,A8
SUR A9,A9 =1
SCR A9,A7 =1
SC A9,1,A7 =1
ADK A7,2 RESTORE BUFFER ADDRESS
RTN A14
EJECT
*
*
* SET STATUS NOT BUSY FOR DC
*
*
SNBUSY EQU *
LD A8,ECBDCC,TCABAS
CM ECBCW,A8
LDK A7,/B8 SET STATUS ORDER
LKM
DATA 1
RTN A14
*
*
END