|
|
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: 46336 (0xb500)
Notes: pts_type(SC)
Names: »START.SC«
└─⟦fce1dcf99⟧ Bits:30009704 Philips computer tape "KMD15"
└─⟦this⟧ »IBM3270/START.SC«
IDENT START REL 1.2 78-09-15 870150540120 ************************************************************* * * S T A R T : MODULE HANDLING KEYBOARD INPUT.KEYBOARD INITIATED * MESSAGES ADDRESSED TO THE MAIN FRAME ARE COMPOSED * AND SENT BY USING ROUTINES IN MODULE VDUPRT. * ************************************************************************** EJECT * * * ENTRY PARAMETERS * * * ENTRY LMP1ON,LMP1OF,ATMASB ENTRY LMP3ON,LMP3OF ENTRY EMULA ENTRY OFL:ON TURN ON OFFLINE LAMP ENTRY OFL:OF TURN OFF OFFLINE LAMP * ENTRY VDUKB KB3270 (CREDIT) ENTRY DCTASK ENTRY SELTAB SELECT ADDRESS TABLE * * * * EXTERNAL REFERENSES * * * EXTRN ERASE VDUPRT EXTRN TRPF EXTRN SETCUR EXTRN WCHAR EXTRN TRPA EXTRN ERASUA EXTRN DISPL EXTRN ERASUP EXTRN VDTASK EXTRN GETT:A * EXTRN HARDCP PRT EXTRN DPACK EXTRN BPACK * EXTRN I:EVA0 CREDIT EVALUATION ROUTINE EXTRN I:RT1 RETURN TO CREDIT CODE EJECT ********************************************************** * * CONDITIONAL ASSEMBLY * ********************************* KB6234 EQU 1 OFLIN EQU 0 SHOULD ALWAYS BE SET TO ZERO MZERO EQU 0 RDBUF EQU 0 PFX EQU 0 PAX EQU 0 MGTP EQU 0 EBCDIC EQU 1 IFT KB6234=1 RSET EQU X'BA' RESET KEY XIF IFF KB6234=1 RSET EQU X'3C' RESET KEY XIF 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 * 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 * * * 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 LOCK VDU 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 CHARACTER EJECT * * LBVDU EQU 1920 1920 CHAR DISPLAY 6344 LPAGE EQU 48 LINES ON ONE PAGE LLINE EQU 80 80 CHAR PER DISPLAY LINE * IFT EBCDIC=1 TCADDR EQU /6040 TCS & TCP EBCDIC XIF IFF EBCDIC=1 TCADDR EQU /2D20 TCS & TCP ASCII XIF * SELTAB EQU * SELECT ADDRESSES IFT EBCDIC=1 EBCDIC DEVICE ADDRESSES DATA /40 DATA /C1 DATA /C2 DATA /C3 DATA /C4 DATA /C5 DATA /C6 DATA /C7 DATA /C8 DATA /C9 DATA /4A DATA /4B DATA /4C DATA /4D DATA /4E DATA /4F DATA /50 DATA /D1 DATA /D2 DATA /D3 DATA /D4 XIF IFF EBCDIC=1 ASCII DEVICE ADDRESSES DATA /20 DATA /41 DATA /42 DATA /43 DATA /44 DATA /45 DATA /46 DATA /47 DATA /48 DATA /49 DATA /5B DATA /2E DATA /3C DATA /28 DATA /2B DATA /21 DATA /26 DATA /4A DATA /4B DATA /4C DATA /4D XIF EJECT * * KEYTABLES * KEYTAB EQU * IFT KB6234=1 DATA CHAR SPACE DATA CHAR ! DATA CHAR " DATA CHAR # DATA CHAR $ DATA CHAR % DATA CHAR & DATA CHAR ' DATA CHAR ( DATA CHAR ) DATA CHAR * DATA CHAR + DATA CHAR , DATA NUM - DATA NUM . DATA CHAR / * DATA NUM DATA NUM 1 DATA NUM 2 DATA NUM 3 DATA NUM 4 DATA NUM 5 DATA NUM 6 DATA NUM 7 DATA NUM 8 DATA NUM 9 DATA CHAR : DATA CHAR ; DATA CHAR < DATA CHAR = DATA CHAR > DATA CHAR ? * DATA CHAR E' DATA CHAR A DATA CHAR B DATA CHAR C DATA CHAR D DATA CHAR E DATA CHAR F DATA CHAR G DATA CHAR H DATA CHAR I DATA CHAR J DATA CHAR K DATA CHAR L DATA CHAR M DATA CHAR N DATA CHAR O * DATA CHAR P DATA CHAR Q DATA CHAR R DATA CHAR S DATA CHAR T DATA CHAR U DATA CHAR V DATA CHAR W DATA CHAR X DATA CHAR Y DATA CHAR Z DATA CHAR POUND SIGN DATA CHAR DATA CHAR DATA CHAR // DATA CHAR - * DATA CHAR LOWER CASE CHARACTERS DATA CHAR DATA CHAR DATA CHAR DATA CHAR DATA CHAR DATA CHAR DATA CHAR DATA CHAR DATA CHAR DATA CHAR DATA CHAR DATA CHAR DATA CHAR DATA CHAR DATA CHAR * DATA CHAR DATA CHAR DATA CHAR DATA CHAR DATA CHAR DATA CHAR DATA CHAR DATA CHAR DATA CHAR DATA CHAR DATA CHAR DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN * DATA PF7 PROGRAM FUNCTION DATA CRUP DATA CRRIGT DATA BAKTAB DATA CRLEFT DATA CRNL DATA PA3 DATA TAB DATA CRDOWN DATA PF1 DATA PF2 DATA PF3 DATA RETURN DATA RETURN DATA RETURN DATA RETURN * DATA CLEAR DATA ERINPT DATA ENTER DATA PF8 DATA PF9 DATA PF10 DATA EREOF DATA CANCEL DATA PA1 DATA PF6 DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN * DATA PF5 DATA PF4 DATA COPY DATA DUP DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN * DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RESET DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN * DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN * DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN * DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN * DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN XIF IFF KB6234=1 CODE SET FOR PTS 6232 DATA DUP DATA COPY DATA PF10 DATA PA2 DATA EREOF DATA ENTER DATA CLEAR DATA ERINPT DATA CHAR SPACE DATA CHAR ! DATA CHAR " DATA CHAR # DATA CHAR $ DATA CHAR % DATA CHAR & DATA CHAR ' DATA CHAR ( DATA CHAR ) DATA CHAR * DATA CHAR + DATA CHAR , DATA NUM - DATA NUM . DATA CHAR / DATA NUM DATA NUM 1 DATA NUM 2 DATA NUM 3 DATA NUM 4 DATA NUM 5 DATA NUM 6 DATA NUM 7 DATA NUM 8 DATA NUM 9 DATA CHAR : DATA CHAR ; DATA RESET DATA CHAR = DATA CHAR > DATA CHAR ? DATA CHAR E' DATA CHAR A DATA CHAR B DATA CHAR C DATA CHAR D DATA CHAR E DATA CHAR F DATA CHAR G DATA CHAR H DATA CHAR I DATA CHAR J DATA CHAR K DATA CHAR L DATA CHAR M DATA CHAR N DATA CHAR O DATA CHAR P DATA CHAR Q DATA CHAR R DATA CHAR S DATA CHAR T DATA CHAR U DATA CHAR V DATA CHAR W DATA CHAR X DATA CHAR Y DATA CHAR Z DATA CHAR POUND SIGN DATA RETURN DATA CHAR DATA CHAR // DATA CHAR DATA CRNL DATA BAKTAB DATA TAB DATA PF3 DATA CRUP DATA CRDOWN DATA PF2 DATA CRLEFT DATA CRRIGT DATA PF1 DATA PA3 DATA PF6 DATA PA1 DATA PF7 DATA PF8 DATA PF9 DATA PF4 DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA PF5 DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN XIF EJECT IFT PFX=1 * * * KEYPF0 EQU * DATA PF1 PROGRAM FUNCTION DATA PF2 DATA PF3 DATA PF4 DATA PF5 DATA PF6 DATA PF7 DATA PF8 DATA PF9 KEYPF1 EQU * DATA PF10 DATA PF11 DATA PF12 XIF IFT PAX=1 KEYPA0 EQU * DATA PA1 DATA CANCEL DATA PA3 XIF EJECT * * * DC TASK * * DCTASK EQU * LDKL A1,TCADDR LDKL A8,ECBDCX ECB DC FOR DC TASK ST A1,ECBCW,A8 LDK A7,/B7 TRANSFER PARAMETERS LKM DATA 1 DCT100 LDK A7,/82 READ FROM DC TASK LKM DATA 1 LD A1,ECBRC,A8 GET RETURN CODE ANKL A1,/2000 RB(NZ) DCT100 STATUS CHANGE LDK A7,/A2 MESSAGE: RELEASE READ BUFFER LKM DATA 1 RB DCT100 * * ECBDCX DATA /60,0,0,0,0,0 EJECT * * * SUBROUTINE ACTIVATED BY ALL TASKS * * EMULA EQU * LD A1,DCADDR,TCABAS ADDRESS TO TCA LDKL A8,ECBDCT ADR A8,CREBAS GET ECB ADDRESS ST A1,ECBCW,A8 STORE IN ECBDCT IFT RDBUF=1 LDKL A2,BVDU ADR A2,TCABAS VDU-BUFFER ADDRESS ST A2,ECBBA,A8 LDKL A3,PCURS ADR A3,TCABAS CURSOR ADDRESS ST A3,ECBRL,A8 XIF ADKL A8,ECBDC-ECBDCT RELATIVE ADDRESS RELATIVE ADDR. TO ECBDC ST A1,ECBCW,A8 STORE IN ECBC IFT RDBUF=1 ST A2,ECBBA,A8 SAVE VDU-BUFFER ADDRESS ST A3,ECBRL,A8 SAVE CURSOR ADDRESS XIF LDK A7,/B7 TRANSFER PARAMETERS LKM DATA 1 RTN A14 EJECT * ***************************************************** * * VDUKB * * MAIN MODULE FOR KEYBOARD VDU * ******************************************************** VDUKB EQU * CF A14,I:EVA0 LDR TCABAS,A9 LOAD ASSEM TCA BASE CF A14,I:EVA0 GET TASK INDEX IFT OFLIN=1 STR A12,A14 SAVE REGISTERS A12-A13 ON A14 STACK ST A13,-2,A14 SUKL A14,4 UPDATE STACK POINTER XIF LDR* A9,A9 IFF MGTP=0 LDR A1,A9 ORKL A1,'G0' HARDCOPY TASK IDENTITY ST A1,COPNO,TCABAS XIF ADR A9,A9 LD A1,SELTAB,A9 GET SELECT ADDRESS ST A1,DCADDR,TCABAS CF A14,EMULA IFT OFLIN=1 CM OFFFLG,TCABAS CLEAR OFFLINE FLAG CF A14,OFL:OF TURN OFF OFFLINE LAMP XIF CF A14,ERASE ERASE SCREEN IFT MGTP=0 LDKL A1,'G0' HARDCOPY TASK IDENTITY ST A1,COPNO,TCABAS SAVE IT IN USER WORK BLOCK XIF LDK A1,1 LDKL A8,ECBKB ADR A8,CREBAS ST A1,ECBRL,A8 REQUESTED LEN =1 LDKL A1,LBVDU+1 ST A1,CURATT,TCABAS INITIATE WITH UNFORM. SCREEN VDU100 CF A14,READKB READ KEYBOARD IFT KB6234=1 SUK A2,/20 INDEX TO KEYTABLE XIF IFF KB6234=1 SUK A2,X'18' XIF ADR A2,A2 VDU200 LDKL A8,ECBVDU ADR A8,CREBAS CFI A14,KEYTAB,A2 GET KEY MODULE RB VDU100 EJECT * * ********************************************************** * * RETURN * ************************************************************** * RETURN RTN A14 EJECT * ******************************************************* * * CRLEFT * * THIS MODULE MOVES THE CURSOR ONE POS TO LEFT * ******************************************************* * CRLEFT EQU * LD A2,PCURS,TCABAS GET CURSOR BINARY SUK A2,1 RF(NN) CRL050 NOT LEFTMOST POS LDKL A2,LBVDU-1 CRL050 RF CRH100 * ******************************************************** * * CRRIGT * * THIS MODULE MOVES THE CURSOR ONE POS. TO THE RIGHT * ******************************************************** * * A3=CHARACTER * CRRIGT EQU * LD A2,PCURS,TCABAS GET CURSOR BINARY ADK A2,1 CWK A2,LBVDU END OF BUFFER? RF(L) CRR050 NO LDK A2,0 CRR050 RF CRH100 EJECT * *********************************************************** * * CRDOWN * * THE MODULE MOVES THE CURSOR TO NEXT ROW. SAME COLUMN. * ************************************************************ * CRDOWN EQU * LD A2,PCURS,TCABAS GET CURSOR POS ADKL A2,LLINE CWK A2,LBVDU LAST LINE? RF(L) CRD050 NO SUKL A2,LBVDU CRD050 RF CRH100 * ************************************************************** * * CRUP * * MOVE CURSOR ONE LINE UP. SAME COL. * ************************************************************** * CRUP EQU * LD A2,PCURS,TCABAS GET CURSOR BINARY SUKL A2,LLINE RF(NN) CRU050 UPMOST LINE ADKL A2,LBVDU CRU050 RF CRH100 EJECT * ****************************************************** * * CRHOME * * HOME POSITIONING OF CURSOR * ****************************************************** * CRHOME EQU * LDK A2,0 CRH100 EQU * ST A2,PCURS,TCABAS GET CURSOR BINARY CF A14,ATMASB UPDATE ATTRIB CF A14,SETCUR DISPLAY CURSOR RTN A14 EJECT * ***************************************************** * * CRNL * * CURSOR IN FIRST UNPROTECTED POS ON NEW LINE * ***************************************************** * CRNL EQU * LD A2,PCURS,TCABAS GET CURSOR POS ADKL A2,LLINE NEXT LINE CWK A2,LBVDU RF(L) CRN050 LDK A2,0 WRAP AROUND * * COMPUTE LEFTMOST POS * CRN050 LDK A1,0 CRN100 SUKL A2,LLINE RF(N) CRN120 ADKL A1,LLINE RB CRN100 CRN120 ST A1,PCURS,TCABAS STORE CURSOR ADDRESS EJECT ****************************************************************** LDR A2,A1 CF A14,ATMASB SEARCH ATTRIBUTE BACKWARDS SUK A1,1 RF(Z) CRN130 NO ATTRIBUTE FOUND ANK A3,/10 RF(NZ) TAB PROTECTED FIELD CW A2,PCURS,TCABAS CURSOR ON ATTRIBUTE ?? RF(NE) CRN150 NO!! CWK A2,1919 LAST SCREEN POSITION?? RF(NE) CRN140 NO!! CRN130 LDKL A2,-1 CRN140 ADK A2,1 ST A2,PCURS,TCABAS CRN150 CF A14,SETCUR POSITION CURSOR RTN A14 ******************************************************************* EJECT * **************************************************** * * TAB * * MOVE THE CURSOR TO THE FIRST CHAR. LOCATION * OF THE NEXT UNPROTECTED DATA FIELD * **************************************************** * * A1=END OF BUFFER PAREM. 0=EOB NOT REACHED * 2=EOB * 3=ATTRIB. IN EOB POS * A2=CURSOR BINARY ADDRESS * A3=CHARACTGR * TAB EQU * LDK A5,1 LD A2,PCURS,TCABAS GET CURSOR POS TAB100 CF A14,ATMASF SEARCH ATTRIBUTE CWK A1,0 END OF BUFFER? RF(G) TAB300 YES ADK A2,1 TAB150 ANK A3,/10 UNPROTECTED? RF(E) TAB200 YES RB TAB100 NEXT ATTRIB. TAB200 ST A2,PCURS,TCABAS CF A14,SETCUR DISPLAY NEW CURSOR RTN A14 TAB300 LDK A2,0 CWK A1,3 ATTRIBUTE IN LAST POSITION ?? ******************************************************** RF(NE) TAB350 NO!! ANK A5,1 WHOLE BUFFER CONTROLLED ?? RB(Z) TAB200 YES!! SUR A5,A5 RB TAB150 CHECK ATTRIBUTE TAB350 EQU * ******************************************************** ANK A5,1 WHOLE BUFF. CONTROLED? RF(G) TAB400 NO RB TAB200 ALL PROT. OR NON-FORMATTED BUFF. TAB400 LDK A5,0 RB TAB100 EJECT * *********************************************************** * * DUP * * DUPLICATE KEY * OPERATION OF THIS KEY CAUSES A UNIQUE CHARACTER CODE * TO BE ENTERED INTO THE DISPLAY BUFFER AND A STANDARD * TAB KEY OPERATION TO BE PERFORMED * ************************************************************ * DUP EQU * LDK A2,/7B LD A3,ECBKB+ECBBA,CREBAS GET KB BUFF. ADDR. SCR A2,A3 CF A14,CHAR CF A14,TAB RTN A14 EJECT * ***************************************************** * * BAKTAB * * MOVE THE CURSOR TO THE FIRST CHARACTER LOCATION * OF THE NEXT PRECIDING UNPROTECTED DATA FIELD * **************************************************** * * A2=CURSOR BINARY ADDRESS * A3=CHARACTER BAKTAB EQU * LDK A5,1 LD A2,PCURS,TCABAS GET CURSOR POS CF A14,GBUFFC GET BUFF CHAR. CWK A3,/1F ATTRIB. CHAR? RF(NG) BAK100 YES CWK A2,0 UPPER LEFTMOST POS? RF(E) BAK400 YES SUK A2,1 BAK100 CWK A2,0 UPPER LEFTMOST POS? RF(E) BAK400 YES BAK200 SUK A2,1 CF A14,ATMASB SEARCH ATTRIBUTE ************************************************************ SUK A1,1 RF(Z) BAK400 NO ATTRIBUTE RF(N) BAK250 ATTRIBUTE FOUND. NOT IN LAST POS. SUR A2,A2 ATTRIBUTE FOUND IN LAST POSITION RF BAK300 BAK250 EQU * ********************************************************* ANK A3,/10 PROTECTED? RB(NE) BAK100 YES ADK A2,1 BAK300 ST A2,PCURS,TCABAS CF A14,SETCUR SET CURSOR RTN A14 BAK400 SUK A5,1 WHOLE BUFF CONTROLLED? RB(NZ) BAK300 YES LDKL A2,LBVDU-1 END BUFFER ADDRESS CF A14,GBUFFC GET BUFF CHAR. CWK A3,/1F ATTRIBUTE CHAR? RB(G) BAK200 NO ANK A3,/10 PROTECTED? RB(NE) BAK200 YES ST A3,ATTRIB,TCABAS UPDATE NEW ATTRIBUTE ST A2,CURATT,TCABAS *************************************************************** RB BAK200 **************************************************************** EJECT EJECT ************************************************************* * * CONVERT LOWER CASE CHARACTERS 7B,7C AND 7D TO UPPER * CASE CHARACTERS 5B,5C RESPECTIVLY 5D * *************************************************************** CON7B LDK A2,/5B RF CON:ST CON7C LDK A2,/5C RF CON:ST CON7D LDK A2,/5D CON:ST SC* A2,ECBBA,A8 SAVE CONVERTED CHARACTER IN ECB BUFFER RF CHAR * ********************************************************* * * CHAR * * ALPHABETIC AND SPECIAL CHAR UPDATING AND DISPLAYING * ********************************************************* * CHAR EQU * LD A2,PCURS,TCABAS GET CURSOR POS LD A3,CURATT,TCABAS GET ATTRIBUTE ADDRESS CWR A2,A3 CURSOR ON ATTRIB? RF(E) CHA300 YES CHA100 LD A3,ATTRIB,TCABAS GET ATTRIBUTE CHAR LDR A4,A3 ANK A4,/10 PROTECTRED FIELD? RF(NE) CHA300 YES CHA200 LDR A4,A3 ANK A4,/8 NUMERIC FIELD? RF(E) ANCOMM NO CHA300 ABL ERROR NOT ALLOWED DISPLAY POS EJECT * ********************************************************** * * NUM * * DISPLAY AND UPDATE NUMERICS * ********************************************************** * NUM EQU * LD A2,PCURS,TCABAS GET CURSOR POS LD A3,CURATT,TCABAS GET ATTRIBUTE ADDRESS CWR A2,A3 CURSOR ON ATTRIBUTE? RF(E) NUM200 YES NUM100 LD A3,ATTRIB,TCABAS GET ATTRIBUTE CHAR LDR A4,A3 ANK A4,/10 PROTECTED FIELD? RF(E) ANCOMM NO NUM200 ABL ERROR NOT ALLOWED DISPLAY POS EJECT * ********************************************************** * * ANCOMM * * COMMON SUBMODULE FOR ALPHANUMERIC CHAR. DISPLAYING AND * UPDATING * ********************************************************** * ANCOMM EQU * LD* A4,ECBKB+ECBBA,CREBAS GET KEY CODE SRL A4,8 LDKL A6,BVDU ADR A6,TCABAS ADR A6,A2 SCR A4,A6 UPDATE VDU BUFF LD A5,CURATT,TCABAS CWK A5,LBVDU+1 UNFORMATTED SCREEN? RF(E) ANC100 YES SUR A6,A2 BVDU START ADDR. ADR A6,A5 ATTRIB. POS LD A3,ATTRIB,TCABAS GET ATTRIBUTE CHAR ORK A3,1 MDT-BIT ON SCR A3,A6 ANC100 LDK A5,/2B CURSOR NOT MOVED BEF. DISPLAY LD A1,ECBVDU+ECBBA,CREBAS STR A5,A1 LDK A5,/1E ADK A1,2 NEXT POS SCR A5,A1 LOW INT, STORE IN BUFFER LDR A6,A3 ANK A3,/4 STANDARD DISPLAYING? RF(Z) ANC200 YES ANK A6,/2 INTENSIFIED DISPLAYING? RF(Z) ANC150 YES LDK A2,/20 LOAD SPACE RF ANC250 NON DISPLAYING ANC150 LDK A5,/1F SET HIGH INTENSITY SCR A5,A1 STORE IN BUFFER ANC200 LDR A2,A4 UPDATE A2 WITH CHAR ANC250 CF A14,WCHAR DISPLAY CHAR AND CURSOR LD A2,PCURS,TCABAS GET CURSOR POS ADK A2,1 CWK A2,LBVDU RF(NE) ANC255 LDKL A2,0 ANC255 EQU * ST A2,PCURS,TCABAS CF A14,GBUFFC GET BUFFER CHAR CWK A3,/1F ATTRIBUTE CHAR? RF(G) ANC300 NO CF A14,TAB SKIP TO NEXT UNPROTECTED ******************************************* 78-08-15 ANC300 EQU * LD A1,ECBCW,A8 CONTROL WORD ANK A1,X'FF' CHARACTER POSITION SUK A1,81 RF(NZ) ANC350 NOT LAST POSITION ON LINE ******************************************* 78-08-15 CF A14,SETCUR POSITION CURSOR TO 1:ST POS. NEXT LINE ANC350 EQU * RTN A14 EJECT * ********************************************************* * * CANCEL * * PROGRAM ATTENTION KEY WHICH CAUSES AN I/O OPERATION * AND GENERATE AN AID CHARACTER * ********************************************************* * CANCEL EQU * PA2 EQU * LDK A2,/3E CANCEL CHAR CODE CAN100 EQU * CF A14,LMP1ON TURN ON "KEYBOARD INHIBIT" CF A14,TRPA UPDATE AID AND TRANSMIT RTN A14 * IFT PAX=1 * * * PROGRAM ATTENTION KEY IS PRESSED AND NUMBER WILL BE INSERTED TO * DEFINE ONE OF THE FUNCTIONS UNDER PA1.CANCEL OR PA3 * * PA EQU * CF A14,READKB READ ONE NUM.CHAR. SUK A2,/31 CHECK IF NUM.1-3 RF(L) PFERR ILLEGAL CHAR. SUK A2,/2 CHECK IF NUM.1-3 RF(G) PFERR ILLEGAL CHAR. ADK A2,/2 PREPARE A2 AS INDEX ADR A2,A2 CFI A14,KEYPA0,A2 GO TO PA-HANDLING RTN A14 RETURN TO MAIN READ LOOP XIF EJECT * * PA1 PROGRAM ATTENTION KEY * * PA1 EQU * LDK A2,/25 PA1 CHAR CODE RB CAN100 * * * PA3 PROGRAM ATTENTION KEY * * PA3 EQU * LDK A2,/2C PA3 CHAR CODE RB CAN100 EJECT * ******************************************************** * * ENTER * * PROGRAM FUNCTION KEY WHICH CAUSES AN I/O OPERATION * AND GENERATE AN AID CHARACTER FOLLOWED BY AN SBA ORDER * ATTRIBUTE ADDRESS AND TEXT FOR EACH MODIFIED FIELD * NULLS ARE SUPRESSED * ********************************************************* * ENTER EQU * LDK A2,/27 ENTER CHAR CODE ENT100 EQU * CF A14,LMP1ON TURN ON "KEYBOARD INHIBIT" CF A14,TRPF AID+MODIFIED FIELDS+TRANSMIT ENT200 EQU * RTN A14 * IFT PFX=1 * * * PROGRAM FUNCTION KEY IOS PRESSED AND NUMBER WILL BE INSERTED TO * DEFINE ONE OF THE FUNCTIONS UNDER PF1-PF12 * * PF EQU * CF A14,READKB READ FIRST NUM. SUK A2,/30 LEGAL CHAR ? RF(L) PFERR ILLEGAL,GO TO ERR.HANDLING RF(Z) PF0 FIRST NUM. 0 GO TO PF0 SUK A2,/1 FIRST NUM. 1 ? RF(G) PFERR ILLEGAL NUM. CF A14,READKB READ SEC.NUM. SUK A2,/30 LEGAL NUM.? RF(L) PFERR ILLEGAL GO TO ERR.HANDLING SUK A2,/2 LEGAL NUM ? RF(G) PFERR ILLEGAL GO TO ERR.HANDLING ADK A2,/2 PREPARE A2 AS INDEX ADR A2,A2 CFI A14,KEYPF1,A2 GO TO PF-HANDLING RF PFRTN PF0 EQU * CF A14,READKB READ SEC.NUM. SUK A2,/31 LEGAL NUM ? RF(L) PFERR ILLEGAL GO TO ERR.HANDLING SUK A2,/8 LEGAL NUM ? RF(G) PFERR ILLEGAL GO TO ERR.HANDLING ADK A2,/8 PREPARE A2 AS INDEX ADR A2,A2 CFI A14,KEYPF0,A2 GO TO PF-HANDLING PFRTN EQU * RTN A14 PFERR EQU * CF A14,ERROR GO TO ERR-HANDLING RUTIN RTN A14 GO TO MAIN READ MODULE XIF * * PF1 * * PF1 EQU * LDK A2,/31 RB ENT100 EJECT * * * PF2 * * PF2 EQU * LDK A2,/32 RB ENT100 * * * PF3 * * PF3 EQU * LDK A2,/33 RB ENT100 * * * PF4 * * PF4 EQU * LDK A2,/34 RB ENT100 EJECT * * * PF5 * * PF5 EQU * LDK A2,/35 RB ENT100 * * PF6 * PF6 EQU * LDK A2,/36 RB ENT100 * * PF7 * PF7 EQU * LDK A2,/37 RB ENT100 * * PF8 * PF8 EQU * LDK A2,/38 RB ENT100 * * PF9 * PF9 EQU * LDK A2,/39 RB ENT100 * * * PF10 * PF10 EQU * LDK A2,/3A RB ENT100 EJECT PF11 EQU * LDK A2,/23 RB ENT100 * * * PF12 EQU * LDK A2,/40 RB ENT100 IFT OFLIN=1 EJECT * ************************************************************ * * OFLINE * THE OFFLINE SWITCH "OFFFLG" IS SET = 1 AND * A BRANCH IS MADE BACK TO CREDIT PROGRAM * ************************************************************* * OFLINE EQU * CF A14,OFL:ON TURN ON OFFLINE LAMP IM OFFFLG,TCABAS SET OFFLINE FLAG ADKL A14,4 SKIP ONE STACK LEVEL LD A13,2,A14 RELOAD REGISTERS A12-A13 LD A12,4,A14 ADKL A14,4 UPDATE STACK POINTER ABL I:RT1 RETURN TO "OFFLINE" PROGRAM XIF EJECT * ******************************************************** * * CLEAR * * PROGRAM ATTENTION KEY WHICH CAUSES AN I/O OPERATION * AND GENERATE AN AID CHARACTER. THE ENTIRE DISPLAY * BUFFER IS CLEARED TO NULLS AND CURSOR IS LOCATED IN * HOME POS * ******************************************************** * CLEAR EQU * LDK A2,/5F CLEAR CHAR CODE CF A14,LMP1ON TURN ON "KEYBOARD INHIBIT" CF A14,TRPA UPDATE AID AND TRANSMIT CF A14,ERASE ERASE ENTIRE SCREEN RTN A14 EJECT * ************************************************************ * * EREOF * * ERASE TO END OF FIELD * ************************************************************ * EREOF EQU * LDK A6,1 LD A3,ATTRIB,TCABAS GET ATTRIBUTE ANK A3,/10 UNPROTECTED? RF(E) ERE100 YES ABL ERROR ERE100 LD A2,PCURS,TCABAS ************************ 77.06.01 CW A2,CURATT,TCABAS STANDING ON ATTRIBUTE ?? ABL(E) ERROR YES!! TURN ON ERROR LAMP ************************ 77.06.01 ERE150 CF A14,GBUFFC GET BUFF. CHAR CWK A3,/1F ATTRIBUTE CHAR RF(G) ERE200 NO ERE160 LDR A1,A2 LD A3,PCURS,TCABAS ERE170 EQU * LDKL A4,BVDU ADR A4,TCABAS ADR A4,A3 CF A14,ERASUA ERASE AND REPLASE WITH NULLS CF A14,DISPL DISPLAY ERASED SCREEN * * SET MDT BIT IF FORMATTED SCREEN * LD A2,CURATT,TCABAS CWK A2,LBVDU+1 RF(E) ERE180 UNFORMATTED SCREEN ADK A2,BVDU ADR A2,TCABAS ABSOLUTE ATTRIBUTE ADDRESS LCR A1,A2 GET ATTRIBUTE ORK A1,1 SET MDT BIT SCR A1,A2 ERE180 EQU * RTN A14 ERE200 CWK A2,LBVDU-1 END OF BUFFER? RF(E) ERE300 YES ADK A2,1 RB ERE150 NEXT ERE300 SUK A6,1 WHOLW BUFF CONTROLED? RB(N) ERE160 LDK A2,0 WRAP AROUND. RB ERE150 EJECT * ******************************************************** * * ERINPT * * CLEARS ALL UNPROTECTED CHARACTER LOCATIONS TO NULLS * AND REPOSITIONS THE CURSOR TO THE FIRST UNPROTECTED * CHAR LOCATION ON THE SCREEN * ******************************************************* * ERINPT EQU * CF A14,ERASUP ERASE ALL UNPROTECTED CF A14,DISPL LD A2,PCURS,TCABAS CF A14,ATMASB ********************************************************* SUK A1,1 RF(Z) ERI:10 NO ATTRIBUTE FOUND RF(N) ERI:5 ATTRIBUTE NOT IN LAST POSITION LDKL A2,-1 ATTRIBUTE IN LAST POSITION ERI:5 EQU * ********************************************************** ADK A2,1 ERI:10 EQU * ST A2,PCURS,TCABAS RTN A14 EJECT * ************************************************************ * * ERROR * * THE MODULE TAKES CARE OF UNALLOWED KEYS * *********************************************************** * ERROR EQU * CF A14,LMP2ON TURN ON 'ERROR' LAMP LD A5,KBINH,TCABAS ORK A5,4 BIT 13:=1,ERROR HANDLING.RESET ALLOWED ST A5,KBINH,TCABAS * * TURN ON SOUND ALARM * LDKL A8,ECBVDU ADR A8,CREBAS VDU-ECB ADDRESS LD A2,ECBBA,A8 BUFFER ADDRESS LDK A7,X'2B' CONTROL CHARACTER SC A7,1,A2 LDK A7,X'07' BELL CHARACTER SC A7,2,A2 LDK A7,3 REQUESTED LENGTH ST A7,ECBRL,A8 LDK A7,X'86' SOUND ALARM LKM DATA 1 RTN A14 EJECT * ******************************************************** * * READKB * * READ KEYBOARD MONITOR REQUEST * ******************************************************** * READKB EQU * LDK A7,/81 BASIC READ WITH WAIT LDKL A8,ECBKB ADR A8,CREBAS ST A7,ECBCW,A8 INDICATE NOT POWER OFF LKM DATA 1 LD A2,ECBCW,A8 POWER OFF ??? RF(Z) READ05 YES!!! LD A2,ECBRC,A8 RF(0) READ10 READ05 EQU * LDK A7,/04 RESET KEYBOARD ECB BUFFER LKM DATA 1 RB READKB READ10 EQU * LD A1,KBINH,TCABAS ANK A1,1 RESETTING BY 'RESET' ALLOWED RB(NZ) READ05 NO LC* A2,ECBBA,A8 GET INPUT CHARACTER LD A1,KBINH,TCABAS ANK A1,6 MUST BE RESET KEY RF(Z) READ20 NO CWK A2,RSET RESET KEY ??? RB(NE) READ05 NO READ20 EQU * RTN A14 EJECT * ******************************************************** * * LAMPMODULE * * ******************************************************** * LMP1ON EQU * LDK A7,/B7 LIGHT ON LDK A3,2 CF A14,SDISP RTN A14 LMP1OF EQU * LDK A7,/B8 LIGHT OFF LDK A3,2 CF A14,SDISP RTN A14 LMP2ON EQU * LDK A7,/B7 LIGHT ON LDK A3,4 CF A14,SDISP RTN A14 LMP2OF EQU * LDK A7,/B8 LIGHT OFF LDK A3,4 CF A14,SDISP RTN A14 LMP3ON EQU * LDK A7,/B8 LIGHT OFF LDK A3,8 CF A14,SDISP EJECT RTN A14 LMP3OF EQU * LDK A7,/B7 LIGHT ON LDK A3,8 CF A14,SDISP RTN A14 IFT OFLIN=1 OFL:ON LDK A7,X'B7' TURN ON "OFFLINE" LAMP LDK A3,1 CF A14,SDISP RTN A14 OFL:OF LDK A7,X'B8' TURN OFF "OFFLINE" LAMP LDK A3,1 CF A14,SDISP RTN A14 XIF IFF OFLIN=1 OFL:ON EQU * OFL:OF EQU * RTN A14 XIF EJECT * ******************************************************** * * SDISP * * SIGNAL DISPLAY MONITOR REQUEST * ******************************************************** * SDISP EQU * LDKL A8,ECBSD ADR A8,CREBAS ST A3,ECBCW,A8 LKM DATA 1 RTN A14 EJECT * ******************************************************** * * ATMASB * * SEARCH FOR ATTRIBUTE CHAR BACKWARDS AND MASK IT * ******************************************************** * * A2=CURSOR BINARY ADDRESS * A1=BUFFER SCANNING PARAM. * 0=ATTRIB FOUND 1=END OF BUFFER LEFT * 2= ATTRIBUTE IN LAST POSITION * ATMASB EQU * LDK A1,0 ASB05 EQU * CF A14,GBUFFC GET BUFFER CHAR CWK A3,/1F ATTRIB. CHAR. RF(G) ASB10 NO ASB08 ST A3,ATTRIB,TCABAS ST A2,CURATT,TCABAS CURSOR ON ATTRIBUTE RTN A14 ASB10 CWK A2,0 END OF BUFFER RF(E) ASB20 YES SUK A2,1 RB ASB05 NEXT ASB20 EQU * ************************************************* LDK A1,2 ATTRIBUTE IN LAST POS. LDKL A2,1919 LAST BUFFER POSITION CF A14,GBUFFC GET CHARACTER CWK A3,/1F ATTRIBUTE ??? RB(NG) ASB08 YES!!! SUR A2,A2 FIRST SCREEN POS. ********************************************* LDK A1,1 END BUFFER LEFT CM ATTRIB,TCABAS LDKL A7,LBVDU+1 ST A7,CURATT,TCABAS POSSIBLY UNFORMATTED SCREEN RTN A14 EJECT * ******************************************************** * * ATMASF * * SEARCH FOR ATTRIBUTE CHAR. FORWARDS AND MASK IT * ********************************************************* * * A3=CHARACTER * A2=CURSOR BINARY ADDRESS * A1=BUFFER SCANNING PARAM. * 0=ATTRIB FOUND 2=END OF BUFFER RIGHT * A3=ATTRIB IN LAST BUFF POS * ATMASF EQU * LDK A1,0 ASF05 EQU * CF A14,GBUFFC GET BUFFER CHAR CWK A3,/1F ATTRIB CHAR? RF(G) ASF10 NO ************************************************************ CWK A2,LBVDU-1 EOB +ATTRIB IN LAST POS ************************************************************ RF(NE) ASF08 NO LDK A1,3 ASF08 ST A3,ATTRIB,TCABAS ST A2,CURATT,TCABAS CURSOR ON ATTRIBUTE RTN A14 ASF10 CWK A2,LBVDU-1 END OF BUFFER? RF(L) ASF20 NO LDK A1,2 RTN A14 ASF20 ADK A2,1 RB ASF05 EJECT * ************************************************** * * GBUFFC * * GET VDU BUFFER CHAR WHICH IS INDICATED BY CURSOR * ************************************************** * * A2=CURSOR BINARY ADDR * A3=CHARACTER * * GBUFFC EQU * LDK A3,0 LDKL A4,BVDU ADR A4,TCABAS GET VDU BUFFER ADR A4,A2 LCR A3,A4 GET CHARACTER IN BUFF. RTN A14 EJECT IFT MZERO=1 *************************************************************** * * Z E R O : 3 TRIPLE ZERO KEY * Z E R O : 2 DOUBLE ZERO KEY * ************************************************* ZERO:3 EQU * LDK A1,X'30' CHARACTER ZERO SC* A1,ECBKB+ECBBA,CREBAS STORE CHARACTER IN BUFFER CF A14,NUM DISPLAY CHARACTER ZERO:2 EQU * LDK A1,X'30' CHARACTER ZERO SC* A1,ECBKB+ECBBA,CREBAS STORE CHARACTER IN BUFFER CF A14,NUM DISPLAY CHARACTER CF A14,NUM DISPLAY CHARACTER RTN A14 RETURN XIF EJECT * ************************************************************ * * RESET * * RESET 'KEYBOARD INHIBIT' IN FOLLOWING SITUATIONS: * 1- A DEVICE WITH AN ATTACHED KEYBOARD IS EXECUTING * A COMMAND. BIT 14=1 IN KBINH * 2- A PA-KEY OPERATION IS IN PROCESS PRIOR TO * INITIATION OF A COMMAND FOR A DEVICE WITH AN ATTACHED * KEYBOARD. BIT 14=1 IN KBINH * 3- ERRORSITUATION. BIT 14=1 IN KBINH * * IF BIT 15=1 IN KBINH => NO RESETTING ALLOWED DURING * UPDATE AND DISPLAY SITUATION. * *********************************************************** * RESET EQU * CM KBINH,TCABAS RESSTORE KEYBOARD CF A14,LMP2OF TURN OFF 'ERROR' LAMP CF A14,LMP1OF TURN OFF 'KEYBOARD INHIBIT' LAMP RTN A14 EJECT *************************************************************** * * C O P Y : COPY CONTENTS IN VDU BUFFER ON * HARDCOPY DEVICE * ************************************************************ COPY LD A9,COPNO,TCABAS GET HARDCOPY TASK IDENTITY RF(NP) COP:10 NO HARDCOPY DEVICE CONNECTED CF A14,LMP1ON TURN ON " KEYBOARD INHIBIT " LDR A7,A9 HARDCOPY TASK IDENTITY IM VDUBSY,TCABAS SET VDU BUSY WHEN HARDCOPY LDK A1,1 ORS A1,KBINH,TCABAS SET KEYBOARD TOT. INHIBITED CF A14,GETT:A GET T:A ADDRESS ST A1,CRE,TCABAS SAVE HARDCP. DEV. TCA ADDRESS ST CREBAS,VDUT.A,TCABAS SAVE VDU TASK T:A ADDRESS LDR A1,TCABAS PASS VDU BUFFER AS PARAMETER LKM ACTIVATE HARDCOPY TASK DATA -4 DATA HARDCP EJECT COP:05 EQU * LD A1,VDUBSY,TCABAS HARDCOPY GOING ON ??? RF(Z) COP:08 NO!!! ALREADY FINISHED LDKL A8,10 DELAY TASK 1 SEK. LKM DATA 6 RB COP:05 CHECK IF HARDCOPY READY COP:08 CF A14,LMP1OF TURN OFF " KEYBOARD INHIBIT " RTN A14 RETURN COP:10 CF A14,ERROR TURN ON ERROR LAMP RTN A14 RETURN END