|
|
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: 71790 (0x1186e)
Notes: pts_type(SC)
Names: »KEYB2.SC«
└─⟦7a1dcd5a9⟧ Bits:30009673 Philips computer tape "600134"
└─⟦this⟧ »PT3272/KEYB2.SC«
IDENT KEYB2 REL 11.0 DK 830113 NJ 870150541100 DK3 PA 4-9 830113 NJ DK2 RESTORE A1 AFTER DC ABRT DK1,ERASE ONE LINE 'EOF' =3 ERASE TO END OF FIELD =2 TWO DC-LINES 82-02-28 =1, SYSTEM MODE CURSOR 81-01-26 *************************************************************** * * * MODULE KEYB * * MODULE HANDLING THE KEYBOARD DEVICE * * (EMULATION 3270 SNA/SDLC, BSC) * * * *************************************************************** EJECT *************************************************************** * * * LIST OF ROUTINES * * * * KBINP MAIN ROUTINE * * CPLKB KB-COMPLETION TABLE FOR DIFF. MODES * * KBCPLO KB-COMPLETION ROUTINE IN LOCAL MODE * KBCPSY KB-COMPLETION ROUTINE IN SYSTEM MODE * * KBCPJO KB-COMPLETION ROUTINE IN MY JOB MODE * * READKB READ KEYBOARD WITH NO WAIT * * RESKB RESET KEYBOARD-BUFFER * * ICVRED KB/VDU INTERTASK READ * ICINP INTERTASK INPUT * ICSET SET INTERTASK TIMEOUT * ICREAD READ INTERTASK * ICWRT WRITE INTERTASK * ERROR ILLEGAL KEY-HANDLING * * LAMPROUTINES * * SDISP SIGNAL ROUTINE * * KEYTAB KEY-TABLE, FIXED ENTRY FOR EACH FUNC. * * CHAR ALPHA. CHAR HANDLING * * NUM NUM. CHAR HANDLING * * ANCOMM ALPHANUM. CHAR HANDLING * * CURMOV MOVE CURSOR ON SCREEN * * BAKTAB TAB. UNPROT. BACKWARDS * * TAB TAB. UNPROT. FORWARDS * * CRNL TAB. UNPROT. NEXT LINE * * RDHOME TAB. UNPROT. FIRST ON SCREEN * * EREOF ERASE TO END OF FIELD * * ERINPT ERASE UNPROT. ENTIRE SCREEN * * INSERT INSERT HANDLING * * DELETE DELETE HANDLING * * RESET RESET HANDLING * * DUP DUPLICATE HANDLING * * FLDMRK FIELDMARK HANDLING * * ZERO:2,3 DOUBLE & TRIPLE ZERO HANDLING * * OFLINE OFFLINE HANDLING * * MFCHGE MAIN FRAME CHANGE * * COPY LOCAL HARDCOPY * * IDENT PRINTER IDENT. HANDLING * * KEYL KEYLOCK STATUS HANDLING * * TESTM TEST MODE * ENTER ENTER HANDLING * * CLEAR CLEAR HANDLING * * SYSREQ SYSTEM REQUEST HANDLING * * ATTN ATTENTION HANDLING * * PA PROGRAM ACCESS HANDLING * * PF PROGRAM FUNCTION HANDLING * * RETURN RETURN * * * *************************************************************** EJECT *************************************************** * * * ENTRY POINTS * * * **************************************************** ENTRY KBINP,KBINP2 START LABEL FOR MODULE ENTRY READKB,READK2 READ KEYBOARD ENTRY RESKB RESET KEYBOARD BUFFER ENTRY LMP1ON LAMPROUTINES ENTRY LMP1OF . ENTRY LMP2ON . ENTRY LMP2OF . ENTRY LMP3ON . ENTRY LMP3OF . ENTRY LMP4ON . ENTRY LMP4OF . ENTRY LMP5ON . ENTRY LMP5OF . ENTRY LMP6ON . ENTRY LMP6OF . ENTRY RDHOME TAB. UNPROTECTED FIRST ON SCREEN ENTRY COPY LOCAL HARDCOPY ENTRY ERROR ERROR INDICATION ENTRY TAB TAB FOREWARD UNPROTECTED ENTRY CRDOWN MOVE CURSOR DOWN ONE LINE ENTRY ICVRED VDU INTERTASK READ ENTRY ICINP INTERTASK INPUT ENTRY ICSET SET INTERTASK TIMEOUT ENTRY ICWRT WRITE INTERTASK ENTRY ICREAD READ INTERTASK EJECT ****************************************************** * * * EXTERNAL REFERENCES * * * ****************************************************** EXTRN I:RT1 RETURN TO CREDIT CODE EXTRN ATMASB SEARCH ATTRIBUTE BACKWARDS (VDU) EXTRN ATMASF SEARCH ATTRIBUTE FORWARD (VDU) EXTRN DCABOR ABORT DC-REQUEST (DCSNA,DCBSC) EXTRN ERASE ERASE ENTIRE SCREEN (VDU) EXTRN ERASUA ERASE ALL UNPROTECTED TO ADDRESS (VDU) EXTRN ERASUP ERASE ALL UNPROTECTED (VDU) EXTRN TRPA TRANSMIT SHORT READ (DCSNA,DCBSC) EXTRN TRPF TRANSMIT MODIFIED READ (DCSNA,DCBSC) EXTRN TSTSTA TEST STATUS (DCSNA,DCBSC) EXTRN WCHAR DISPLAY CHAR. AND CURSOR (VDU) EXTRN SOUND SOUND ALARM ON DISPLAY (VDU) EXTRN SCRINF GET SCREEN INFORMATION (VDU) EXTRN STOINF SAVE SCREEN INFORMATION (VDU) EXTRN GETVDU GET CHAR. IN VDU BUFFER (VDU) EXTRN STOVDU STORE CHAR. IN VDU BUFFER (VDU) EXTRN DISCHA DISPLAY CHAR. (VDU) EXTRN POSUNP MOVE CURSOR TO NEXT UNPR. POS. (VDU) EXTRN INSMOD INSERT MODE ROUTINE (VDU) EXTRN DCOFLN INDICATE OFFLINE TO DC (DCSNA,DCBSC) EXTRN DISMOD DISPLAY MODIFIED FIELDS (VDU) EXTRN CONPF CONVERT PF-KEY TABLE (CONVER) EXTRN OPSYS OPEN SYSTEM (DCSNA,DCBSC) EXTRN LINE GET LINE FLAG (VDU) EXTRN SAVE1 SAVE1 REGISTERS (PAD) EXTRN REST1 REST1E REGISTERS (PAD) EXTRN DISID DISPLAY HARDCOPY TASKID EXTRN GETBUF GET BUFFER (PAD) EXTRN RELBUF RELEASE BUFFER (PAD) EXTRN DISSTA DISPLAY STATISTICS (VDU) EXTRN RDSTAT READ STATISTICS (DCBSC) EXTRN CHKSTA CHECK LINE STATUS (DCBSC,DCSNA) EXTRN SETSTA SET STATUS (DCSNA) EXTRN CONCT CONNECT (DCXXX) =2 EXTRN DISCON DISCONNECT (DCXXX) =2 EJECT ************************************************************* * * * CONDITIONAL ASSEMBLY PARAMETERS * * * ************************************************************* X:A EQU 0 SNA HANDLING INCLUDED IF:=1 SNA EQU 0 X:C EQU 0 OFFLINE HANDLING IF :=1 OFLIN EQU 0 X:D EQU 1 NUMBER OF LINES (1-2) NBRLIN EQU 2 X:F EQU 0 KEY-LOCK STATUS IF:=1 KEYLST EQU 0 X:G EQU 0 PF KEY HANDLING IF:=1 PFX EQU 1 X:H EQU 0 PA KEY HANDLING IF :=1 PAX EQU 1 X:I EQU 1 INSERT/DELETE HANDLING IF :=1 IN:DL EQU 1 X:J EQU 1 KB6272 INCLUDED IF :=1 KB6272 EQU 1 X:M EQU 0 COPY COMMAND INCLUDED IF:=1 COPCMD EQU 1 X:O EQU 0 TEST MODE INCLUDED IF:=1 TEST EQU 0 X:P EQU 0 COPY LOCK FUNCTION INCLUDED IF:=1 COPL EQU 0 EJECT *************************************************************** * * * DECLARATIONS OF DATA AND EQUATES * * *************************************************************** * * PREDEFINED KEYS * CRUP EQU /80 FIRST "MOVE CURSOR " KEY ERFKEY EQU /88 ERASE TO END OF FIELD-KEY ERIKEY EQU /89 ERASE ALL UNPROT. RSET EQU /8C RESET KEY IDKEY EQU /93 IDENT KEY FKLKEY EQU /94 FIRST KEYLOCK VALUE LKLKEY EQU /9C LAST KEYLOCK VALUE FIPA EQU /9F FIRST PROGRAM ATTN. KEY ENTKEY EQU /A0 ENTER KEY SYSKEY EQU /A1 SYSTEM REQUEST KEY CLRKEY EQU /A2 CLEAR KEY PFKEY EQU /B1 PROGRAM FUNTION KEY LAKEY EQU /C9 LAST KEY IN KEY-TABLE * * EQUATES FOR ECB HANDLING * ECBBA EQU 2 BUFFER ADDRESS ECBRL EQU 4 REQUESTED LENGTH ECBEL EQU 6 EFFECTIVE LENGTH ECBRC EQU 8 RETURN CODE ECBCW EQU 10 CONTROL WORD ECBCW2 EQU 12 CONTROL WORD TWO DK * * SPECIAL CHARACTERS * NULL EQU 0 NULL CHAR. DUPCH EQU /1C DUPLICATE CHAR. FMCH EQU /1E FIELD MARK CHAR. * * LAMPCONSTANTS * LON EQU /B7 LOF EQU /B8 LFL EQU /B9 FLASH IFT KB6272=1 LAMP1 EQU /20 LAMP2 EQU /10 LAMP3 EQU 8 LAMP4 EQU 4 LAMP5 EQU 2 LAMP6 EQU 1 XIF IFF KB6272=1 LAMP1 EQU 0 LAMP2 EQU 0 LAMP3 EQU 1 LAMP4 EQU 2 LAMP5 EQU 4 LAMP6 EQU 8 XIF * * VDU SCREEN SIZE * LLINE EQU 80 LINE LENGTH LBVDU EQU 1920 TOTAL SIZE * * MODES * NEWMOD EQU /8000 NEW MODE HCPMOD EQU /4000 HARDCOPY OUTSTANDING MYJOB EQU /0004 MY JOB MODE SYSOP EQU /0002 SYSTEM OPERATOR MODE LOCMOD EQU /0000 LOCAL MODE * * TASK IDENTIFICATION CODE * VDUCOD EQU 'VV' VDU KB TASK EJECT * * RELATIVE ADDRESSES IN * TERMINAL WORKBLOCK * BVDU EQU 2 VDU SCREEN BUFFER LINFLG EQU BVDU+1920 LINE FLAGS WCC EQU LINFLG+30 WCC CHAR. KBINH EQU WCC+2 KEYBOARD INHIBIT INDICATOR OFFFLG EQU KBINH+8 OFFLINE FLAG PRTID EQU OFFFLG+2 HARDCOPY PRINTER MAIN EQU PRTID+6 MAIN FRAME MODE EQU MAIN+2 INSERT MODE SWITCH KEYS EQU MODE+2 KEY LOCK STATUS RDMORE EQU KEYS+12 BRANCH ADDRESS TO NEXT KB-KEY CURPOS EQU RDMORE+2 CURSOR POS. IN SYSTEM MODE REGI EQU CURPOS+4 SAVE AREA SNAMOD EQU REGI+32 SNA MODE BSCMOD EQU SNAMOD BSC MODE ECBKB EQU BSCMOD+2 ECB KB ECBSD EQU ECBKB+4 ECB SIGNAL DISPLAY ECBICR EQU ECBSD+4 ECB INTERTASK READ ECBICW EQU ECBICR+2 ECB INTERTAS WRITE ECBKB2 EQU ECBICW+6 ECB 2ND KEYBOARD DK * * RELATIVE ADDRESSES IN * COMMON WORKBLOCK * IFF TEST=1 TSKTAB EQU 26 TASK TABLE XIF IFT TEST=1 TSKTAB EQU 219 TASK TABLE XIF EJECT **************************************************************** * * * KBINP MAIN ROUTINE * * * **************************************************************** * REGISTERS * * A2= KEY-CHAR. * A3= KEY-TABLE INDEX * A4= RESERVED * A5= RESERVED * A6= RESERVED * A7= KEY-HANDLING INDICATOR * A11= CREDIT WORK AREA * A13= RESERVED * *********************************************************** KBINP2 EQU * LDK A1,1 INDICATE 2ND KEYBOARD PRESENT DK ST A1,ECBCW2,A8 DK KBINP EQU * * NO CHECK ON POWER OFF....DK 81-10-17 * IFT KEYLST=0 LD A1,ECBCW,A8 SEE IF KEYLOCK ? DK RF(N) KBIN80 SKIP IT DK XIF IFT KEYLST=1 LC* A2,ECBBA,A8 GET KEYLOCK VALUE ADKL A2,FKLKEY-/70 PREPARE FOR TABLE SC* A2,ECBBA,A8 RESTORE XIF LD A1,ECBRC,A8 ERROR? ANKL A1,/FFF3 RF(NZ) KBIN80 YES LD A1,KBINH,A11 ANK A1,1 KB TOTALY INHIBIT? RF(NZ) KBIN80 YES LC* A2,ECBBA,A8 GET INPUT CHAR. ANK A2,/FF LD A1,KBINH,A11 ANK A1,6 MUST BE A RESET KEY? RF(Z) KBIN30 NO CWK A2,RSET RESET KEY? IFT SNA=1 RF(E) KBIN30 YES CWK A2,SYSKEY SYSTEM REQUEST KEY? XIF RF(NE) KBIN80 NO KBIN30 EQU * LDR A3,A2 SUK A3,/20 INDEX TO KEY-TABLE RF(N) KBIN80 ILLEGAL CHAR CWK A2,LAKEY RF(G) KBIN80 ILLEGAL CHAR IFT SNA=1 LD A1,SNAMOD,A11 GET SNA MODE ANK A1,/FF CFI A14,CPLKB,A1 COMPLETE KB IN CURRENT MODE XIF IFF SNA=1 LDK A7,0 CWK A2,FIPA PROGRAM ATTN KEY? RF(L) KBIN40 NO CM MODE,A11 CF A14,LMP6OF CLEAR INSERT MODE CF A14,DCABOR KBIN40 EQU * XIF LDR A7,A7 ANY KEY-HANDLING RF(NZ) KBIN80 NO ADR A3,A3 PREPARE FOR KEY-TABLE LD A1,RDMORE,A11 KEY IN SEQUENCE? RF(Z) KBIN50 NO CF A14,DCABOR KILL DC AGAIN DK LD A1,RDMORE,A11 RESTORE A1 DK2 CFR A14,A1 CONTINUE AT SAVED LABEL RF KBIN90 KBIN50 EQU * CFI A14,KEYTAB,A3 BRANCH TO RESP. KEY-HANDLER RF KBIN90 KBIN80 EQU * CF A14,RESKB RESET KB BUFFER KBIN90 EQU * RTN A14 EJECT IFT SNA=1 ********************************************************************* * * * CPLKB KB-COMPLETION TABLE * * * ********************************************************************* CPLKB EQU * DATA KBCPLO KB-COMPL. IN LOCAL MODE DATA KBCPSY KB-COMPL. IN SYSTEM MODE DATA KBCPJO KB-COMPL. IN MY JOB MODE EJECT ********************************************************************* * * * KBCLO KB-COMPLETION IN LOCAL MODE * * * ********************************************************************* * REGISTERS * * A2= KEY-CHAR * A3= KEY-TABLE INDEX * A4= RESERVED * A5= RESERVED * A6= RESERVED * A7= KEY-HANDLING INDICATOR * A11= CREDIT WORK AREA * A13= RESERVED * *********************************************************** KBCPLO EQU * LDK A7,0 INDICATE KEY-HANDLING CWK A2,FIPA PROGRAM ATTN, KEY? RF(NG) KBCL90 NO LDK A7,1 NO KEY-HANDLING CWK A2,SYSKEY SYSTEM REQUEST? RF(NE) KBCL80 NO CF A14,OPSYS START COMMUNICATION CF A14,TSTSTA TEST STATUS ANKL A1,/101 ACTIVE? RF(NZ) KBCL90 NO LDK A1,SYSOP INDICATE SYSTEM MODE ORKL A1,/8000 INDICATE MODE ACTIVATION ST A1,SNAMOD,A11 RF KBCL90 KBCL80 EQU * CWK A2,ENTKEY ENTER KEY? RF(NE) KBCL85 NO LD A1,RDMORE,A11 INSIDE IDENT ROUTINE? RF(Z) KBCL85 NO LDK A7,0 INDICATE KEY-HANDLING RF KBCL90 KBCL85 EQU * CF A14,ERROR ILLEGAL KEY KBCL90 EQU * RTN A14 EJECT ******************************************************************** * * * KBCPSY KB-COMPLETION IN SYSTEM MODE * * * ******************************************************************** * REGISTERS * * A2= KEY-CHAR * A3= KEY-TABLE INDEX * A4= RESERVED * A5= RESERVED * A6= RESERVED * A7= KEY-HANDLING INDICATOR * A11= CREDIT WORK AREA * A13= RESERVED * *********************************************************** KBCPSY EQU * LDK A7,0 INDICATE KEY-HANDLING CWK A2,FIPA PROGRAM ATTN. KEY? RF(L) KBCS20 NO CWK A2,CLRKEY UNALLOWED PROGRAM ATTN. KEY? RF(NE) KBCS10 NOT CLEAR KEY LDK A7,1 INDICATE NO KEY-HANDLING CF A14,ERASE ERASE ENTIRE SCREEN RF KBCS80 KBCS10 EQU * RF(G) KBCS70 YES CM MODE,A11 CF A14,LMP6OF CLEAR INSERT MODE CF A14,DCABOR ABORT DC RF KBCS80 KBCS20 EQU * CWK A2,ERIKEY ERASE INPUT KEY? RF(E) KBCS80 YES CWK A2,ERFKEY ERASE END OF FIELD KEY? RF(E) KBCS80 YES CWK A2,CRUP INITIATE CURSOR? =1 RF(NL) KBCS90 NO =1 LD A1,CURPOS,A11 CWK A1,/800 CURSOR INITIATED? RF(NE) KBCS90 YES CF A14,SCRINF GET SCREEN INFO. ST A4,CURPOS,A11 INITIATE CURSOR RF KBCS90 KBCS70 EQU * CF A14,ERROR INDICATE ERROR LDK A7,1 NO KEY-HANDLING RF KBCS90 KBCS80 EQU * LDKL A1,NEWMOD INDICATE MODE ACTIVATION ORS A1,SNAMOD,A11 KBCS90 EQU * RTN A14 EJECT ****************************************************************** * * * KBCPJO KB-COMPLETION IN MY JOB MODE * * * ****************************************************************** * REGISTERS * * A2= KEY-CHAR * A3= KEY-TABLE INDEX * A4= RESERVED * A5= RESRVED * A6= RESRVED * A7= KEY-HANDLING INDICATOR * A11= CREDIT WORK AREA * A13= RESERVED * ************************************************************ KBCPJO EQU * LDK A7,0 INDICATE KEY-HANDLING CWK A2,FIPA PROGRAM ATTN. KEY? RF(L) KBCJ90 NO IFT OFLIN=1 RF(E) KBCJ80 XIF IFT SNA=1 CM MODE,A11 CF A14,LMP6OF TURN OFF INSERT LAMP CF A14,DCABOR ABORT DC IFT OFLIN=1 RF KBCJ90 KBCJ80 EQU * CF A14,ERROR INDICATE ERROR LDK A7,1 NO KEY-HANDLING XIF IFT SNA=1 KBCJ90 EQU * RTN A14 XIF EJECT *************************************************************** * * * READKB READ KEYBOARD WITH NO WAIT * * * *************************************************************** * REGISTERS * * A8= KB-ECB * A11= CREDIT WORK AREA * A13= RESERVED * ***************************************************** READKB EQU * LD A8,ECBKB,A11 LDK A7,0 CLEAR ECBCW ST A7,ECBCW,A8 LDK A7,1 ST A7,ECBRL,A8 * NO POWER OF INDICATOR ,...DK 81-10-17 * LDK A7,2 STANDARD READ LKM DATA 1 RTN A14 ** READ FROM SECOND KEYBOARD, P & T, DK ** READK2 EQU * LD A8,ECBKB2,A11 GET ECB LDK A7,0 CLEAR ECBCW ST A7,ECBCW,A8 LDK A7,1 ST A7,ECBRL,A8 LDK A7,2 STANDARD READ LKM DATA 1 RTN A14 **END DK MODIFICATION ** EJECT *************************************************************** * * * RESKB RESET KEYBOARD BUFFER * * * *************************************************************** * REGISTERS * * A11= CREDIT WORK AREA * A13= RESERVED * ****************************************************** RESKB EQU * * REMOVED UNTIL NEEDED......DK, 811028....** RTN A14 EJECT *********************************************************** * * * ICVRED KB/VDU INTERTASK READ * * *********************************************************** * REGISTERS * * A2= RESERVED * A11= CREDIT WORK AREA * A13= RESERVED * *********************************************************** ICVRED EQU * LD A8,ECBICR,A11 CF A14,ICSET SET NO TIMEOUT IFF COPCMD=1 LD A1,PRTID,A11 XIF IFT COPCMD=1 LDK A1,0 UNADDRESSED XIF LDKL A3,REGI ADR A3,A11 LDK A2,2 LENGTH CF A14,ICREAD READ INTERTASK RTN A14 EJECT **************************************************************** * * * ICINP INTERTASK INPUT * * * **************************************************************** * REGISTERS * * A11= CREDIT WORK AREA * A13= RESERVED * **************************************************************** ICINP EQU * LD* A2,ECBBA,A8 IFT COPCMD=1 LDR A1,A2 COPY COMMAND? RF(NN) ICIN80 NO LDKL A3,BVDU BUFFER TO SEND ADR A3,A11 IFT COPL=1 LCR A2,A3 CHECK IF ALLOWED TO COPY CCK A2,/8000 ATTRIBUTE? RF(L) ICIN20 NO ANK A2,/20 PROTECTED? RF(NZ) ICIN90 YES DON'T COPY ICIN20 EQU * XIF IFT COPCMD=1 LD A2,ECBCW,A8 GET TO WHOM LD A8,ECBICW,A11 CF A14,ICSET SET TIMEOUT LDR A1,A2 LDKL A2,LBVDU+/20 LENGTH CF A14,ICWRT SEND IT AWAY LDKL A1,HCPMOD HARDCOPY OUTSTANDING ORS A1,BSCMOD,A11 RF ICIN90 ICIN80 EQU * XIF LDKL A1,HCPMOD RESET HARDCOPY OUTSTANDING IFT SNA=1 XRS A1,SNAMOD,A11 XIF IFF SNA=1 XRS A1,BSCMOD,A11 XIF ANK A2,1 PRINTER OK? RF(Z) ICIN90 YES ICIN90 EQU * RTN A14 EJECT *********************************************************** * * * ICSET SET INTERTASK TIMEOUT * * * *********************************************************** * REGISTERS * * A2= RESERVED * A8= INTERTASK ECB * A11= RESERVED * A13= RESERVED * ********************************************************** ICSET EQU * LDKL A1,-1 NO TIMEOUT ST A1,ECBCW,A8 LDK A7,/B9 SET TIMEOUT LKM DATA 1 RTN A14 EJECT ************************************************************* * * * ICREAD INTERTASK READ * * * ************************************************************** * REGISTERS * * A1= TASK ID * A2= LENGTH * A3= BUFFER ADDRESS * A8= INTETASK READ ECB * A11= RESERVED * A13= RESERVED * ************************************************************* ICREAD EQU * ST A1,ECBCW,A8 TASK ID ST A2,ECBRL,A8 LENGTH ST A3,ECBBA,A8 BUFFER ADDRESS LDK A7,/02 READ LKM DATA 1 RTN A14 EJECT *************************************************************** * * * ICWRT INTERTASK WRITE * * * *************************************************************** * REGISTERS * * A1= TASK ID * A2= LENGTH * A3= BUFFER ADDRESS * A8= INTERTASK WRITE ECB * A11= RESERVED * A13= RESERVED * **************************************************************** ICWRT EQU * ST A1,ECBCW,A8 TASK ID ST A2,ECBRL,A8 LENGTH ST A3,ECBBA,A8 BUFFER ADDRESS LDK A7,/86 WRITE LKM DATA 1 RTN A14 EJECT ******************************************************************* * * * ERROR ILLEGAL KEY-HANDLING * * * ******************************************************************* * REGISTERS * * A11= CREDIT WORK AREA * A13= RESERVED * ******************************************************* ERROR EQU * CF A14,LMP4ON TURN ON 'ERROR' LAMP LDK A1,4 RESET ALLOWED ORS A1,KBINH,A11 CF A14,SOUND TURN ON SOUND ALARM RTN A14 EJECT ************************************************************* * * * LAMPROUTINES * * * ************************************************************* LMP1ON LDK A1,LAMP1 RF LMPON LMP1OF LDK A1,LAMP1 RF LMPOF LMP2ON LDK A1,LAMP2 RF LMPON LMP2OF LDK A1,LAMP2 RF LMPOF LMP3ON LDK A1,LAMP3 RF LMPON LMP3OF LDK A1,LAMP3 RF LMPOF LMP4ON LDK A1,LAMP4 RF LMPON LMP4OF LDK A1,LAMP4 RF LMPOF LMP5ON LDK A1,LAMP5 RF LMPON LMP5OF LDK A1,LAMP5 RF LMPOF LMP5FL LDK A1,LAMP5 RF LMPFL LMP6ON LDK A1,LAMP6 RF LMPON LMP6OF LDK A1,LAMP6 RF LMPOF * LMPON LDK A7,LON RF SDISP LMPOF LDK A7,LOF RF SDISP LMPFL LDK A7,LFL RF SDISP EJECT ************************************************************* * * * SDISP SIGNAL ROUTINE * * * ************************************************************* * REGISTERS * * A8= SIGNAL ECB * A11= CREDIT WORK AREA * A13= RESERVED * ******************************************************* SDISP EQU * LD A8,ECBSD,A11 ST A1,ECBCW,A8 ** SECOND KEYBOARD MODS, DK, P & T ** LD A8,ECBSD,A11 GET DISP. ECB LDK A1,/41 CHANGE FILE CODE SC A1,1,A8 LKM DATA 1 LAMPS ON SECOND KEYB'RD SDISP1 EQU * LD A8,ECBSD,A11 LDK A1,/40 RESTORE FILE CODE 1ST KB SC A1,1,A8 ** END OF DK MODS ** LKM DATA 1 RTN A14 EJECT **************************************************************** * * * KEYTAB KEY-TABLE, FIXED ENTRY FOR EACH FUNC. * * * **************************************************************** KEYTAB EQU * *20 DATA CHAR SPACE 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 NUM - DATA NUM . DATA CHAR / *30 DATA NUM 0 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 ? *40 DATA CHAR 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 *50 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 DATA CHAR DATA CHAR DATA CHAR ^ DATA CHAR UNDERLINE *60 DATA CHAR DATA CHAR a LOWER CASE A-Z 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 *70 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 DATA CHAR DATA CHAR DATA CHAR DATA RETURN *80 DATA CURMOV DATA CURMOV DATA CURMOV DATA CURMOV DATA BAKTAB DATA TAB DATA CRNL DATA RDHOME DATA EREOF DATA ERINPT IFT IN:DL=1 DATA INSERT DATA DELETE XIF IFF IN:DL=1 DATA RETURN DATA RETURN XIF DATA RESET DATA DUP DATA FLDMRK DATA ZERO:2 *90 DATA ZERO:3 DATA NUMCOM DATA COPY DATA IDENT IFT KEYLST=1 DATA KEYL DATA KEYL DATA KEYL DATA KEYL DATA KEYL DATA KEYL DATA KEYL DATA KEYL XIF IFF KEYLST=1 DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN DATA RETURN XIF DATA RETURN FREE LABEL FOR NEW KEY (NOT P. A. KEY) DATA RETURN FREE LABEL FOR NEW KEY (NOT P. A. KEY) DATA RETURN FREE LABEL FOR NEW KEY (NOT P. A. KEY) *FIRST P. A. KEY IFT OFLIN=1 DATA OFLINE XIF IFF OFLIN=1 DATA RETURN XIF *A0 DATA ENTER IFT SNA=1 DATA SYSREQ DATA CLEAR DATA ATTN XIF IFF SNA=1 DATA RETURN DATA CLEAR DATA RETURN XIF IFT NBRLIN=2 DATA MFCHGE XIF IFF NBRLIN=2 DATA RETURN XIF IFT PAX=1 DATA PAEX XIF IFF PAX=1 DATA RETURN XIF DATA PA1 DATA PA2 DATA PA3 DATA PAALFA PA4-PA10 (ALFASKOP) DATA PAALFA DATA PAALFA DATA PAALFA DATA PAALFA DATA PAALFA DATA PAALFA *B0 IFT PFX=1 DATA PFEX XIF IFF PFX=1 DATA RETURN XIF DATA PF 1 DATA PF 2 DATA PF 3 DATA PF 4 DATA PF 5 DATA PF 6 DATA PF 7 DATA PF 8 DATA PF 9 DATA PF 10 DATA PF 11 DATA PF 12 DATA PF 13 DATA PF 14 DATA PF 15 *C0 DATA PF 16 DATA PF 17 DATA PF 18 DATA PF 19 DATA PF 20 DATA PF 21 DATA PF 22 DATA PF 23 DATA PF 24 IFF TEST=1 DATA RETURN XIF IFT TEST=1 DATA TESTM XIF EJECT ************************************************************** * * * CHAR ALPHABETIC AND SPEC. CHAR UPDAT. DISPL. * * * ************************************************************** * REGISTERS * * A2= KEY-CHAR * A3= ATTRIBUTE MASKL * A4= RESERVED * A5= RESERVED * A6= RESERVED * A11= RESERVED * A13= RESERVED * ************************************************************** CHAR EQU * LDK A3,/30 LOAD ATTRIBUTE MASK CF A14,ANCOMM TAKE CARE OF CHAR. RTN A14 EJECT ************************************************************** * * * NUM NUMERIC UPDAT. DISPL. * * NUMCOM NUMERIC COMMA * * * ************************************************************** * REGISTERS * * A2= KEY-CHAR * A3= ATTRIBUTE MASK * A4= RESERVED * A5= RESERVED * A6= RESERVED * A11= RESERVED * A13= RESERVED * ************************************************************* NUMCOM EQU * LDK A2,/2C INSERT COMMA NUM EQU * LDK A3,/20 LOAD ATTRIBUTE MASK CF A14,ANCOMM TAKE CARE OF CHAR. RTN A14 EJECT *************************************************************** * * * ANCOMM COMMON ROUTINE FOR ALPHANUM. CHAR. * * * *************************************************************** * REGISTERS * * A2= KEY-CHAR * A3= AT ENTRY ATTRIBUTE MASK * A4= REL. CURSOR POS. * A5= REL. ATTRIBUTE POS. * A6= ATTRIBUTE CHAR. * A11= CREDIT WORK AREA * A13= RESERVED * *************************************************************** ANCOMM EQU * CF A14,SCRINF GET SCREEN INFORMATION CWR A4,A5 CURSOR ON ATTRIBUTE RF(E) ANC800 YES LDR A1,A6 ANR A1,A3 ALLOWED POS. ? RF(NZ) ANC800 NO IFT IN:DL=1 LD A1,MODE,A11 INSERT MODE? RF(Z) ANC100 NO CF A14,INSMOD LDR A7,A1 ANK A7,1 INSRETED NORMAL? RF(NZ) ANC900 YES ANK A1,2 INSERT NOT ALLOWED? RF(NZ) ANC800 YES XIF ANC100 EQU * LDR A1,A4 LDR A7,A2 CF A14,STOVDU STORE KEY-CHAR IN VDU BUFFER CF A14,WCHAR DISPLAY CHAR AND CURSOR CF A14,POSUNP MOVE CURSOR TO NEXT UNPROTECTED POS. RF ANC900 ANC800 EQU * CF A14,ERROR INDICATE ERROR ANC900 EQU * RTN A14 EJECT ************************************************************ * * * CURMOV MOVE CURSOR ON SCREEN * * * ************************************************************ * REGISTERS * * A2= KEY-CHAR * A4= REL. CURSOR POS. * A5= REL. ATTRIBUTE POS. * A6= ATTRIBUTE CHAR * A11= RESERVED * A13= RESERVED * ************************************************************ CURMOV EQU * CF A14,SCRINF GET SCREEN INFO. SUK A2,CRUP GET INDEX ADR A2,A2 CFI A14,CURTAB,A2 JUMP IN CURSOR TABLE CF A14,STOINF SAVE SCREEN INFORMATION CWK A5,LBVDU+1 UNFORMATTED SCREEN RF(E) CURM10 YES LDR A1,A4 CF A14,ATMASB UPDATE ATTRIBUTE CURM10 EQU * LDK A1,2 REQ. LENGTH CF A14,DISCHA SET CURSOR RTN A14 EJECT * CURTAB CURSOR JUMP TABLE CURTAB EQU * DATA CRLEFT MOVE CURSOR TO LEFT DATA CRRIGT MOVE CURSOR TO RIGHT DATA CRDOWN MOVE CURSOR DOWN DATA CURUP MOVE CURSOR UP * CRLEFT MOVE CURSOR TO LEFT CRLEFT EQU * SUK A4,1 RF(NN) CRRET NOT LEFTMOST POS. LDKL A4,LBVDU-1 LAST POS. ON SCREEN RF CRRET * CRRIGT MOVE CURSOR TO RIGHT CRRIGT EQU * ADK A4,1 CWK A4,LBVDU END OF BUFFER? RF(L) CRRET NO LDK A4,0 RF CRRET * CRDOWN MOVE CURSOR DOWN CRDOWN EQU * ADKL A4,LLINE CWK A4,LBVDU LAST LINE? RF(L) CRRET NO SUKL A4,LBVDU RF CRRET * CURUP MOVE CURSOR UP CURUP EQU * SUKL A4,LLINE RF(NN) CRRET UPMOST LINE ADKL A4,LBVDU CRRET EQU * RTN A14 EJECT ************************************************************** * * * BAKTAB TAB. UNPROTECTED BACKWARDS * * * ************************************************************** * REGISTERS * * A4= REL. CURSOR POS. * A5= REL. ATTRIBUTE POS. * A6= ATTRIBUTE CHAR. * A9= REL. ATTRIBUTE START POS. * A11= RESERVED * A13= RESERVED * *************************************************************** BAKTAB EQU * CF A14,SCRINF GET SCREEN INFORMATION LDR A9,A5 CWK A5,LBVDU+1 UNFORMATTED SCREEN? RF(E) BAK600 YES CWR A4,A5 STANDING ON ATTRIBUTE? RF(E) BAK300 YES SUK A4,1 RF(NN) BAK100 NOT FIRST POS. ON SCREEN LDKL A4,LBVDU-1 LAST POS. ON SCREEN BAK100 EQU * CWR A4,A5 STANDING ON POS. AFTER ATTRIBUTE? RF(E) BAK300 YES LDR A4,A5 LDR A7,A6 ANK A7,/20 PROTECTED FIELD? RF(Z) BAK500 NO BAK300 EQU * SUK A4,1 RF(NN) BAK400 LDKL A4,LBVDU-1 BAK400 EQU * LDR A1,A4 CF A14,ATMASB SEARCH ATTRIBUTE BACKWARDS AND MASK IT LDR A7,A6 ANK A7,/20 PROTECTED FIELD? RF(Z) BAK500 NO LDR A4,A5 CWR A5,A9 WHOLE SCREEN SEARCHED? RB(NE) BAK300 NO LDK A1,0 FIRST SCREEN POS. CF A14,ATMASB UPDATE FIELD INFORMATION RF BAK600 BAK500 EQU * LDR A4,A5 ADK A4,1 CWK A4,LBVDU-1 WRAP AROUND? RF(NG) BAK700 NO BAK600 EQU * LDK A4,0 FIRST SCREEN POS. BAK700 EQU * CF A14,STOINF SAVE SCREEN INFORMATION LDK A1,2 REQ. LENGTH CF A14,DISCHA SET CURSOR RTN A14 EJECT ************************************************************* * * * TAB TAB. UNPROTECTED FORWARD * * * ************************************************************* * REGISTERS * * A4= REL. CURSOR POS. * A5= REL. ATTRIBUTE POS. * A6= ATTRIBUTE CHAR. * A9= REL. ATTRIBUTE START POS. * A11= RESERVED * A13= RESERVED * ************************************************************** TAB EQU * CF A14,SCRINF GET SCREEN INFORMATION LDR A9,A5 CWK A5,LBVDU+1 UNFORMATTED SCREEN? RF(E) TAB200 YES TAB100 EQU * LDR A1,A4 CF A14,ATMASF SEARCH ATTRIBUTE FORWARD LDR A4,A5 NEW CURSOR POS. LDR A7,A6 ANK A7,/20 PROTECTED FIELD? RF(Z) TAB150 NO CWR A5,A9 WHOLE SCREEN SEARCHED? RB(NE) TAB100 NO LDK A1,0 FIRST POS. ON SCREEN CF A14,ATMASB UPDATE FIELD INFORMATION RF TAB200 TAB150 EQU * ADK A4,1 CWK A4,LBVDU-1 LAST SCREEN POS.? RF(NG) TAB300 NO TAB200 EQU * LDK A4,0 FIRST SCREEN POS. TAB300 EQU * CF A14,STOINF SAVE SCREEN INFORMATION LDK A1,2 REQ. LENGTH CF A14,DISCHA SET CURSOR RTN A14 EJECT ******************************************************************* * * * CRNL TAB. UNPROTECTED TO NEXT LINE * * * ******************************************************************* * REGISTERS * * A4= REL. CURSOR POS. * A5= REL. ATTRIBUTE POS. * A6= ATTRIBUTE CHAR. * A11= RESERVED * A13= RESERVED * ***************************************************************** CRNL EQU * CF A14,SCRINF GET SCREEN INFORMATION CF A14,CRDOWN MOVE CURSOR DOWN LDK A1,0 COMPUTE LEFTMOST POS. CRN100 EQU * SUK A4,LLINE RF(N) CRN200 ADK A1,LLINE RB CRN100 CRN200 EQU * LDR A4,A1 CWK A5,LBVDU+1 UNFORMATTED SCREEN? RF(E) CRN800 YES CF A14,GETVDU GET CHAR. IN VDU BUFFER CCK A7,/80 ATTRIBUTE? RF(NL) CRN400 YES LDR A1,A4 CF A14,ATMASB SEARCH ATTRIBUTE BACKWARD LDR A7,A6 ANK A7,/20 PROTECTED? RF(Z) CRN800 NO RF CRN500 CRN400 EQU * SUK A4,1 RF(NN) CRN500 NOT WRAP AROUND LDKL A4,LBVDU-1 LAST SCREEN POS. CRN500 EQU * CF A14,STOINF SAVE SCREEN INFORMATION CF A14,TAB TAB. UNPROTECTED FORWARD RF CRN900 CRN800 EQU * CF A14,STOINF SAVE SCREEN INFORMATION LDK A1,2 REQ. LENGTH CF A14,DISCHA SET CURSOR CRN900 EQU * RTN A14 EJECT ********************************************************************* * * * RDHOME TAB. UNPROTECTED FIRST ON SCREEN * * * ********************************************************************* * REGISTERS * * A4= REL. CURSOR POS. * A5= REL. ATTRIBUTE POS. * A6= ATTRIBUTE CHAR. * A11= RESERVED * A13= RESERVED * ********************************************************************* RDHOME EQU * CF A14,SCRINF GET SCREEN INFORMATION LDK A4,0 FIRST POS. ON SCREEN CF A14,STOINF CWK A5,LBVDU+1 UNFORMATTED SCREEN? RF(E) RDH800 YES LDR A1,A4 CF A14,GETVDU GET CHAR. IN VDU BUFFER CCK A7,/8000 ATTRIBUTE? RF(L) RDH100 NO LDKL A4,LBVDU-1 LAST SCREEN POS. CF A14,STOINF SAVE SCREEN INFORMATION RF RDH300 RDH100 EQU * LDR A1,A4 CF A14,ATMASB GET ATTRIBUTE BACKWARD LDR A7,A6 ANK A7,/20 PROTECTED? RF(Z) RDH800 NO RDH300 EQU * CF A14,TAB TAB. UNPROTECTED FORWARD RF RDH900 RDH800 EQU * CF A14,STOINF SAVE SCREEN INFORMATION LDK A1,2 REQ. LENGTH CF A14,DISCHA SET CURSOR RDH900 EQU * RTN A14 EJECT ************************************************************* * * * EREOF ERASE TO END OF FIELD * * * ************************************************************* * REGISTERS * * A4= REL. CURSOR POS. * A5= REL. ATTRIBUTE POS. * A6= ATTRIBUTE CHAR. * A11= RESERVED * A13= RESERVED * ******************************************************************* EREOF EQU * CF A14,SCRINF GET SCREEN INFORMATION CWK A5,LBVDU+1 UNFORMATTED SCREEN? RF(E) ERE700 YES LDR A7,A6 ANK A7,/20 PROTECTED FIELD? RF(NZ) ERE600 YES CWR A5,A4 STANDING ON ATTRIBUTE? RF(E) ERE600 YES LDR A1,A4 LDR A8,A6 SAVE OLD LDR A9,A5 SAVE OLD CF A14,ATMASF SEARCH ATTRIBUTE FORWARD LDR A3,A5 LDR A6,A8 LDR A5,A9 ORK A6,1 SET MDT-BIT IN ATTRIBUTE LDR A7,A6 LDR A1,A5 CF A14,STOVDU STORE NEW ATTRIBUTE IN VDU BUFFER CF A14,STOINF SAVE NEW SCREEN INFORMATION LDR A1,A3 STOP ADDRESS RF ERE800 ERE600 EQU * CF A14,ERROR INDICATE ERROR RF ERE900 ERE700 EQU * CF A14,LINE ERASE ONE LINE DK1 LDR A1,A5 DK1 CWK A1,LBVDU DK1 RF(L) ERE710 DK1 LDK A1,0 STOP ADDRESS =3 ERE710 EQU * DK1 CF A14,SCRINF DK1 ERE800 EQU * SUR A10,A10 CF A14,ERASUA ERASE UNPROTECTED TO ADDRESS CF A14,DISMOD DISPLAY MODIFIED FIELD ERE900 EQU * RTN A14 EJECT ******************************************************************* * * * ERINPT ERASE UNPROTECTED ENTIRE SCREEN * * * ******************************************************************* * REGISTERS * * A4= REL. CURSOR POS. * A5= REL. ATTRIBUTE POS. * A6= ATTRIBUTE CHAR. * A11= RESERVED * A13= RESERVED * ******************************************************************* ERINPT EQU * CF A14,SCRINF GET SCREEN INFORMATION CWK A5,LBVDU+1 UNFORMATTED SCREEN? RF(NE) ERI100 NO CF A14,ERASE ERASE ENTIRE SCREEN RF ERI900 ERI100 EQU * CF A14,ERASUP ERASE ALL UNPROTECTED CF A14,DISMOD DISPLAY ERASED FIELDS CF A14,RDHOME TAB. UNPROTECTED FIRST ON SCREEN ERI900 EQU * RTN A14 EJECT IFT IN:DL=1 ******************************************************** * * * INSERT INSERT KEY HANDLING * * * ******************************************************** * REGISTERS * * A11= CREDIT WORK AREA * A13= RESERVED * *************************************************** INSERT EQU * IM MODE,A11 SET INSERT MODE RTN A14 EJECT ****************************************************** * * * DELETE DELETE CHAR. HANDLING * * * ******************************************************* * REGISTERS * * A4= REL. CURSOR POS. * A5= REL. ATTRIBUTE POS. * A6= ATTRIBUTE CHAR. * A11= CREDIT WORK AREA * A13= RESERVED * ******************************************************* DELETE EQU * CF A14,SCRINF GET SCREEN INFORMATION LDKL A3,-1 DEL025 EQU * ADK A3,LLINE CWR A3,A4 LAST POS. ON CURRENT LINE? RB(L) DEL025 NO CWK A5,LBVDU+1 UNFORMATTED SCREEN? RF(E) DEL200 YES CWR A4,A5 STANDING ON ATTRIBUTE? RF(E) DEL700 YES LDR A7,A6 ANK A7,/20 PROTECTED? RF(NZ) DEL700 YES ORK A6,1 SET MDT-BIT LDR A7,A6 LDR A1,A5 CF A14,STOVDU SAVE NEW ATTRIBUTE LDR A8,A6 SAVE OLD LDR A9,A5 SAVE OLD CF A14,ATMASF SEARCH ATTRIBUTE FORWARD LDR A1,A5 LDR A6,A8 LDR A5,A9 CF A14,STOINF SAVE SCREEN INFORMATION CWR A3,A1 ATTRIBUTE BEFOR END OF LINE? RF(NG) DEL200 NO LDR A3,A1 DEL200 EQU * LDR A1,A4 DEL300 EQU * ADK A1,1 CF A14,GETVDU GET CHAR. IN VDU BUFFER SUK A1,1 CF A14,STOVDU STORE CHAR. IN VDU BUFFER ADK A1,1 CWR A1,A3 ALL SHIFTED? RB(NE) DEL300 NO LDK A7,NULL GET NULL CHAR. CF A14,STOVDU STORE NULL CHAR IN VDU BUFFER CF A14,SAVE1 LDK A5,LLINE LDR A6,A11 SUR A10,A10 CF A14,LINE GET LINE FLAG LC A1,LINFLG,A6 ORK A1,1 SC A1,LINFLG,A6 CF A14,REST1 CF A14,DISMOD DISPLAY MODIFIED LINE RF DEL900 DEL700 EQU * CF A14,ERROR INDICATE ERROR DEL900 EQU * RTN A14 XIF EJECT ******************************************************** * * * RESET RESET KEY HANDLING * * * ******************************************************** * REGISTERS * * A11= CREDIT WORK AREA * A13= RESERVED * **************************************************** RESET EQU * CM MODE,A11 RESET INSERT MODE CF A14,LMP6OF TURN OFF "INSERT" LAMP CM KBINH,A11 RESSTORE KEYBOARD CF A14,LMP4OF TURN OFF 'ERROR' LAMP CF A14,LMP3OF TURN OFF 'KEYBOARD INHIBIT' LAMP RTN A14 EJECT *********************************************************** * * * DUP DUPLICATE KEY * * * *********************************************************** * REGISTERS * * A2= KEY-CHAR * A11= RESERVED * A13= RESERVED * ************************************************************ DUP EQU * LDK A2,DUPCH GET DUP CHAR. CF A14,NUM CF A14,TAB RTN A14 EJECT *********************************************************** * * * FLDMRK FIELD MARK KEY * * * *********************************************************** * REGISTERS * * A2= KEY-CHAR * A11= RESERVED * A13= RESERVED * *********************************************************** FLDMRK EQU * LDK A2,FMCH GET FIELD MARK CHAR. CF A14,NUM RTN A14 EJECT *************************************************************** * * Z E R O : 3 TRIPLE ZERO KEY * Z E R O : 2 DOUBLE ZERO KEY * ************************************************* * REGISTERS * * A2= KEY-CHAR * A11= RESERVED * A13= RESERVED * ********************************************************* ZERO:3 EQU * LDK A2,/30 ZERO CHAR. CF A14,NUM DISPLAY CHARACTER ZERO:2 EQU * LDK A2,/30 ZERO CHAR. CF A14,NUM DISPLAY CHARACTER LDK A2,/30 CF A14,NUM DISPLAY CHARACTER RTN A14 RETURN EJECT IFT OFLIN=1 ******************************************************** * * * OFLINE OFFLINE KEY HANDLING * * * ******************************************************** * REGISTERS * * A11= CREDIT WORK AREA * A13= RESERVED * ******************************************************* OFLINE EQU * CF A14,CLEAR CF A14,RESET CF A14,DCOFLN INDICATE OFFLINE TO DC CF A14,LMP6ON TURN ON OFFLINE LAMP IM OFFFLG,A11 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 ********************************************************* * * * MFCHGE MAIN FRAME CHANGE * * * ********************************************************* * REGISTERS * * A11= CREDIT WORK AREA * A13= RESERVED * ******************************************************* IFT NBRLIN=2 MFCHGE EQU * CF A14,CLEAR CF A14,RESET CF A14,LMP1OF CF A14,LMP2OF CF A14,LMP3OF CF A14,DISCON DISCONNECT ON OLD LINE =2 LDK A1,1 . =2 XRS A1,MAIN,A11 IND MAIN FRAME CHANGE =2 RF(NZ) MFCH10 CF A14,LMP1ON RF MFCH90 MFCH10 EQU * CF A14,LMP2ON MFCH90 EQU * . =2 CF A14,CONCT CONNECT ON NEW LINE =2 CF A14,CHKSTA CHECK LINE STATUS RTN A14 XIF EJECT *********************************************************** * * * COPY LOCAL HARDCOPY * * * *********************************************************** * REGISTERS * * A11= CREDIT WORK AREA * A13= T:A ADDRESS * ************************************************************* COPY EQU * LD A1,SNAMOD,A11 ANKL A1,HCPMOD HARDCOPY ALREADY OUTSTANDING? RF(NZ) COPY80 YES,WAIT A WHILE LD A1,PRTID,A11 RF(Z) COPY80 PRINTER NOT ASSIGNED ANK A1,/FF CHECK IF PRINTER OK IN TASK TABLE SUK A1,/30 SLL A1,2 LDK A3,TSKTAB LD A4,+6,A13 GET COMMON AREA ADR A3,A4 ADR A3,A1 PRINTER ASSIGNED FOUND LC A1,+3,A3 ANK A1,/FF PRINTER OK? RF(Z) COPY10 YES RF COPY90 COPY10 EQU * LDK A1,/38 INDICATE HARDCOPY IN WCC ST A1,WCC,A11 LDKL A3,BVDU BUFFER ADR A3,A11 ADDRESSS LD A8,ECBICW,A11 CF A14,ICSET SET NO TIMEOUT LD A1,PRTID,A11 HARDCOPY TASK ID LDKL A2,LBVDU+/20 BUFFER LENGTH CF A14,ICWRT WRITE INTERTASK IFT SNA=1 LDKL A1,HCPMOD INDICATE HARDCOPY OUTSTANDING ORS A1,SNAMOD,A11 XIF IFF SNA=1 LDKL A1,HCPMOD INDICATE HARDCOPY OUTSTANDING ORS A1,BSCMOD,A11 XIF RF COPY90 COPY80 EQU * CF A14,ERROR COPY90 EQU * RTN A14 EJECT *************************************************************** * * * IDENT PRINTER IDENT. HANDLING * * *************************************************************** * REGISTERS * * A3= POINTER IN TASK TABLE * A11= CREDIT WORK AREA * A13= T:A ADDRESS * ************************************************************* IDENT EQU * LD A1,PRTID,A11 GET CURRENT TASKID LD A4,+6,A13 COMMON BLOCK BASE ANK A1,X'FF' GET OFFSET SUK A1,/30 SLL A1,2 LDKL A3,TSKTAB ADR A3,A4 ADR A3,A1 IDEN30 EQU * LCR A5,A3 GET ID SLL A5,8 LC A5,+1,A3 LC A4,+3,A3 GET STATUS CF A14,SAVE1 SAVE REGISTERS CF A14,DISID DISPLAY TASKID LDKL A1,IDEN40 NEXT KEY ENTRY ST A1,RDMORE,A11 RF IDEN90 NEXT KEY IDEN40 EQU * CM RDMORE,A11 LDR A9,A2 CF A14,REST1 RESTORE REGISTERS CWK A9,ENTKEY SAVE CURRENT TASKID RF(E) IDEN80 YES CWK A9,IDKEY GET NEXT TASKID? RF(NE) IDEN90 NO KEEP THE FIRST ONE IDEN50 EQU * ADK A3,4 SEARCH FOR NEXT PRINTER LCR A2,A3 ANK A2,/FF LDR A1,A2 RB(Z) IDEN50 SLL A1,8 RF(N) IDEN60 CCK A2,VDUCOD PRINTER? RB(NE) IDEN30 YES RB IDEN50 IDEN60 EQU * LDKL A2,TSKTAB LD A3,6,A13 ADR A3,A2 SUK A3,4 RB IDEN50 IDEN80 EQU * LCR A1,A3 GET PRINTER TO SAVE SLL A1,8 LC A1,+1,A3 ST A1,PRTID,A11 NEW HARDCOPY TASKID IDEN90 EQU * RTN A14 EJECT ************************************************************* * * * KEYL KEYLOCK STATUS * * * ************************************************************* * REGISTERS * * A2= KEYLOCK VALUE * A11= CREDIT WORK AREA * A13= RESERVED * ************************************************************** IFT KEYLST=1 IFT KB6272=1 KEYL EQU * SUK A2,LKLKEY GET NEG KEY LOCK VALUE LD A3,KEYS,A11 OLD STATUS LDK A4,/10 KEYL10 EQU * SRL A4,1 ADK A2,2 1 = OFF,0 = ON RB(N) KEYL10 ANR A3,A4 CHECK OLD KEY POS RF(NZ) KEYL20 WAS ON LDR A2,A2 WAS OFF RF(NZ) KEYL99 NOW OFF, NO CHANGE RF KEYL30 NOW ON KEYL20 EQU * WAS ON LDR A2,A2 RF(Z) KEYL99 NOW ON, NO CHANGE KEYL30 EQU * CHANGE LD A3,KEYS,A11 XRR A3,A4 CHANGE STATUS ST A3,KEYS,A11 STORE NEW STATUS * * KEYLOCK STATUS CHANGED * A3 = NEW STATUS, RIGHTMOST BIT = RIGHTMOST LOCK, BIT ON = LOCK ON * A4 = KEYLOCK CHANGED, LAYOUT AS A3 * A2 = 1, IF CHANGED TO OFF ELSE 0 * * INSERT USER ROUTINE BELOW THIS LINE * KEYL99 EQU * RTN A14 XIF EJECT ********************************************************** * * TESTM TEST MODE * ********************************************************** * REGISTERS * * A11= RESERVED * A13= RESERVED * ********************************************************* IFT TEST=1 TESTM EQU * CF A14,ERASE CF A14,GETBUF CF A14,RDSTAT CF A14,DISSTA LDR A8,A12 CF A14,RELBUF RTN A14 XIF EJECT ********************************************************* * * * ENTER ENTER KEY HANDLING * * * ********************************************************* * REGISTERS * * A2= AID-CODE * A11= RESERVED * A13= RESERVED * ********************************************************* ENTER EQU * LDK A2,/27 AID-CODE CF A14,LMP3ON TURN ON "KEYBOARD INHIBIT" CF A14,TRPF AID+MODIFIED FIELDS+TRANSMIT RTN A14 EJECT ************************************************************** * * * CLEAR CLEAR KEY HANDLING * * * ************************************************************** * REGISTERS * * A2= AID-CODE * A11= RESERVED * A13= RESERVED * ************************************************************** CLEAR EQU * LDK A2,/5F POS FOR 'CLEAR' CF A14,LMP3ON TURN ON "KEYBOARD INHIBIT" CF A14,TRPA UPDATE AID AND TRANSMIT CF A14,ERASE ERASE ENTIRE SCREEN RTN A14 EJECT *************************************************************** * * * SYSREQ SYSTEM REQUEST HANDLING * * * *************************************************************** * REGISTERS * * A11= CREDIT WORK AREA * A13= RESERVED * **************************************************** IFT SNA=1 SYSREQ EQU * CF A14,TSTSTA TEST STATUS LDR A2,A1 GET STATUS ANKL A2,/101 ACTIVE? RF(Z) SYS100 YES LDK A1,LOCMOD INDICATE LOCAL MODE RF SYS500 SYS100 EQU * LDR A2,A1 GET STATUS ANKL A2,/C00 MY JOB MODE? RF(NZ) SYS200 NO CF A14,CLEAR CLEAR SCREEN AND DC CF A14,RESKB RESET KEYBOARD BUFFER LDK A1,SYSOP INDICATE SYSTEM MODE RF SYS500 SYS200 EQU * CWK A2,/C00 SSCP-LU AND NOT LU-LU? RF(NE) SYS300 NO LDK A1,SYSOP INDICATE SYSTEM MODE RF SYS500 SYS300 EQU * ANKL A2,/800 SSCP-LU AND LU-LU? RF(NZ) SYS400 YES LDK A1,SYSOP INDICATE SYSTEM MODE RF SYS500 SYS400 EQU * LDK A1,MYJOB INDICATE MY JOB MODE SYS500 EQU * ORKL A1,NEWMOD INDICATE NEW MODE ACTIVATION ST A1,SNAMOD,A11 RTN A14 XIF EJECT *************************************************************** * * * ATTN ATTENTION KEY HANDLING * * * *************************************************************** * REGISTERS * * A11= RESERVED * A13= RESERVED * ********************************************************** IFT SNA=1 ATTN EQU * LDK A1,/4B SIGNAL ATTENTION KEY CF A14,SETSTA SET STATUS RTN A14 XIF EJECT ************************************************************** * * * PA PROGRAM ACCESS KEY HANDLING * * * ************************************************************** * REGISTERS * * A2= AID-CODE * A11= RESERVED * A13= RESERVED * ************************************************************** PA1 EQU * LDK A2,/25 AID-CODE RF PA500 PA2 EQU * LDK A2,/3E AID-CODE RF PA500 PA3 EQU * LDK A2,/2C AID-CODE PA500 EQU * CF A14,LMP3ON TURN ON KEYBOARD INHIBIT CF A14,TRPA TRANSMIT AID-CODE PAALFA EQU * *INSERT ALFASKOP STATEMENTS RTN A14 EJECT ******************************************************************* * * * PAEX PAEX KEY FOLLOWED BY NUMBER * * * ******************************************************************* * REGISTERS * * A11= CREDIT WORK AREA * A13= RESERVED * *************************************************** IFT PAX=1 PAEX EQU * LDKL A1,PAEXA ST A1,RDMORE,A11 RTN A14 PAEXA EQU * CM RDMORE,A11 SUK A2,/31 CHECK IF NUM.1-3 RF(L) PAERR ILLEGAL CHAR. SUK A2,/2 CHECK IF NUM.1-3 RF(G) PAEXB ILLEGAL CHAR. RF(NZ) PAEX10 CF A14,PA3 PA3 KEY RF PARET PAEX10 EQU * ADK A2,1 RF(NZ) PAEX20 CF A14,PA2 PA2 KEY RF PARET PAEX20 EQU * CF A14,PA1 PA1 KEY RF PARET PAEXB EQU * DK3 SUK A2,/6 DK3 RF(G) PAERR DK3 ADK A2,/69 DK3 CF A14,PA500 DK3 RF PARET DK3 PAERR EQU * CF A14,ERROR INDICATE ERROR PARET EQU * RTN A14 XIF EJECT ****************************************************************** * * * PF PROGRAM FUNTION KEY HANDLING * * * ****************************************************************** * REGISTERS * * A2= AID-CODE * A11= RESERVED * A13= RESERVED * ****************************************************************** PF EQU * SUK A2,PFKEY GET INDEX TO CONVERT LC A2,CONPF,A2 GET AID CF A14,LMP3ON TURN ON KEYBOARD INHIBIT CF A14,TRPF TRANSMIT AID AND MODIFIED FIELDS RTN A14 EJECT ***************************************************************** * * * PFEX PFEX KEY FOLLOWED BY NUMBER * * * ***************************************************************** * REGISTERS * * A11= CREDIT WORK AREA * A13= RESERVED * ************************************************* IFT PFX=1 PFEX EQU * LDKL A1,PFEXA RF PFNXT PFEXA EQU * CM RDMORE,A11 SUK A2,/30 LEGAL CHAR ? RF(L) PFERR ILLEGAL,GO TO ERR.HANDLING RF(NZ) PFEX10 LDKL A1,PF0A FIRST NUM 0 RF PFNXT NEXT NUMBER PFEX10 EQU * SUK A2,1 RF(NZ) PFEX20 LDKL A1,PF1A FIRST NUM 1 RF PFNXT NEXT NUMBER PFEX20 EQU * SUK A2,1 RF(NZ) PFERR ILLEGAL NUM LDKL A1,PF2A FIRST NUM 2 RF PFNXT NEXT NUMBER PF0A EQU * CM RDMORE,A11 SUK A2,/31 ILLEGAL NUM? RF(N) PFERR YES SUK A2,9 ILLEGAL NUM? RF(NN) PFERR YES ADK A2,/9+PFKEY PF1-PF9 RF PFHAND PF1A EQU * CM RDMORE,A11 SUK A2,/30 ILLEGAL NUM? RF(N) PFERR YES SUK A2,/A ILLEGAL NUM? RF(NN) PFERR YES ADK A2,/A+PFKEY+/9 PF10-PF19 RF PFHAND PF2A EQU * CM RDMORE,A11 SUK A2,/30 ILLEGAL NUM? RF(N) PFERR YES SUK A2,5 ILLEGAL NUM? RF(NN) PFERR YES ADK A2,/5+PFKEY+/13 PF20-PF24 PFHAND EQU * CF A14,PF PROGRAM FUNCTION KEY HANDLING RF PFRET PFNXT EQU * ST A1,RDMORE,A11 RF PFRET PFERR EQU * CF A14,ERROR PFRET EQU * RTN A14 XIF EJECT ********************************************************** * * * RETURN RETURN * * * *********************************************************** * REGISTERS * * A11= RESERVED * A13= RESERVED * ******************************************************** RETURN EQU * RTN A14 END