|
|
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: 36452 (0x8e64)
Notes: pts_type(SC)
Names: »VDUPRX.SC«
└─⟦75255755f⟧ Bits:30009693 Philips computer tape "600410"
└─⟦this⟧ »NJREMIT/VDUPRX.SC«
└─⟦b6546aa17⟧ Bits:30009689 Philips computer tape "600325"
└─⟦this⟧ »REMIT2/VDUPRX.SC«
IDENT VDUPRT 2.1DK 5 79-10-20 870150540210 =1,ODD BUFFER ADDRESS REL 2.1 79-05-23 =2,KEYBOARD LAMPS REL 2.1 79-05-23 =3, TRANSMIT BUFFER LENGTH REL 2.1 79-05-23 DK5 - SKIP CHAR 06=2F=USM DK5 DK4 - RFMDUP DK3 - EUA DK2 - DC-TIMEOUT DK1 - BLANK COL. 80 ****************************************************************** * * V D U P R T : MODULE HANDLING MESSAGES COMING FROM * MAIN FRAME, AND DISPLAYING THEM ON * THE VDU ( PTS 6344 ) . * ******************************************************************** * * * * * ENTRIES * * ENTRY TRPF TRANSMIT, PROGRAM FUNCTION ENTRY TRPA TRANSMIT, PROGRAM ATTENTION ENTRY ERASE ERASE ENTIRE SCREEN ENTRY SETCUR CURSOR POSITIONING ENTRY ERASUP ERASE ALL UNPROTECTED ENTRY DISPL DISPLAY MODIFIED DATA ENTRY ERASUA ERASE UNPROTECTED TO ADDRESS ENTRY WCHAR WRITE ONE CHAR IN CURSOR POS ENTRY UPDATE ENTRY RFMDUP REPLACE FM & DUP ENTRY DCINP ENTRY RLRBUF ENTRY DCGETM ENTRY GTRBUF * * * EXTERNALS * * EXTRN LINHON,LINHOF START EXTRN LSAVON,LSAVOF START EXTRN ATMASB EXTRN EMULA EXTRN REQTIM EXTRN ICWRTE * EXTRN SNBUSY PRT * EXTRN I:EVA0 CREDIT EVALUATION TABLE * EXTRN TASCII,TEBCDI TB3270 * **************************************************************** * * CONDITIONAL ASSEMBLY PARAMETERS * ********************************************** OFLIN EQU 1 OFFLINE HANDLING POSSIBLE IF ::= 1 DCLIN EQU 1 NUMBER OF MAIN FRAMES (1-2) RBUFL EQU 1150 RECEIVE BUFFER LENGTH IN WORDS RBUFNR EQU 2 NUMBER OF RECEIVE BUFFERS (1-5) TBUFL EQU 1150 TRANSMIT BUFFER LENGTH IN WORDS TBUFNR EQU 2 NUMBER OF TRANSMIT BUFFERS (1-5) COPCMD EQU 1 COPY COMMAND (ONLY TO PRINTER) IF := 1 EBCDIC EQU 1 ASCII = 0,EBCDIC = 1 * * EQUATES * * TIMDC EQU 600 DC TIME OUT VALUE: 60 S DK2 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 FORM FEED CHAR DUPCH EQU /7B FMCH EQU /60 TRCH EQU /30 DK SKIP EQU /06 SKIP CHAR. (USM) DK5 * * * 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 IFT COPCMD=1 ECBDC2 EQU ECBDC-DIS ECBICR EQU ECBDC2-DIS ECBICW EQU ECBICR-DIS XIF IFT DCLIN=2 IFF COPCMD=1 ECBDC2 EQU ECBDC-DIS ECBICW EQU ECBDC2-DIS XIF IFF DCLIN=2 IFT COPCMD=1 ECBICR EQU ECBDC-DIS ECBICW EQU ECBICR-DIS XIF IFF DCLIN=2 IFF COPCMD=1 ECBICW EQU ECBDC-DIS XIF ECBVDU EQU ECBICW-DIS ECBKB EQU ECBVDU-DIS ECBSD EQU ECBKB-DIS * * * BASE ADDRESS FOR TCA AND ECB * TCABAS EQU A11 CREBAS EQU A13 ECB * * * 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 * * LBVDU EQU 1920 1920 CHARACTER DISPLAY LPAGE EQU 48 LINES ON ONE PAGE LLINE EQU 80 80 CHAR PER DISPLAY LINE TID EQU -4 TASK IDENTITY T:A DISPLACEMENT * * 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 * **************************************************************** * * INPUT FROM DC * **************************************************** * * RELATIVE POS IN ECBBLK KB EQU 2 DC1 EQU 4 DC2 EQU 6 * DCINP 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 LD A1,MAIN,TCABAS CW A8,ECBBLK+DC2,TCABAS RF(E) DCIN20 MF # 2 CM ECBBLK+DC1,TCABAS LDR A1,A1 RF(NZ) DCIN90 WRONG MF RF DCIN30 DCIN20 EQU * CM ECBBLK+DC2,TCABAS LDR A1,A1 RF(Z) DCIN90 WRONG MF XIF DCIN30 EQU * IFT OFLIN=1 LD A1,OFFFLG,TCABAS RF(NZ) DCIN90 XIF LD A1,ECBEL,A8 EFFECTIVE DC-LENGTH ST A1,DCLENG,TCABAS LD A5,KBINH,TCABAS ORK A5,3 BIT 14,15:= 1. TOTALLY DISABLED * KEYBOARD. BIT 15 = 0 AFTER DISPLAYING. ST A5,KBINH,TCABAS CF A14,LINHON TURN ON 'KEYBOARD INHIBIT' CF A14,LSAVON TURN ON "SYSTEM AVAILABLE" CF A14,UPDATE CF A14,DISPL LD A2,PCURS,TCABAS CF A14,ATMASB * LD A2,KBINH,TCABAS ANK A2,1 BIT 15 = 0? RF(Z) DCIN60 LD A2,KBINH,TCABAS ANK A2,/E BIT 15:=0 KEYBOARD NOT TOTALLY * INHIBITED ANY LONGER ST A2,KBINH,TCABAS LD A2,WCC,TCABAS ANK A2,2 RF(Z) DCIN95 DCIN60 EQU * CF A14,LINHOF TURN OFF 'KEYBOARD INHIBIT' LD A2,KBINH,TCABAS ANK A2,4 BITS 14,15:=0 RESTORE KEYBOARD ST A2,KBINH,TCABAS RF DCIN95 DCIN90 EQU * LD A8,ECBDCC,TCABAS LD A4,ECBBA,A8 CF A14,RLRBUF DCIN95 EQU * CF A14,SNBUSY RTN A14 * * READ DC * DCGETM EQU * LDK A1,0 CF A14,REQTIM LDK A7,/82 READ, WAIT CM ECBCW,A8 NO TIME OUT SUPERVISION LDKL A1,RBUFL+RBUFL ST A1,ECBRL,A8 REQ LENGTH ST A4,ECBBA,A8 LKM DATA 1 RTN A14 ********************************************************** * * BUFFER HANDLING * ********************************************************** * RLINK EQU RBUFL+RBUFL+2 * RBUF EQU * DATA *+2 POINTER FIRST FREE IFF RBUFNR=1 DATA *+RLINK RES RBUFL IFF RBUFNR=2 DATA *+RLINK RES RBUFL IFF RBUFNR=3 DATA *+RLINK RES RBUFL IFF RBUFNR=4 DATA *+RLINK RES RBUFL XIF DATA 0 END OF CHAIN RES RBUFL * * TLINK EQU TBUFL+TBUFL+2 * TBUF EQU * DATA *+2 POINTER FIRST FREE IFF TBUFNR=1 DATA *+TLINK RES TBUFL IFF TBUFNR=2 DATA *+TLINK RES TBUFL IFF TBUFNR=3 DATA *+TLINK RES TBUFL IFF TBUFNR=4 DATA *+TLINK RES TBUFL XIF DATA 0 END OF CHAIN RES TBUFL * * * GET WRITE BUFFER * GTWBUF EQU * LDKL A5,TBUF CF A14,GETBUF LDR A7,A4 LDR A12,A4 ADK A7,2 SKIP LDKL A9,2 FOR DV ADDRESS RTN A14 * * GET RECEIVE BUFFER * GTRBUF EQU * LDKL A5,RBUF * * GETBUF EQU * LDR* A4,A5 RF(Z) GETB50 NO BUFFER FREE LDR* A3,A4 STR A3,A5 ADK A4,2 SKIP LINK RTN A14 GETB50 EQU * LKM DATA 0 SWITCH TASK RB GETBUF * * RELEASE BUFFER * RLRBUF EQU * LDKL A2,RBUF RELB05 EQU * SUK A4,2 POINT TO LINK RELB10 EQU * LDR* A3,A2 RF(Z) RELB20 LDR A2,A3 RB RELB10 RELB20 EQU * STR A4,A2 CMR A4 RTN A14 * RLWBUF EQU * LDKL A2,TBUF RB RELB05 * * * STORE CHARACTER IN DC BUFFER * * A2=CHAR * A7=BUFFER POINTER * A9=BUFFER CHARACTER COUNTER * * PDCCH EQU * CWK A9,TBUFL+TBUFL =3 RF(G) PDCCHR OVERFLOW SCR A2,A7 PDCCH1 EQU * ADK A7,1 ADKL A9,1 PDCCHR RTN A14 * * * STORE ATTENTION ID FROM A2 * * PAID CF A14,PDCCH RTN A14 * * * GET CHARACTER FROM DC BUFFER TO A2 * * GDCCH LCR A2,A7 ANK A2,/FF RF(NZ) GDCC:1 NOT NULL CHARACTER LDK A2,/7F LOAD NULL CHARACTER GDCC:1 EQU * RB PDCCH1 * * * GET BUFFER ADDRESS TO A1 FROM DC BUFFER * * GETADR CF A14,GDCCH LC A1,TEBCDI,A2 ANK A1,/3F SLL A1,6 CF A14,GDCCH LC A2,TEBCDI,A2 ANK A2,/3F ORR A1,A2 RTN A14 * * * WRITE MESSAGE TO MAIN FRAME * * ON EXIT A1 CONTAINS RETURN CODE * * DCWRTE EQU * LDKL A8,ECBDC IFT DCLIN=2 LD A7,MAIN,TCABAS RF(Z) DC050 LDKL A8,ECBDC2 XIF DC050 EQU * ADR A8,CREBAS LDKL A1,TIMDC CF A14,REQTIM ST A9,ECBRL,A8 REQ LENGTH ST A12,ECBBA,A8 BUFFER ADDRESS LD A7,KBINH,TCABAS ORK A7,2 BIT 14 :=1 DISABLE KEYBOARD.RESET ALLOWED ST A7,KBINH,TCABAS LDK A7,/86 DC100 EQU * LKM DATA 1 DC200 EQU * LDR A4,A12 CF A14,RLWBUF LD A1,ECBRC,A8 GET RETURN CODE RF(Z) DC300 LD A7,KBINH,TCABAS ANK A7,/D BIT 14:=0 ALLIWE KEYBOARD ST A7,KBINH,TCABAS CF A14,LINHOF TURN OFF "KEYBOARD INHIBIT CF A14,LSAVOF TURN OFF "SYSTEM AVAILABLE" * LDK A7,/04 RESET KEYBOARD ECB BUFFER LDKL A8,ECBKB ADR A8,CREBAS LKM DATA 1 * RTN A14 DC300 EQU * CF A14,LSAVON TURN ON 'SYSTEM AVAILABLE' RTN A14 * * * STORE CURSOR ADDRESS IN DC BUFFER * * CURSA LD A1,PCURS,TCABAS RF BUFADR * * * STORE BUFFER ADDRESS IN DC BUFFER * * A1=BINARY BUFFER ADDRESS * * BUFADR LDR A2,A1 SRL A2,6 ANK A2,/3F LC A2,TASCII,A2 CONVERT TO ASCII CF A14,PDCCH LDR A2,A1 ANK A2,/3F LC A2,TASCII,A2 CF A14,PDCCH RTN A14 * * * GET MODIFIED DATA FROM DISPLAY IMAGE BUFFER * * A3=BUFFER POSITION BINARY * A4=BUFFER POINTER * * RDMOD LDK A3,0 RESET POSITION LDKL A4,BVDU ADR A4,TCABAS BUFFER POINTER ADKL A4,1919 LAST SCREEN POSITION LCR A2,A4 GET CHARACTER LDKL A4,BVDU RELOAD FIRST BUFFER POSITION ADR A4,TCABAS LDR A1,A2 ANK A1,/60 ATTRIBUTE ??? RF(Z) RD200 YES!!! RD100 CWK A3,LBVDU RF(NL) RDMODE ALL EXAMINED LCR A2,A4 GET CHAR ADK A3,1 ADK A4,1 RD105 EQU * LDR A1,A2 ANK A1,/60 RF(Z) RD200 ATTRIBUTE CHAR RD110 CWK A2,NULL RB(E) RD100 DON'T STORE NULL CF A14,PDCCH STORE CHAR IN DC BUFFER RB RD100 RD200 ANK A2,1 CHECK MDT BIT RF(NZ) RD300 MODIFIED FIELD RD210 CWK A3,LBVDU RF(NL) RDMODE ALL EXAMINED LCR A2,A4 ADK A3,1 ADK A4,1 LDR A1,A2 ANK A1,/60 RB(NZ) RD210 NO ATTRIBUTE CHAR CWK A3,LBVDU ALL BUFFER EXAMINED ??? RF(NL) RDMODE YES!! RB RD200 ATTRIBUTE FOUND RD300 LDK A2,SBA CF A14,PDCCH SBA TO DC BUFFER LDR A1,A3 BUFFER POSITION CF A14,BUFADR TO DC BUFFER RB RD100 RDMODE RTN A14 * * * UPDATE VIDEO DISPLAY BUFFER IMAGE BY THE DATA * * RECEIVED FROM THE DC LINE * * * A7=DC RECEIVE BUFFER POINTER * A8=DC ECB ADDRESS * A9=DC BUFFER INDEX, INITIALLY ZERO * * A3=DISPLAY BUFFER POSITION * A4=DISPLAY BUFFER POINTER * * UPDATE EQU * CM ICWORK,TCABAS LD A8,ECBDCC,TCABAS LD A7,ECBBA,A8 DC BUFFER ADDRESS SUR A9,A9 RESET DC BUFFER INDEX CF A14,GDCCH GET FIRST CHAR FROM DC BUFFER CWK A2,ESC SHOULD BE ESCAPE RF(NE) UPDEND NOT ESCAPE CF A14,GDCCH GET COMMAND CODE CWK A2,/31 RF(E) UPD100 WRITE CWK A2,/35 RF(E) UPD120 ERASE/WRITE CWK A2,/3F RF(E) UPD140 ERASE ALL UNPROTECTED IFT COPCMD=1 CWK A2,/37 ABL(E) UPD600 COPY COMMAND XIF RF UPDEND INVALID COMMAND CODE * * WRITE COMMAND * UPD100 EQU * CF A14,PWCC PROCESS WCC FOR MDT BIT LD A3,PCURS,TCABAS LDR A4,A3 START IN CURSOR POSITION ADKL A4,BVDU ADR A4,TCABAS LDK A5,1 INDICATE WCC, IC OR RA RF UPD220 * * ERASE/WRITE COMMAND * UPD120 EQU * CF A14,ERASE ERASE SCREEN RF UPD200 * * ERASE ALL UNPROTECTED * UPD140 EQU * CF A14,ERASUP ERASE ALL UNPROTECTED RF UPDEND NO TEXT WITH THIS COMMAND * * TAKE CARE OF WRITE CONTROL CHARACTER WCC * UPD200 CF A14,PWCC PROCESS WCC LDK A5,1 INDICATE WCC, IC OR RA * * * PROCESS DATA FROM DC BUFFER * * UPD210 LDK A3,0 START FROM POSITION ZERO LDKL A4,BVDU ADR A4,TCABAS UPD220 CW A9,DCLENG,TCABAS RF(NL) UPDEND ALL RECEIVED CHARS PROCESSED CF A14,GDCCH GET CHAR FROM DC BUFFER CWK A2,/20 RF(L) UPD300 ORDER UPD230 EQU * ORK A2,/80 SET DISPLAY BIT UPD240 EQU * LDK A5,0 INDICATE NOT WCC, IC OR RA CWK A3,LBVDU RF(E) UPD260 END OF VIDEO BUFFER UPD250 EQU * SCR A2,A4 STORE IN VIDEO BUFFER ADK A3,1 ADK A4,1 RB UPD220 UPD260 LDK A3,0 LDKL A4,BVDU ADR A4,TCABAS RB UPD250 UPD300 EQU * CWK A3,LBVDU END OF DISPLAY BUFFER ??? RF(NE) UPD302 NO!!! SUR A3,A3 FIRST SCREEN POSITION LDKL A4,BVDU ADR A4,TCABAS BUFFER POSITION UPD302 EQU * CWK A2,/1D RF(E) UPD320 START FIELD CWK A2,/11 RF(E) UPD340 SET BUFFER ADDRESS CWK A2,/13 RF(E) UPD360 INSERT CURSOR CWK A2,/09 RF(E) UPD400 PROGRAM TAB CWK A2,/14 RF(E) UPD500 REPEAT TO ADDRESS CWK A2,/12 RF(E) UPD540 ERASE UNPROTECTED TO ADDRESS CWK A2,/0C RF(NE) UPD305 LDK A2,FORMFD FORM FEED RB UPD230 UPD305 CWK A2,/19 RF(NE) UPD310 LDK A2,ENDMES END MESSAGE RB UPD230 UPD310 EQU * CWK A2,/0A RF(NE) UPD315 LDK A2,NEWLIN NEW LINE RB UPD230 UPD315 EQU * CWK A2,/18 RF(NE) UPD318 ILLEGAL ORDER LDK A2,/30 RB UPD230 UPD318 EQU * CWK A2,SKIP DK5 RF(NE) UPD319 SKIP USM DK5 ADK A3,1 DK5 RB UPD220 DK5 UPD319 EQU * DK5 CWK A2,/00 NULL CHARACTER ??? RF(NE) UPDEND NO!! ILLEGAL ORDER LDK A2,/7F PTS NULL CHARACTER RB UPD230 ************************************************************ * * RELEASE RECEIVE BUFFER * ************************************* UPDEND EQU * LD A8,ECBDCC,TCABAS LD A4,ECBBA,A8 CF A14,RLRBUF RTN A14 * * * START FIELD ORDER * UPD320 CF A14,GDCCH GET ATTRIBUTE CHAR LC A2,TEBCDI,A2 LDR A1,A2 COMPOSE PTS ATTRIBUTE CHAR ANK A1,1 SRL A2,1 ANK A2,/1E ORR A2,A1 RB UPD240 * * SET BUFFER ADDRESS * UPD340 CF A14,GETADR GET ADDRESS CWK A1,LBVDU RB(NL) UPDEND INVALID ADDRESS LDR A3,A1 LDR A4,A3 ADKL A4,BVDU ADR A4,TCABAS RB UPD220 * * INSERT CURSOR * UPD360 ST A3,PCURS,TCABAS SET NEW CURSOR POS LDK A5,1 INDICATE WCC, IC OR RA RB UPD220 * * PROGRAM TAB * UPD400 LDR A5,A5 RF(NZ) UPD430 PT AFTER WCC, IC OR RA LDK A1,NULL+/80 FILL CURRENT FIELD BY NULLS UPD410 EQU * LDK A5,0 CWK A3,LBVDU RB(NL) UPD210 END OF BUFFER LCR A2,A4 ADK A3,1 ANK A2,/7F CWK A2,/20 RF(L) UPD415 SCR A1,A4 STORE NULL ADK A4,1 RB UPD410 UPD415 EQU * ADK A4,1 UPD420 ANK A2,/10 ABL(Z) UPD220 UNPROTECTED FIELD UPD430 EQU * LDK A5,0 CWK A3,LBVDU ABL(NL) UPD210 END OF DISPLAY BUFFER LCR A2,A4 ADK A3,1 ADK A4,1 ANK A2,/7F CWK A2,/20 RB(L) UPD420 RB UPD430 * * REPEAT TO ADDRESS * UPD500 CF A14,GETADR GET END ADDRESS CWK A1,LBVDU RB(NL) UPDEND INVALID ADDRESS CF A14,GDCCH GET CHAR TO BE REPEATED LDK A5,1 INDICATE WCC, IC OR RA ORK A2,/80 INDICATE MODIFIED CWR A3,A1 NULLS TO ALL SCREEN POSITIONS ???? RF(E) UPD530 YES!!! UPD510 CWK A3,LBVDU RF(L) UPD520 NOT END OF SCREEN LDK A3,0 LDKL A4,BVDU WRAP AROUND ADR A4,TCABAS UPD520 CWR A3,A1 ABL(E) UPD220 ALL CHAR REPEATED UPD530 EQU * SCR A2,A4 ADK A3,1 ADK A4,1 RB UPD510 NEXT POSITION * * ERASE UNPROTECTED TO ADDRESS * UPD540 CF A14,GETADR GET END ADDRESS CWK A3,LBVDU RB(NL) UPDEND INVALID ADDRESS CF A14,ERASUA ERASE UNPROTECTED TO ADDRESS ABL UPD220 IFT COPCMD=1 * * COPY COMMAND * UPD600 EQU * LD A1,PRINTER,TCABAS ABL(Z) UPDEND COPYCOMMAND NOT SUPPORTED FOR VDU ADK A7,1 BYPASS CCC CF A14,GDCCH GET FROM DEVICE IFT EBCDIC=1 LC A2,TEBCDI,A2 CONVERT TO EBCDIC XIF IFT COPCMD=1 LD A3,6,CREBAS 'CB1' ADDRESS LDK A4,MF1KBV-1 IFT DCLIN=2 LD A1,ECBBLK+DC2,TCABAS RF(NZ) UPD602 LDK A4,MF2KBV-1 MF # 2 READ XIF IFT COPCMD=1 UPD602 EQU * ADR A4,A3 CONFIG TABLE -1 LD A5,NBRKBV,A3 NUMBER OF KB/VDUS ADR A4,A5 LAST KB/VDU CONFIGURATED UPD604 EQU * CCR A2,A4 DV-ADDRESS MATCHES ? RF(E) UPD610 YES SUK A4,1 SUK A5,1 RB(P) UPD604 TRY NEXT ABL UPDEND NO MATCH * UPD610 EQU * LDKL A8,ECBICW ADR A8,CREBAS LKM DATA 10 ABORT LAST REQUEST IF NOT COMPLETED ADKL A5,/4B40 TASKID FROM DEVICE LD A2,-4,CREBAS GET OWN TASKID ST A2,ICWORK,TCABAS PUT IN BUFFER LDK A4,/0B WRITE ADDRESSED , NO WAIT LDK A6,2 REQ LENGTH LDKL A3,ICWORK ADR A3,TCABAS BUFFER ADDRESS CF A14,ICWRTE WRITE INTERTASK ABL UPDEND XIF * * * PROCESS WRITE CONTROL CHARACTER * * ONLY RESET MDT BIT IS TAKEN CARE OF * * PWCC CF A14,GDCCH GET WCC LC A2,TEBCDI,A2 IN EBCDIC ST A2,WCC,TCABAS SAVE IT ANK A2,/04 RF(Z) PWCC1 LD A2,PRINTER,TCABAS RF(NZ) PWCC1 LDR A10,A7 LDKL A8,ECBVDU ADR A8,CREBAS LD A2,ECBBA,A8 LDK A7,/2B SC A7,1,A2 =1 LDK A7,/07 BELL =1 SC A7,2,A2 =1 SC A7,3,A2 =1 LDK A7,4 ST A7,ECBRL,A8 LDK A7,/86 LKM DATA 1 LD A8,ECBDCC,TCABAS LDR A7,A10 PWCC1 EQU * LD A2,WCC,TCABAS ANK A2,1 RF(NZ) RESMDT RESET ALL MDT PWCC10 RTN A14 NO ACTION * * * RESET ALL MDT BITS * * RESMDT LDK A3,0 LDKL A4,BVDU ADR A4,TCABAS RESM10 CWK A3,LBVDU RB(NL) PWCC10 ALL DONE LCR A2,A4 GET CHAR ANK A2,/60 RF(NZ) RESM20 NO ATTRIBUTE LCR A2,A4 ANK A2,/FE RESET MDT SCR A2,A4 RESM20 ADK A3,1 ADK A4,1 RB RESM10 * * * ERASE ENTIRE SCREEN * * ERASE LDK A3,0 LDKL A4,BVDU ADR A4,TCABAS LDK A2,NULL ERAS20 CWK A3,LBVDU RF(NL) ERAS25 ALL ERASED SCR A2,A4 ADK A3,1 ADK A4,1 RB ERAS20 ERAS25 CM PCURS,TCABAS RESET CURSOR POS LDKL A1,LBVDU+1 ST A1,CURATT,TCABAS INDICATE UNFORM. SCREEN CM ATTRIB,TCABAS LD A1,PRINTER,TCABAS CHECK DEVISE TYPE RF(NZ) ERAEND PRINTER, NOT DISPLAY STR A7,A14 SAVE A7 AND A8 ON STACK ST A8,-2,A14 LDKL A8,ECBVDU ADR A8,CREBAS VDUECB LDK A7,'1' ERASE CONTROL CHAR LD A1,ECBBA,A8 =1 SC A7,1,A1 =1 LDK A7,2 ST A7,ECBRL,A8 REQ LENGTH = 2 LDK A7,/86 WRITE LKM DATA 1 LD A8,-2,A14 LDR* A7,A14 RESTORE A7 AND A8 ERAEND RTN A14 * * * ERASE ALL UNPROTECTED * * ERASUP LDK A2,2 ST A2,WCC,TCABAS SET KEYBOARD RESTORE BIT SUR A1,A1 INDICATE ATT IN LAST SCREEN POS DK LDK A3,0 LDKL A4,BVDU ADR A4,TCABAS CM PCURS,TCABAS FIND FIRST UNPROTECTED POS LC A2,1919,A4 GET LAST SCREEN CHARACTER ANK A2,/7F CWK A2,/20 ATTRIBUTE ??? RF(L) ERU:01 YES!! WE GOT IT!! LDK A1,1 ATTRIBUTE NOT IN LAST SCREEN POS. ERASU1 CWK A3,LBVDU RF(NL) ERASU2 LCR A2,A4 GET CHAR ANK A2,/7F ADK A3,1 ADK A4,1 CWK A2,/20 RB(NL) ERASU1 NO ATTRIBUTE ERU:01 EQU * ANK A2,/10 RB(NZ) ERASU1 PROTECTED ST A3,PCURS,TCABAS SET NEW CURSOR POS LDR A1,A1 RF(Z) ERASU3 ATTRIBUTE IN LAST SCREEN POS. ERASU2 LDK A3,0 LDKL A4,BVDU ADR A4,TCABAS RF ERASU4 ERASU3 EQU * LDR A3,A3 RF(Z) ERASU4 UNPROTECTED ATT. IN LAST SCREEN POS. SUK A3,1 GET BACK TO ATTRIBUTE SUK A4,1 - " - ERASU4 EQU * LDKL A1,/0F00 (LDK A1,0) DK3 LDK A6,NULL+/80 ERASE CHAR RF ERAS35 EJECT * * * ERASE UNPROTECTED TO ADDRESS GIVEN IN A1 * * ERASUA LDK A6,NULL+/80 ERASE CHARACTER ******************* 78-09-11 CWK A3,LBVDU WRAP AROUND ??? RF(L) ERAS:1 NO!! LDK A3,0 BUFFERINDEX LDKL A4,BVDU ADR A4,TCABAS ABSOLUTE BUFFER ADDRESS ERAS:1 LDR A3,A3 START IN FIRST SCREEN POSITION ??? RF(NZ) ERAS35 NO!! LC A2,1919,A4 LAST BUFFER CHARACTER ANK A2,/7F CWK A2,/20 ATTRIBUTE CHARACTER ??? RF(NL) ERAS35 NO!!! ANK A2,/10 RF(NZ) ERAS70 PROTECTED FIELD * LC A2,1919,A4 DK3 * ANK A2,/FE DK3 * SC A2,1919,A4 RESET MDT BIT DK3 RF ERAS35 ******************** 78-09-11 ERAS30 CWK A3,LBVDU RF(L) ERAS33 NOT END OF SCREEN LDK A3,0 LDKL A4,BVDU WRAP AROUND ADR A4,TCABAS ERAS33 EQU * CWK A1,/0F00 EUA COMMAND? DK3 RF(L) ERAS34 NO, EUA ORDER DK3 CWK A3,0 FINISHED EUA COMMAND? DK3 RF(NZ) ERAS35 NO, CONTINUE DK3 LDK A1,0 YES FINISHED DK3 RB ERAEND DK3 ERAS34 EQU * DK3 CWR A3,A1 RB(E) ERAEND ALL UNPROTECTED ERASED ERAS35 LCR A2,A4 GET CHAR FROM VDU BUFFER ANK A2,/7F CWK A2,/20 RF(L) ERAS50 ATTRIBUTE CHAR XRK A2,NULL RF(Z) ERAS40 ALREADY NULL SCR A6,A4 STORE MODIFIED NULL ERAS40 ADK A3,1 ADK A4,1 RB ERAS30 ERAS50 ADK A3,1 ADK A4,1 ANK A2,/10 RF(NZ) ERAS60 PROTECTED FIELD CWK A1,/0F00 EUA COMMAND? DK3 RB(L) ERAS30 NO DK3 * EUA COMMAND: RESET MDT BIT DK3 LC A2,-1,A4 ANK A2,/FE RESET MDT BIT SC A2,-1,A4 RB ERAS30 ERAS60 CWK A3,LBVDU RF(L) ERAS65 LDK A3,0 LDKL A4,BVDU WRAP AROUND ADR A4,TCABAS ERAS65 EQU * CWK A1,/0F00 EUA COMMAND? DK3 RF(L) ERAS67 NO, EUA ORDER DK3 CWK A3,0 FINISHED EUA COMMAND? DK3 RF(NZ) ERAS70 NO,CONTINUE DK3 LDK A1,0 YYES, FINSHED DK3 RB ERAEND DK3 ERAS67 EQU * DK3 CWR A3,A1 RB(E) ERAEND ALL UNPROTECTED ERASED ERAS70 EQU * LCR A2,A4 ANK A2,/7F CWK A2,/20 RB(L) ERAS50 ATTRIBUTE FOUND ADK A3,1 ADK A4,1 RB ERAS60 * * * TRANSMIT PROGRAM ATTENTION * * A2=AID * * TRPA CF A14,GTWBUF GET TRANSMIT BUFFER TRPA10 CF A14,PAID STORE AID TRANS EQU * CF A14,DCWRTE WRITE MESSAGE TR050 EQU * RTN A14 TRANSMISSION TROUBLE TRRTN RTN A14 * * * TRANSMIT PROGRAM FUNCTION * * A2=AID * * TRPF CF A14,GTWBUF GET TRANSMIT BUFFER TRPF10 CF A14,PAID STORE AID CF A14,CURSA STORE CURSOR ADDRESS CF A14,RDMOD READ MODIFIED RB TRANS SEND MODIFIED FIELDS * * * DISPLAY MODIFIED FIELDS ON VDU * * * A3=VDU POSITION * A4=VDU IMAGE POINTER * A5=MODIFIED INDICATOR * A7=VDU LINE OUTPUT POINTER * A8=VDU ECB * A9=VDU OUTPUT CHAR COUNTER * * DISPL LDKL A8,ECBVDU ADR A8,CREBAS LDKL A1,/101 START FROM LINE 1 POS 1 ST A1,ECBCW,A8 SUR A10,A10 RESET COUNT FOR INTENSIFIED DISPLAYING LDK A3,0 LDKL A4,BVDU ADR A4,TCABAS CF A14,SPACES PUT SPACES IN LINE BUFFER LC A2,1919,A4 CHECK IF ATTRIBUTE IN LAST POSITION ANK A2,/7F CWK A2,/1F ATTRIBUTE ??? RF(G) DIS100 NO!!! ANK A2,6 XRK A2,6 ST A2,INTATT,TCABAS CHECK DISPLAY/NONDISPLAY INFORMATION RF(Z) DIS210 NON DISPLAY CF A14,INTCHK INSERT HIGH/LOW INTENS. IN BUFFER DIS100 EQU * CWK A9,LLINE RF(L) DIS110 NOT END OF LINE CF A14,DISLIN DISPLAY THIS LINE CF A14,INTCHK CHECK IF LOW/HIGH INTENSITY DIS110 EQU * CWK A3,LBVDU RF(NL) DIS900 ALL SCANNED LCR A2,A4 GET CHAR CF A14,SET:M SET MODIFIED BIT DIS115 EQU * ANK A2,/7F RESET DISPLAY BIT SCR A2,A4 ADK A3,1 ADK A4,1 ADK A7,1 ADKL A9,1 CWK A2,/20 RF(L) DIS200 ATTRIBUTE CHAR CWK A2,NULL RB(E) DIS100 NULL EQUALS SPACE AT DISPLAY CWK A2,/7D RF(NE) DIS120 LDK A2,/39 DIS120 CWK A2,/7E RF(NE) DIS121 LDK A2,/35 DIS121 CWK A2,/7C RF(NE) DIS122 LDK A2,/3C DIS122 EQU * CF A14,RFMDUP DK4 SC A2,-1,A7 STORE CHAR IN DISPLAY OUTPUT BUFFER RB DIS100 DIS200 ANK A2,6 XRK A2,6 CHECK IF NONDISPLAY ST A2,INTATT,TCABAS SAVE ATTRIBUTE CHARACTER RF(Z) DIS210 NON DISPLAY ANK A2,4 RF(Z) DIS205 HIGH INTENSITY LDK A2,/1E LOW INTENSITY RF DIS206 DIS205 EQU * LDK A2,/1F HIGH DIS206 EQU * SC A2,-1,A7 STORE INTENSITY CHARACTER ADKL A10,1 INCREMENT COUNTER ADK A7,1 RB DIS100 DIS210 EQU * CWK A9,LLINE RF(L) DIS220 CF A14,DISLIN DISPLAY THIS LINE DIS220 EQU * CWK A3,LBVDU RF(NL) DIS900 ALL DISPLAYED LCR A2,A4 CF A14,SET:M SET MODIFIED BIT DIS225 EQU * ANK A2,/7F RESET DISPLAY BIT SCR A2,A4 ADK A3,1 ADK A4,1 ADK A7,1 ADKL A9,1 CWK A2,/20 RB(L) DIS200 ATTRIBUTE FOUND RB DIS210 * * * POSITION THE CURSOR * * SETCUR EQU * DIS900 LDK A1,2 REQ LENGTH DIS905 ST A1,ECBRL,A8 LD A1,PCURS,TCABAS GET CURSOR POS LDKL A2,/101 START ON LIN 1 POS 1 ST A2,ECBCW,A8 LDKL A2,/100 DIS910 CWK A1,LLINE RF(L) DIS920 ADS A2,ECBCW,A8 SUKL A1,LLINE RB DIS910 DIS920 ADS A1,ECBCW,A8 LDK A7,/8B SET CURSOR AND WRITE LKM DATA 1 CM INTATT,TCABAS CLEAR INTENSITY ATTRIBUTE RTN A14 * * * WRITE ONE CHAR FROM A2 IN CURSOR POSITION * * WCHAR LD A1,ECBBA,A8 CF A14,RFMDUP SC A2,3,A1 STORE CHAR IN VDU OUTPUT BUFFER LDK A1,4 RB DIS905 REQ LENGTH = 3 * ********************************************************************* * * REPLACE FM & DUP WITH '*' RESP. ';', IF PRESENT * CHARACTER IN A2 * ********************************************************************* * RFMDUP EQU * CWK A2,DUPCH RF(NE) RFMD10 LDK A2,/2A DUP RFMD10 EQU * CWK A2,FMCH RF(NE) RFMD20 LDK A2,/3B RFMD20 EQU * RTN A14 * * * PUT SPACES TO DISPLAY LINE BUFFER * * SPACES LD A7,ECBBA,A8 ADK A7,2 BUFFER ADDRESS LDKL A9,LLINE LINE LENGTH ADR A9,A9 DOUBLE IT LDKL A2,' ' SPACES SPAC10 SCR A2,A7 =1 SC A2,1,A7 =1 ADK A7,2 SUKL A9,2 RB(P) SPAC10 LDK A2,0 CLEAR A2=CHAR REGISTER LDK A5,0 RESET MODIFIED INDICATOR LD A7,ECBBA,A8 ADK A7,2 BUFFER ADDRESS SUR A9,A9 RESET LINE CHAR COUNTER RTN A14 * * * DISPLAY LINE IF ANY MODIFICATIONS * * DISLIN EQU * LDR A7,A5 ANK A5,/80 ANY MODIFICATIONS ?? RF(Z) DISL10 NO MODIFICATIONS LDK A1,2 XRK A7,/A0 ONLY SPACES IN BUFFER ?? RF(Z) DIS:10 YES!! LDKL A1,LLINE+2 ADR A1,A10 ADD NR OF INTENSITY CHARACTERS DIS:10 EQU * ST A1,ECBRL,A8 SET REQ LENGTH LDK A7,/8B SET CURSOR AND WRITE LKM DATA 1 ******************************************************************** * * EXECUTE FAST OUTPUT TO BLANK REMAINIG PART * OF THE LINE * ******************************************************************* LD A1,ECBCW,A8 CURSOR POSITION ANK A1,X'FF' COLUMN NUMBER SUK A1,80 LAST POSITION ? DK1 RF(NL) DISL10 YES, NO FAST OUTPUT THIS LINE DK1 LD A1,ECBBA,A8 BUFFER ADRESS LDK A2,X'2B' DONT MOVE CURSOR ONE LINE SC A2,1,A1 =1 LDKL A2,X'1420' FAST OUTPUT OF SPACES SC A2,3,A1 =1 SRL A2,8 =1 SC A2,2,A1 =1 LDK A2,84 REQUESTED LENGTH ST A2,ECBRL,A8 LDK A7,X'86' WRITE ORDER LKM DATA 1 DISL10 EQU * LDK A2,1 SC A2,ECBCW+1,A8 POS 1 ON NEXT LINE LDKL A2,/100 ADS A2,ECBCW,A8 INCREMENT LINE NUMBER RB SPACES PUT SPACES TO BUFFER **************************************************************** * * I N T C H K CHECK IF LINE SHOULD BE PRINTED WITH * HIGH OR LOW INTENSITY * ********************************************************************** INTCHK SUR A10,A10 RESET INTENSITY COUNT LD A2,INTATT,TCABAS GET INTENSITY ATTRIBUTE RF(Z) INTRTN NON DISPLAY ANK A2,X'4' HIGH INTENSITY ??? RF(Z) INT:10 YES LDK A2,X'1E' LOW INTENSITY RF INT:20 HIGH INTENSITY INT:10 LDK A2,X'1F' HIGH INTENSITY INT:20 SCR A2,A7 SAVE INTENSITY CHARACTER IN BUFFER ADK A7,1 INCREMENT BUFFER POINTER ADKL A10,1 INTENSITY COUNT INTRTN RTN A14 RETURN * **************************************************************** * * SET:M SET MODIFIED BIT IF CHARACTER HAS BEEN MODIFIED * ****************************************************************** SET:M CWK A2,/20 RF(L) SET:M2 ATTRIBUTE CHARACTER CWK A2,/7F RF(E) SET:M2 UNMODIFIED ATTRIBUTE CWK A2,/FF RF(NE) SET:M1 NOT NULL OR ATTRIBUTE ORK A5,/A0 MODIFIED NULL CHARACTER RTN A14 SET:M1 ORR A5,A2 SET MODIFIED BIT SET:M2 RTN A14 END