|
|
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: 14094 (0x370e)
Notes: pts_type(SC)
Names: »PRT.SC«
└─⟦fce1dcf99⟧ Bits:30009704 Philips computer tape "KMD15"
└─⟦this⟧ »IBM3270/PRT.SC«
IDENT PRT REL 1.2 78-09-15 870150540120
*************************************************************************
*
* 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 HARDCP
ENTRY SNBUSY
ENTRY PRINT
*
*
* EXTERNAL PARAMETERS
*
*
EXTRN DCRED READ DC-LINE
EXTRN UPDATE UPDATE BUFFER CONTENTS
EXTRN REL:BU RELEASE RECEIVE BUFFER
*
EXTRN I:EVA0 CREDIT EVALUATION ROUTINE
*
EXTRN EMULA START
EJECT
*
*
* 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.
*
*
* COMMON EQU FOR ECB HANDLING
*
ECBBA EQU 2
ECBRL EQU 4
ECBEL EQU 6
ECBRC EQU 8
ECBCW EQU 10
EJECT
*
*
* CREDIT USED EQU
*
*
* ECB REL. ADDRESSES
*
*
DIS EQU 20
*
ECB1 EQU -DIS-8
ECB2 EQU ECB1-DIS
ECB3 EQU ECB2-DIS
ECB4 EQU ECB3-DIS
ECB5 EQU ECB4-DIS
*
ECBDC EQU ECB1
ECBDCT EQU ECB2
ECBVDU EQU ECB3
ECBKB EQU ECB4
ECBSD EQU ECB5
ECBPR EQU ECB3
*
*
* BASE ADDRESS FOR TCA AND ECB
*
TCABAS EQU A11
CREBAS EQU A13 ECB
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
DCADDR EQU DCLENG+2 DC SUBTERMINAL ADDRESS
TCTGPL EQU DCADDR+2
INTATT EQU TCTGPL+2 INTENSITY ATTRIBUTE
OFFFLG EQU INTATT+2 OFFLINE FLAG
LOCK EQU OFFFLG+2 COPY LOCK
VDUBSY EQU LOCK+2 VDU BUSY WHEN HARDCOPY
COPNO EQU VDUBSY+2 HARDCOPY TASK IDENTITY
CRE EQU COPNO+2 CREDIT ECB:S BASE ADDRESS
VDUT.A EQU CRE+2 T:A BASE ADDRESS
CCC EQU VDUT.A+2 COPY COMMAND CONTROL CHARACTER
*
*
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
*
*************************************************
*
* CONDITIONAL ASSEMBLY PARAMETERS
*
*****************************************
OFLIN EQU 0 SHOULD ALWAYS BE SET TO ZERO
COPL EQU 0 COPY LOCK IF ::= 1
EBCDIC EQU 1 EBCDIC CODE IF SET TO " ONE ", ELSE ASCII
EJECT
****************************************
*
* SELECT ADDRESS TABLE
*
******************************
SELGTP EQU *
IFT EBCDIC=1 EBCDIC DEVICE ADDRESSES
DATA /D4
DATA /D3
DATA /D2
DATA /D1
DATA /50
DATA /4F
DATA /4E
DATA /4D
DATA /4C
DATA /4B
DATA /4A
DATA /C9
DATA /C8
DATA /C7
DATA /C6
DATA /C5
DATA /C4
DATA /C3
DATA /C2
DATA /C1
DATA /40
XIF
IFF EBCDIC=1 ASCII DEVICE ADDRESSES
DATA /4D
DATA /4C
DATA /4B
DATA /4A
DATA /26
DATA /21
DATA /2B
DATA /28
DATA /3C
DATA /2E
DATA /5B
DATA /49
DATA /48
DATA /47
DATA /46
DATA /45
DATA /44
DATA /43
DATA /42
DATA /41
DATA /20
XIF
EJECT
PRINT EQU *
CF A14,I:EVA0
LDR TCABAS,A9 LOAD ASSEM TCA BASE
CF A14,I:EVA0 GET TASK INDEX
LDR* A9,A9
ADR A9,A9
LD A1,SELGTP,A9 GET SELECT ADDRESS
ST A1,DCADDR,TCABAS
CF A14,EMULA
ST CREBAS,CRE,TCABAS
PRNT:1 LDK A1,0 NO TIMEOUT SUPERVISION
READDC LDKL A8,ECBDCT DATCOM ECB
ADR A8,CREBAS
ST A1,ECBCW,A8 SAVE TIMEOUT VALUE
LDR A1,TCABAS ACTIVATION PARAMETER
LDK A7,X'82' READ ORDER
LKM
DATA -1
DATA PRNT:2 ACTIVATION ADDRESS
LKM EXIT
DATA 3
EJECT
*******************************************************************
*
* GTP-TASK IS ACTIVATED AT THIS ADDRESS WHEN
* THE DC-READ IS TERMINATED
*
***********************************************************************
PRNT:2 LDR TCABAS,A1 WORK AREA BASE ADDRESS
LD CREBAS,CRE,TCABAS T:A BASE ADDRESS
LD A14,2,CREBAS STACK BASE
IFT OFLIN=1
********************************************************
*
* IF OFFLINE SWITCH IS SEY : RELEASE RECEIVE BUFFER
* AND READ AGAIN
*
**********************************************************
LD A1,OFFFLG,TCABAS ONLINE/OFFLINE FLAG
RF(Z) ON:LIN STILL ONLINE
CF A14,REL:BU RELEASE RECEIVE BUFFER
CF A14,SNBUSY SET DEVICE FREE FOR DC-LINE
RB PRNT:1 READ DC AGAIN
ON:LIN EQU *
XIF
LDKL A8,ECBDCT DATCOM ECB-ADDRESS
ADR A8,CREBAS ADD BASE ADDRESS
LD A1,ECBEL,A8 EFFECTIVE LENGTH
ST A1,DCLENG,TCABAS SAVE IT IN SAVE AREA
PRNT:3 CF A14,UPDATE MOVE FROM DC TO PRINTER BUFFER;
IFT COPL=1
LD A1,LOCK,TCABAS COPY LOCK SET ???
RF(Z) PRNT:4 NO. PRINT VDU BUFFER CONTENTS
CM LOCK,TCABAS YES!!! RESET COPY LOCK
CF A14,SNBUSY SET DEVICE FREE FOR DC-LINE
RB PRNT:1 READ DC AGAIN
PRNT:4 EQU *
XIF
LD A1,WCC,TCABAS WRITE CONTROL CHARACTER
ST A1,CCC,TCABAS COPY IT
CF A14,COPY COPY ON PRINTER
CF A14,SNBUSY SET DEVICE NOT BUSY FOR DC
RB PRNT:1 READ AGAIN FROM DC
EJECT
*************************************************************
*
* H A R D C P : HARDCOPY PRINTING
*
* PRINT VDU BUFFER ON HARDCOPY DEVICE
*
***************************************************************
HARDCP LDR TCABAS,A1 VDU WORKBLOCK BASE ADDRESS
LD CREBAS,CRE,TCABAS GTP T:A BASE ADDRESS
LD A14,2,CREBAS STACK POINTER
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
CM VDUBSY,TCABAS SET VDU-TASK FREE
HARD:2 EQU *
LD CREBAS,VDUT.A,TCABAS VDU-TASK BASE ADDRESS
LDK A1,1
XRS A1,KBINH,TCABAS RESET KEYBOARD INHIBIT BIT
LKM EXIT
DATA 3
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
CM* ECBBA,A8 CLEAR BUFFER CONTROL WORD
LD A7,ECBBA,A8
ADK A7,2 PRINt BUFFER ADDRESS
SUR A9,A9 RESET BUFFER INDEX
LDK A3,0
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 CWK A2,/7B
RF(NE) COP143
LDK A2,/2A
***************************************************** 78-08-15
COP143 CWK A2,/61 LOWER CASE CHARACTER ???
RF(L) COP144 NO!!!
SUK A2,/20 CONVERT TO UPPER CASE CHARACTER
******************************************************* 78-08-15
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
ST* A7,ECBBA,A8
LD A7,ECBBA,A8
ADK A7,2 RESTORE BUFFER ADDRESS
SUR A9,A9 RESET CHAR COUNTER
RTN A14
EJECT
*
*
* SET STATUS NOT BUSY FOR DC
*
*
SNBUSY LDK A1,0
LDKL A8,ECBDC
ADR A8,CREBAS
LDK A7,/B8 SET STATUS ORDER
ST A1,ECBCW,A8
LKM
DATA 1
RTN A14
*
*
END