|
|
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: 52774 (0xce26)
Notes: pts_type(SC)
Names: »PAD.SC«
└─⟦a16d9b08d⟧ Bits:30009712 Philips computer tape "TOSS11"
└─⟦this⟧ »U3270.1/PAD.SC«
IDENT PAD REL 11.1 82-03-16 870150541110 =7 ERRORS IN PROGRAM TAB 82-02-12 =6 NO BELL FROM PRINTER =5 NATIONAL CHAR 81-05-12 =4 COPY TO PRINTER 81-05-06 =3, MISSING ITEM 81-01-26 =2, SAVE REG. 81-01-26 =1, RA ON EUQ ADDRESS 81-01-26 ************************************************************* * * * MODULE PAD * * MODULE HANDLING THE PACKING AND * * UNPACKING OF THE DCBUFFER. THE VDU * * BUFFER IS UPDATED * * (EMULATION 3270 SNA/SDLC, BSC) * * * ************************************************************* EJECT ***************************************************************** * * LIST OF ROUTINES * * PACK PACK MODIFIED VDU-FIELDS INTO DC-BUFFER * UNPACK UNPACK DC-BUFFER AND UPDATE VDU * RETTAB RETURN ADDRESSES * UNPCOM UNPACK COMMANDS * UNPORD UNPACK ORDERS * ORDTAB ORDER TABLE * SF START FIELD * SBA SET BUFFER ADDRESS * IC INSERT CURSOR * PT PROGRAM TAB. * RA REPEAT TO ADDRESS * EUA ERASE UNPRO. TO ADDRESS * CHAR < /20 BUT NOT ORDERS * PACKSY PACK DC-BUFFER IN SYSTEM MODE * UNPSYS UNPACK DC-BUFFER IN SYSTEM MODE * GETNXT GET AND CHECK NEXT BUFFER * PUTCHA PUT CHAR. IN DC-BUFFER AND WRITE * PDCCH PUT CHAR. IN BUFFER * GDCCH GET CHAR. IN BUFFER * PAID STORE AID IN BUFFER * BUFADR STORE BUFFER ADDRESS IN DC-BUFFER * RESMDT RESET ALL MDT-BITS IN ATTRIBUTES * P1WCC PROCESS WCC BEFORE UPDATE * P2WCC TAKE CARE OF WCC AFTER UPDATE * SAVE SAVE PACK AND UNPACK INFORMATION * RESTOR RESTORE PACK AND UNPACK INFORMATION * BUFFER BUFFER POOL * GETBUF GET BUFFER * RELBUF RELEASE BUFFER * ****************************************************************** EJECT ************************************************************* * * * ENTRY POINTS * * * ************************************************************* ENTRY PACK PACK MOD. FIELDS INTO DC BUFFER ENTRY UNPACK UNPACK DC BUFFER AND UPDATE VDU ENTRY UNPSYS UNPACK DC BUFFER IN SYSTEM MODE ENTRY GETBUF GET DC BUFFER ENTRY RELBUF RELEASE DC BUFFER ENTRY PAID STORE AID CODE IN DC BUFFER ENTRY BUFADR SORE BUFFER ADDRESS IN DC BUFFER ENTRY PACKSY PACK DC BUFFER IN SYSTEM MODE ENTRY SAVE1 SAVE REGISTERS ENTRY REST1 RESTORE REGISTERS EJECT *************************************************** * * * EXTERNAL REFERENCES * * * *************************************************** EXTRN CONEBC CONVERT ASCII-EBCDIC (CONVER) EXTRN CONASC CONVERT EBCDIC-ASCII (CONVER) EXTRN ERASE ERASE ENTIRE SCREEN (VDU) EXTRN ERASUA ERASE UNPROTECTED TO ADDRESS (VDU) EXTRN CONORD CONVERT ORDER TO INDEX (CONVER) EXTRN CONATT CONVERT ATTRIBUTE (CONVER) EXTRN SCRINF GET SCREEN INFORMATION (VDU) EXTRN ERASUP ERASE UNPROTECTED ENTIRE SCREEN (VDU) EXTRN COPY LOCAL HARDCOPY (KEYB) EXTRN SOUND SOUND ALARM ON VDU (VDU) EXTRN ATMASB SEARCH ATTRIBUTE BACKWARDS (VDU) EXTRN CONADR CONVERT BUFFER ADDRESS (CONVER) EXTRN WRAP CHECK IF WRAP AROUND (VDU) EXTRN STOINF SAVE SCREEN INFORMATION (VDU) EXTRN LMP4ON INHIBIT LAMP ON (KEYB) EXTRN READNW READ WITH NO WAIT (DCSNA,DCBSC) EXTRN WAIT SYNCHRONIZE (DCSNA,DCBSC) EXTRN DCWRIT WRITE DC BUFFER (DCSNA,DCBSC) EXTRN DISMOD DISPLAY MODIFIED FIELDS (VDU) EXTRN THRBUF THROW BUFFERS (DCSNA,DCBSC) EXTRN NLROUT NEW LINE ROUTINE (VDU) EXTRN LINE WRAP ROUTINE (VDU) EXTRN LINATT INTERNAL LINEFLAG ROUTINE (VDU) EXTRN LINWRP ANOTHER WRAP ROUTINE (VDU) EXTRN ERROR ERROR INCATOR (KEYB) EXTRN MATCH MATCH ADDRESS AND TASKID (DSPBSC) EXTRN ICSET INTERTASK TIMEOUT (KEYB) EXTRN ICWRT INTERTASK WRITE (KEYB) EXTRN COPP COPY ON PRINTER DIRECTLY =4 EJECT *************************************************** * * * CONDITIONAL ASSEMBLY PARAMETERS * * * *************************************************** X:A EQU 0 SNA HANDLING IF:=1 SNA EQU X:A X:K EQU 2 NUMBER OF BUFFERS (1-32) BUFFNR EQU X:K X:L EQU 1000 MAX BUFFER SIZE IN WORDS BUFFL EQU X:L X:M EQU 0 COPY COMMAND INCLUDED IF:=1 COPCMD EQU X:M X:N EQU 1 EBCDIC CHAR IF:=1 EBCDIC EQU X:N X:Z EQU 1 =0,WHOLE,=1 CHAIN,=2 SEGMENT DISHOW EQU X:Z EJECT *************************************************************** * * * DECLARATION OF DATA AND EQUATES * * *************************************************************** * * 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 * * INTERNAL STATUS * LICREC EQU /2000 LAST IN CHAIN RECEIVED THROWB EQU /0800 THROW BUFFERS NEWCH EQU /0400 NEW CHAIN ATTREC EQU /0002 ATTRIBUTE RECEIVED PTORD EQU /0001 PT ORDER INDICATOR IFT SNA=1 * * SNA MODES * LOCMOD EQU 0 LOCAL MODE SYSOP EQU 2 SYSTEM MODE MYJOB EQU 4 MY JOB MODE XIF * * TASK IDENTIFICATION CODE * VDUCOD EQU 'VV' VDU KB TASK * * SPECIAL CHARACTERS * NULL EQU 0 NULL CHAR. SBACH EQU /11 SBA CHAR. ESCCHA EQU /1B ESCAPE CHAR. * * VDU SCREEN SIZE * LBVDU EQU 1920 TOTAL SIZE LLINE EQU 80 LINE LENGTH * * BUFFER LINK LENGTH * LINK EQU BUFFL+BUFFL+2 EJECT * * RELATIVE ADDRESSES IN * TERMINAL WORKBLOCK * TCT01 EQU 0 TASK IDENTIFICATION BVDU EQU TCT01+2 SCREEN BUFFER LINFLG EQU BVDU+1920 INTERNAL LINE FLAGS PCURS EQU LINFLG+24 CURSOR ADDRESS , BINARY CURATT EQU PCURS+4 WCC EQU CURATT+2 WCC/CCC CHARACTER KBINH EQU WCC+2 INHIBIT INDICATOR DCLENG EQU KBINH+4 LENGTH OF DC BUFFER CURPOS EQU DCLENG+30 CURSOR POS IN SYSTEM MODE BUFPNT EQU CURPOS+2 BUFFER ADDRESS REGI EQU BUFPNT+2 WORK REGISTER STACK1 EQU REGI+2 INTERNAL STACK STACK2 EQU STACK1+14 UNPMOD EQU STACK2+14 UNPACK MODE SNAMOD EQU UNPMOD+2 SNA MODE ECBICW EQU SNAMOD+12 ECB INTERTASK WRITE =3 EJECT ************************************************************ * * * PACK PACK MODIFIED VDU-FIELDS INTO DC-BUFFER * * * ************************************************************* * REGISTERS * * A2= CHAR. * A3= ADDRESS IN VDU-BUFFER * A4= REL. CURSOR POS. * A5= REL. ATTRIBUTE POS. * A6= ATTRIBUTE CHAR * A8= ADDRESS IN DC-BUFFER * A9= DC-BUFFER INDEX * A10= START ADDRESS * A11= RESERVED * A12= BUFFER ADDRESS * A13= RESERVED * ************************************************************ PACK EQU * CF A14,SCRINF GET SCREEN INFORMATION LDK A4,0 FIRST SCREEN POS. LDKL A3,BVDU ADR A3,A11 LDR A10,A4 INITIATE ADDRESS CWK A5,LBVDU+1 UNFORMATTED SCREEN? RF(E) PACK70 YES PACK10 EQU * LCR A2,A3 GET CHAR. CCK A2,/8000 ATTRIBUTE? RF(NL) PACK15 YES ADK A3,1 ADK A4,1 RB PACK10 PACK15 EQU * LDR A10,A4 START ADDRESS RF PACK30 PACK20 EQU * CF A14,WRAP CHECK IF WRAP AROUND CWR A10,A4 ALL SCANNED? RF(E) PACK80 YES PACK30 EQU * LCR A2,A3 GET CHAR. ADK A3,1 ADK A4,1 CCK A2,/8000 ATTRIBUTE? RB(L) PACK20 NO ANK A2,1 MODIFIED FIELD? RF(NZ) PACK50 YES ADK A3,1 ADK A4,1 RB PACK20 PACK50 EQU * LDK A2,SBACH SBA TO DC-BUFFER LDKL A1,/8000 INDICATE SBA CF A14,PUTCHA PUT CHAR. IN BUFFER LDR A1,A1 TRANSMISSION OK? RF(NZ) PACK90 NO LDR A1,A4 BUFFER ADDRESS TO DC-BUFFER CF A14,BUFADR PACK60 EQU * CF A14,WRAP CHECK IF WRAP AROUND CWR A10,A4 ALL SCANNED? RF(E) PACK80 YES PACK70 EQU * LCR A2,A3 GET CHAR. CCK A2,/8000 ATTRIBUTE? RB(NL) PACK20 YES CWK A2,NULL NULL CHAR? RF(E) PACK75 YES,DON'T STORE CF A14,PUTCHA PUT CHAR. IN BUFFER LDR A1,A1 TRANSMISSION OK? RF(NZ) PACK90 NO PACK75 EQU * ADK A3,1 ADK A4,1 RB PACK60 PACK80 EQU * LDK A1,0 INDICATE LAST IN CHAIN CF A14,DCWRIT WRITE DC BUFFER PACK90 EQU * LDR A8,A12 BUFFER TO RELEASE CF A14,RELBUF RELEASE BUFFER RTN A14 EJECT ************************************************************ * * * UNPACK UNPACK DC-BUFFER AND UPDATE VDU * * * ************************************************************ * REGISTERS * * A2= CHAR. * A3= POINTER IN VDU-BUFFER * A4= REL. CURSOR POS. * A5= LAST IN ROW REL POS * A6= INTERNAL LINE FLAG ADDRESS * A8= ADDRESS IN DC-BUFFER * A9= DC-BUFFER INDEX * A10= INDICATOR * A11= CREDIT WORK AREA * A12= RESERVED * A13= RESERVED * ******************************************************** UNPACK EQU * LDK A1,3 KB TOTALLY INHIBIT ORS A1,KBINH,A11 LC A1,TCT01,A11 CCK A1,VDUCOD PRINTER UNPACK? RF(NE) UNP050 YES CF A14,LMP4ON INHIBIT LAMP ON UNP050 EQU * CF A14,SCRINF GET SCREEN INFORMATION LDR A6,A11 LDK A5,LLINE CF A14,LINE CHECK WRAP AND LINE FLAG SUR A9,A9 LD A8,BUFPNT,A11 GET BUFFER ADDRESS LDK A1,ICOMND PROCESS COMMAND ST A1,UNPMOD,A11 UNP100 EQU * CF A14,GDCCH GET CHAR. LDR A1,A1 ANYTHING LEFT? RF(NZ) UNP200 NO LD A1,UNPMOD,A11 GET ADDRESS TO START AT CFI A14,RETTAB,A1 RESTART LDR A1,A1 PROCESS OKEY? RB(Z) UNP100 YES RF UNP300 UNP200 EQU * IFT SNA=1 CF A14,GETNXT GET NEXT BUFFER LDR A1,A1 FINISHED? RB(Z) UNP100 NO XIF UNP300 EQU * CF A14,SCRINF GET LATEST NEWS LDR A1,A4 CF A14,ATMASB SEARCH ATTRIBUTE BACKWARDS IFT SNA=1 ANKL A10,THROWB THROW BUFFERS? RF(Z) UNP400 NO CF A14,THRBUF THROW BUFFERS RF UNP600 UNP400 EQU * IFF DISHOW=2 LC A1,TCT01,A11 CCK A1,VDUCOD RF(NE) UNP500 CF A14,DISMOD TESTINGTESTINGTESTING!!!!!!!!!!!!! UNP500 EQU * XIF CF A14,P2WCC CHECK IT A LAST TIME =4 LDR A8,A12 GET BUFFER TO RELEASE CF A14,RELBUF RELEASE BUFFER UNP600 EQU * RTN A14 EJECT ********************************************************************** * * * INDEX FOR RETURNS AFTER GET CHARCTER * * * ********************************************************************** ICOMND EQU 0 ICOMN1 EQU ICOMND+2 IFT COPCMD=1 ICOCOP EQU ICOMN1+2 ICOWCC EQU ICOCOP+2 XIF IFF COPCMD=1 ICOWCC EQU ICOMN1+2 XIF IORDER EQU ICOWCC+2 IOSFAT EQU IORDER+2 IOSBA1 EQU IOSFAT+2 IOSBA2 EQU IOSBA1+2 IORAA1 EQU IOSBA2+2 IORAA2 EQU IORAA1+2 IORACH EQU IORAA2+2 IOEUA1 EQU IORACH+2 IOEUA2 EQU IOEUA1+2 EJECT ********************************************************************* * * * RETURN ADDRESSES AFTER GET CHARACTER * * * ********************************************************************* RETTAB EQU * DATA UNPCOM PROCESS COMMAND CHAR. DATA UNC100 PROCESS COMMAND CHAR AFTER ESC. IFT COPCMD=1 DATA UNC150 PROCESS FROM DEVICE XIF DATA UNC600 PROCESS WCC DATA UNPORD PROCESS ORDERS AND CHAR. DATA SF100 PROCESS ATTRIBUTE DATA SBA100 PROCESS FIRST ADDRESS BYTE DATA SBA200 PROCESS SECOND ADDRESS BYTE DATA RA100 PROCESS FIRST ADDRESS BYTE DATA RA200 PROCESS SECOND ADDRESS BYTE DATA RA250 PROCESS CHAR. TO REPEAT DATA EUA100 PROCESS FIRST ADDRESS BYTE DATA EUA200 PROCESS FIRST ADDRESS BYTE EJECT *********************************************************************** * * * UNPCOM UNPACK COMMAND * * * *********************************************************************** * REGISTERS * * A2= CHAR. * A3= ADDRESS IN VDU-BUFFER * A4= REL. CURSOR ADDRESS * A5= LAST IN ROW REL POS * A6= INTERNAL LINE FLAG ADDRESS * A8= ADDRESS IN DC-BUFFER * A9= RESERVED * A10= INDICATOR * A11= CREDIT WORK AREA * A12= RESERVED * A13= RESERVED * ************************************************************************ UNPCOM EQU * ENTRY LABEL FROM RETTAB IFF SNA=1 LDK A1,ICOMN1 WHERE TO CONTINUE ST A1,UNPMOD,A11 LDK A1,0 RETURN CODE CWK A2,ESCCHA ESCAPE? RF(E) UNC900 YES LDK A1,1 NO INDICATE ERROR RF UNC900 XIF UNC100 EQU * CWK A2,/31 WRITE? RF(E) UNC500 YES CWK A2,/35 ERASE AND WITE? RF(E) UNC200 YES CWK A2,/3F ERASE ALL UNPROTECTED? RF(E) UNC300 YES IFT COPCMD=1 CWK A2,/37 COPY COMMAND? RF(NE) UNC175 NO LDK A1,ICOCOP RESTART ENTRY RF UNC800 UNC150 EQU * ENTRY LABEL FROM RETTAB CF A14,MATCH GET TASKID LDR A1,A1 OK? RF(NZ) UNC175 NO LDKL A1,/8000 RETURN CODE TO INDICATE COPY COMND. ST A1,REGI,A11 LD A8,ECBICW,A11 CF A14,ICSET SET TIMEOUT LDR A1,A2 TASK TO CALL LDK A2,2 LENGTH LDKL A3,REGI ADR A3,A11 BUFFER CF A14,ICWRT SEND IT UNC175 EQU * XIF LDKL A10,THROWB THROW THE REST LDK A1,1 INDICATE ERROR RF UNC900 INVALID COMMAND UNC200 EQU * ST A8,REGI,A11 CF A14,ERASE ERASE ENTIRE SCREEN LD A8,REGI,A11 LDR A6,A11 LDK A5,LLINE LDK A4,0 INITIATE BUFFER ADDRESS RF UNC500 UNC300 EQU * CF A14,ERASUP ERASE ALL UNPROTECTED LDKL A10,THROWB THROW IT AWAY LDK A1,1 INDICATE ERROR RF UNC900 UNC500 EQU * LDK A1,ICOWCC GET INDEX ST A1,UNPMOD,A11 LDK A1,0 RF UNC900 UNC600 EQU * ENTRY LABEL FROM RETTAB CF A14,P1WCC PROCESS WCC BEFORE UPDATE LDR A3,A4 ADKL A3,BVDU GET REAL ADDRESS ADR A3,A11 ORKL A10,PTORD INDICATE PT ORDER LDK A1,IORDER INDICATE NEXT CALL UNC800 EQU * ST A1,UNPMOD,A11 LDK A1,0 UNC900 EQU * RTN A14 EJECT ********************************************************** * * * UNPORD UNPACK ORDERS * * * ********************************************************** * REGISTERS * * A2= CHAR. * A3= POINTER IN VDU BUFFER * A4= REL. CURSOR POS. * A5= LAST IN ROW REL POS * A6= INTERNAL LINE FLAG ADDRESS * A8= RESERVED * A9= RESERVED * A10= INDICATOR * A11= RESERVED * A12= RESERVED * A13= RESERVED * ********************************************************** UNPORD EQU * ENTRY LABEL FROM RETTAB CWK A2,/20 ORDER? RF(L) UNO100 YES XRKL A10,PTORD INDICATE FOR PT ORDER CWR A5,A4 NEW LINE? RF(G) UNO050 NO CF A14,LINE CHECK WRAP UNO050 EQU * SCR A2,A3 STORE CHAR. IN VDU BUFFER LC A1,LINFLG,A6 ORK A1,1 SC A1,LINFLG,A6 ADK A4,1 ADK A3,1 LDK A1,0 RF UNO200 UNO100 EQU * LC A1,CONORD,A2 GET ORDER INDEX CFI A14,ORDTAB,A1 TAKE CARE OF ORDER UNO200 EQU * RTN A14 EJECT ************************************************************* * * * ORDTAB ORDER TABLE * * * ************************************************************* ORDTAB EQU * DATA INVAL INVALID CHAR. DATA SF START FIELD DATA SBA SET BUFFER ADDRESS DATA IC INSERT CURSOR DATA PT TAB. DATA RA REPEAT TO AADRESS DATA EUA ERASE UNPROTECTED TO ADDRESS DATA ESC ESCAPE DATA NULCHA NULL CHAR. DATA NL NEW LINE DATA FF FORM FEED DATA EM END MESSAGE DATA CR CARRIAGE RETURN EJECT *********************************************************** * * * SF START FIELD * * * *********************************************************** * REGISTERS * * A1= RETURN CODE * A2= RESERVED * A3= POINTER IN VDU BUFFER * A4= REL. CURSOR POS. * A5= RESERVED * A6= RESERVED * A8= RESERVED * A9= DC-BUFFER INDEX * A10= INDICATOR * A11= CREDIT WORK AREA * A12= RESERVED * A13= RESERVED * ************************************************************ SF EQU * LDK A1,IOSFAT INDICATE NEXT CALL ST A1,UNPMOD,A11 RF SF900 GET CHAR. SF100 EQU * ENTRY LABEL FROM RETTAB LDK A1,IORDER NEXT ALBEL ST A1,UNPMOD,A11 LC A2,CONATT,A2 IN EBCDIC ORK A2,/80 ATTR. BIT CM CURATT,A11 ORKL A10,ATTREC+PTORD CF A14,LINWRP CHECK WRAP LC A1,LINFLG,A6 ANK A1,2 LINE IN FIELD? RF(Z) SF600 NO CF A14,LINATT INDICATE ATTRIBUTE OVERRUN SF600 EQU * ORKL A10,ATTREC INDICATE ATTRIBUTE RECEIVED SCR A2,A3 STORE CHAR. ADK A3,1 ADK A4,1 SF900 EQU * LDK A1,0 RTN A14 EJECT *********************************************************** * * * SBA SET BUFFER ADDRESS * * * *********************************************************** * REGISTERS * * A1= RETURN CODE * A2= CHAR. * A3= RESERVED * A4= RESERVED * A5= RESERVED * A6= RESERVED * A8= RESERVED * A9= RESERVED * A10= INDICATOR * A11= CREDIT WORK AREA * A12= RESERVED * A13= RESERVED * *********************************************************** SBA EQU * LDK A1,IOSBA1 NEXT LABEL ST A1,UNPMOD,A11 LDK A1,0 RF SBA900 FIRST BYTE SBA100 EQU * ENTRY LABEL FROM RETTAB LC A7,CONATT,A2 CONVERT ANK A7,/3F SLL A7,6 LDK A1,IOSBA2 ST A1,UNPMOD,A11 LDK A1,0 RF SBA900 NEXT BYTE SBA200 EQU * ENTRY LABEL FROM RETTAB LC A2,CONATT,A2 ANK A2,/3F ORR A7,A2 LDK A1,IORDER NEXT LABEL ST A1,UNPMOD,A11 CWK A7,LBVDU ILLEGAL ADDRESS? RF(NL) SBA800 YES LDR A3,A7 LDR A4,A3 ADKL A3,BVDU ADR A3,A11 ORKL A10,PTORD INDICATE PT ORDER CF A14,LINE CHECK WRAP AND LINE FLAGS LDK A1,0 REURN CODE RF SBA900 SBA800 EQU * ORKL A10,THROWB DON'T SAVE IT LDK A1,1 RETURN CODE SBA900 EQU * RTN A14 EJECT ********************************************************** * * * IC INSERT CURSOR * * * ********************************************************** * REGISTERS * * A1= RETURN CODE * A2= RESERVED * A3= RESERVED * A4= REL. CURSOR POS. * A5= RESERVED * A6= RESERVED * A9= RESERVED * A10= INDICATOR * A11= CREDIT WORK AREA * A12= RESERVED * A13= RESERVED * *********************************************** IC EQU * ST A4,PCURS,A11 ORKL A10,PTORD INDICATE LDK A1,0 RETURN CODE RTN A14 EJECT *********************************************************** * * * PT PROGRAM TAB. * * * *********************************************************** * REGISTERS * * A1= RETURN CODE * A2= CHAR. * A3= ADDRESS IN VDU-BUFFER * A4= REL. CURSOR POS. * A5= RESERVED * A6= ATTRIBUTE CHAR. * A8= RESERVED * A9= RESERVED * A10= INDICATOR * A11= RESERVED * A12= RESERVED * A13= RESERVED * ************************************************************ PT EQU * LDR A1,A10 ANK A1,PTORD FOLLOWING ORDER OR COMMAND? RF(NZ) PT400 YES LDK A7,NULL FILL WITH NULLS TO END OF FIELD PT200 EQU * CF A14,LINWRP CHECK WRAP LDR A4,A4 END OF BUFFER? RF(Z) PT800 YES, KUNTA KINTE LCR A2,A3 ANK A2,/80 ATTRIBUTE? RF(NZ) PT400 YES SCR A7,A3 STORE NULL CHAR. LC A1,LINFLG,A6 ORK A1,1 SC A1,LINFLG,A6 ADK A3,1 ADK A4,1 RB PT200 PT400 EQU * CF A14,LINWRP CHECK WRAP LDR A4,A4 END OF BUFFER? RF(Z) PT700 YES OS AND DOS LCR A2,A3 GET CHAR. ANK A2,/80 ATTRIBUTE? RF(NZ) PT500 YES PT410 EQU * . =7 ADK A4,1 ADK A3,1 RB PT400 PT500 EQU * LCR A2,A3 GET CHAR. =7 ANK A2,/20 PROTECTED? RB(NZ) PT410 . =7 ADK A4,1 ADK A3,1 CF A14,LINWRP CHECK WRAP PT700 EQU * ORKL A10,PTORD PT800 EQU * LDK A1,0 RETURN CODE RTN A14 EJECT ************************************************************* * * * RA REPEAT TO ADDRESS * * * ************************************************************* * REGISTERS * * A1= RETURN CODE * A2= CHAR. TO BE REPEATED * A3= ADDRESS IN VDU-BUFFER * A4= REL. CURSOR POS. * A5= RESERVED * A6= INTERNAL LINE FLAG ADDRESS * A8= RESERVED * A9= DC-BUFFER INDEX * A10= INDICATOR * A11= CREDIT WORK AREA * A12= RESERVED * A13= RESERVED * ************************************************** RA EQU * LDK A1,IORAA1 NEXT LABEL ST A1,UNPMOD,A11 LDK A1,0 RF RA900 FIRST BYTE RA100 EQU * ENTRY LABEL FROM RETTAB LC A7,CONATT,A2 CONVERT ANK A7,/3F SLL A7,6 LDK A1,IORAA2 NEXT LABEL ST A1,UNPMOD,A11 LDK A1,0 RF RA900 SECOND BYTE RA200 EQU * ENTRY LABEL FROM RETTAB LC A2,CONATT,A2 ANK A2,/3F ORR A7,A2 CWK A7,LBVDU INVALID ADDRESS RF(NL) RA800 YES LDK A1,IORACH NEXT LABEL ST A1,UNPMOD,A11 LDK A1,0 RF RA900 CHAR. BYTE RA250 EQU * ENTRY LABEL FROM RETTAB LDK A1,IORDER ST A1,UNPMOD,A11 RA300 EQU * SCR A2,A3 STORE IN VDU-BUFFER LC A1,LINFLG,A6 ORK A1,1 SC A1,LINFLG,A6 ADK A3,1 ADK A4,1 CF A14,LINWRP CHECK WRAP =1 CWR A4,A7 ALL REPEATED? =1 RB(NE) RA300 NO =1 ORKL A10,PTORD INDICATE PT ORDER LDK A1,0 RETURN CODE RF RA900 RA800 EQU * ORKL A10,THROWB THROW IT AWAY LDK A1,1 RETURN CODE RA900 EQU * RTN A14 EJECT ****************************************************** * * * EUA ERASE UNPRO. TO ADDRESS * * * ****************************************************** * REGISTERS * * A1= RETURN CODE * A2= CHAR. * A3= RESERVED * A4= RESERVED * A5= RESERVED * A6= RESERVED * A8= RESERVED * A9= RESERVED * A10= INDICATOR * A11= CREDIT WORK AREA * A12= RESERVED * A13= RESERVED * ******************************************************* EUA EQU * LDK A1,IOEUA1 NEXT LABEL ST A1,UNPMOD,A11 LDK A1,0 RF EUA900 FIRST BYTE EUA100 EQU * ENTRY LABEL FROM RETTAB LC A7,CONATT,A2 CONVERT ANK A7,/3F SLL A7,6 LDK A1,IOEUA2 NEXT LABEL ST A1,UNPMOD,A11 LDK A1,0 RF EUA900 SECOND BYTE EUA200 EQU * ENTRY LABEL FROM RETTAB LC A2,CONATT,A2 ANK A2,/3F ORR A7,A2 LDK A1,IORDER NEXT LABEL ST A1,UNPMOD,A11 CWK A1,LBVDU INVALID ADDRESS? RF(NL) EUA800 YES LDR A1,A7 CF A14,ERASUA ERASE UNPRO. TO ADDRESS CF A14,SCRINF LDK A1,0 RETURN CODE ORKL A10,PTORD INDICATE PT ORDER RF EUA900 EUA800 EQU * ORKL A10,THROWB RUBB. LDK A1,1 RETURN CODE EUA900 EQU * RTN A14 EJECT ******************************************************** * * * CHAR. < /20 BUT NOT ORDER * * * ******************************************************** * REGISTERS * * A1= RETURN CODE * A2= CHAR. * A3= ADDRESS IN VDU-BUFFER * A4= REL. CURSOR POS. * A5= RESERVED * A6= INTERNAL LINE FLAG ADDRESS * A8= RESERVED * A9= RESERVED * A10= INDICATOR * A11= CREDIT WORK AREA * A12= RESERVED * A13= RESERVED * ************************************************ ESC EQU * ORKL A10,LICREC INDICATE COMMAND LDK A1,1 STOP ORDER PROCESS RF CHARET INVAL EQU * ORKL A10,/9800 END UNPACKING LDK A1,1 RF CHARET NULCHA EQU * NL EQU * FF EQU * EM EQU * CR EQU * CF A14,LINWRP CHECK WRAP SCR A2,A3 STORE CHAR. LC A1,LINFLG,A6 ORK A1,1 SC A1,LINFLG,A6 XRKL A10,PTORD INDICATE PT ORDER ADK A3,1 ADK A4,1 LDK A1,0 CONTINUE CHARET EQU * RTN A14 EJECT **************************************************************** * * * PACKSY PACK DC BUFFER IN SYSTEM MODE * * * **************************************************************** * REGISTERS * * A2= CHAR * A3= ADDRESS IN VDU-BUFFER * A4= REL. CURSOR POS. * A5= RESERVED * A6= RESERVED * A8= ADDRESS IN DC-BUFFER * A9= INDEX IN DC-BUFFER * A11= CREDIT WORK AREA * A12= BUFFER ADDRESS * A13= RESERVED * *************************************************************** PACKSY EQU * IFT SNA=1 LDKL A9,0 COUNTER LD A3,CURPOS,A11 GET START POS. CWK A3,/800 ANY CHAR. ON DISPLAY? RF(E) PASY40 NO CF A14,SCRINF GET SCREEN INFORMATION LDR A1,A4 SUR A1,A3 GET LENGTH OF MESSAGE RF(NN) PASY10 NOT WRAP AROUND LDKL A1,LBVDU-1 LAST POS. ON SCREEN SUR A1,A3 GET LENGTH AGAIN PASY10 EQU * CWK A1,256 ILLEGAL LENGTH? RF(NG) PASY20 NO LDKL A1,256 ADJUST LENGTH PASY20 EQU * ADKL A3,BVDU ADR A3,A11 PASY30 EQU * CWR A1,A9 ALL EXAMINED? RF(E) PASY40 YES LCR A2,A3 GET CHAR IN VDU BUFFER ADK A3,1 CWK A2,NULL NULL CHAR.? RB(E) PASY30 YES, DON'T STORE CF A14,PDCCH STORE CHAR. IN DC BUFFER RB PASY30 PASY40 EQU * LDK A1,0 INDICATE LAST IN CHAIN CF A14,DCWRIT SEND BUFFER LDR A8,A12 GET BUFFER TO RELEASE CF A14,RELBUF RELEASE BUFFER XIF RTN A14 EJECT ************************************************************* * * * UNPSYS UNPACK DC BUFFER IN SYSTEM MODE * * * ************************************************************* * REGISTERS * * A2= CHAR. * A3= ADDRESS IN VDU-BUFFER * A4= REL. CURSOR POS. * A5= LAST IN ROW REL POS * A6= INTERNAL LINE FLAG ADDRESS * A8= ADDRESS IN DC-BUFFER * A9= INDEX IN DC-BUFFER * A10= INDICATOR * A11= CREDIT WORK AREA * A12= RESERVED * A13= RESERVED * ************************************************************** UNPSYS EQU * IFT SNA=1 LD A1,KBINH,A11 ORK A1,3 ST A1,KBINH,A11 CF A14,LMP4ON CF A14,SCRINF GET SCREEN INFORMATION LDR A3,A4 CURSOR ADDRESS ADKL A3,BVDU ADR A3,A11 VDU BUFFER ADDRESS LD A8,BUFPNT,A11 GET DC BUFFER ADDRESS SUR A9,A9 INDEX IN DC BUFFER LDR A6,A11 LDK A5,LLINE CF A14,LINE GET INTERNAL LINEFLAG UNPS05 EQU * CF A14,GDCCH GET CHAR. IN DC BUFFER LDR A1,A1 ANYTHING LEFT? RF(NZ) UNPS60 NO CWK A2,/31 BIND? RF(E) UNPS50 YES,PERHAPS UNPS07 EQU * CWK A2,/20 ORDER? RF(NL) UNPS40 NO CWK A2,/0A NEW LINE? RF(NE) UNPS10 NO CF A14,NLROUT PERFORM NEW LINE RB UNPS05 UNPS10 EQU * CWK A2,/1C IFS? RF(NE) UNPS20 NO LDK A2,/2A REPLACE WITH * RF UNPS40 UNPS20 EQU * CWK A2,/1E IRS? RF(NE) UNPS30 NO LDK A2,/3B REPLACE WITH ; RF UNPS40 UNPS30 EQU * CWK A2,NULL NULL? RF(NE) UNPS40 NO LDK A2,/20 REPLACE WITH SPACE UNPS40 EQU * CF A14,LINWRP CHECK WRAP SCR A2,A3 STORE IN VDU BUFFER LC A1,LINFLG,A6 ORK A1,1 SC A1,LINFLG,A6 ADK A3,1 ADK A4,1 RB UNPS05 UNPS50 EQU * CF A14,GDCCH ANK A2,/FE SHURE OF BIND? RF(Z) UNPS55 ALMOST SUKL A8,2 SUKL A9,2 CF A14,GDCCH RB UNPS07 UNPS55 EQU * LDK A1,MYJOB INDICATE MY JOB MODE ADKL A1,/8000 NEW MODE ACTIVATION ST A1,SNAMOD,A11 LDKL A10,1 NO DISPLAY RF UNPS70 UNPS60 EQU * LDKL A5,LBVDU+1 LDK A6,0 CF A14,STOINF SAVE NEW SCREEN INFORMATION LDKL A10,0 UNPS70 EQU * LD A8,BUFPNT,A11 GET BUFFER TO RELEASE CF A14,RELBUF RELEASE BUFFER XIF RTN A14 EJECT ************************************************************ * * * GETNXT GET AND CHECK NEXT BUFFER * * ************************************************************ * REGISTERS * * A1= RETURN CODE * A11= CREDIT WORK AREA * A12= BUFFER ADDRESS * A13= RESERVED * ************************************************************ GETNXT EQU * IFT SNA=1 CF A14,SAVE2 SAVE UNPACK INFORMATION LD A8,BUFPNT,A11 GET BUFFER TO RELEASE CF A14,RELBUF RELEASE BUFFER IFT DISHOW=2 LC A1,TCT01,A11 CCK A1,VDUCOD PRINTER UNPACK? RF(NE) GETC10 YES CF A14,DISMOD DISPLAY MODIFIED FIELDS XIF IFT SNA=1 GETC10 EQU * CF A14,WAIT SYNCHRONIZE LD A2,ECBEL,A8 SAVE LENGTH =4 ST A2,DCLENG,A11 . =4 LDR A9,A1 CF A14,REST2 LDR A1,A9 GET RETURN CODE SRC A1,1 FIRST OR MODDLE IN CHAIN? RF(NN) GETC30 NO LDR A1,A10 GET INTERNAL STATUS ANKL A1,LICREC LAST IN CHAIN RECEIVED? RF(Z) GETC60 NO LC A1,TCT01,A11 CCK A1,VDUCOD PRINTER UNPACK? RF(NE) GETC20 YES CF A14,P2WCC TAKE CARE OF WCC AFTER UPDATE GETC20 EQU * XRKL A10,LICREC RESET LAST IN CHAIN ORKL A10,NEWCH NEW CHAIN RF GETC60 GETC30 EQU * SRC A1,1 LAST IN CHAIN RECEIVED? RF(NN) GETC90 NO GETC40 EQU * LDR A1,A10 GET INTERNAL STATUS ORKL A10,LICREC LAST IN CHAIN RECEIVED ANKL A1,LICREC LAST IN CHAIN RECEIVED? RF(Z) GETC60 NO CF A14,P2WCC TAKE CARE OF WCC AFTER UPDATE ORKL A10,NEWCH NEW CHAIN GETC60 EQU * ST A12,BUFPNT,A11 SAVE BUFFER ADDRESS CF A14,SAVE2 SAVE INFORMATION =2 CF A14,GETBUF GET NEW BUFFER LDR A3,A8 GET BUFFER ADDRESS CF A14,READNW READ WITH NO WAIT CF A14,REST2 RESTORE UNPACK INFORMATION LDR A1,A10 ANKL A1,NEWCH NEW CHAIN? RF(Z) GETC80 NO IFT DISHOW=1 XRKL A10,NEWCH RESET LC A1,TCT01,A11 CCK A1,VDUCOD RF(NE) GETC70 CF A14,SAVE2 CF A14,DISMOD CF A14,REST2 XIF IFT SNA=1 GETC70 EQU * LDK A1,ICOMN1 NEXT LABEL ST A1,UNPMOD,A11 GETC80 EQU * LD A8,BUFPNT,A11 SUR A9,A9 LDK A1,0 RETUR N CODE GETC90 EQU * XIF RTN A14 EJECT ************************************************************* * * * PUTCHA PUT CHAR. IN DC BUFFER * * * ************************************************************* * REGISTERS * * A1= RETURN CODE * A11= CREDIT WORK AREA * A12= RESERVED * A13= RESERVED * ************************************************************* PUTCHA EQU * LDR A1,A1 SBA TO STORE? RF(N) PUTC10 YES CWK A9,BUFFL+BUFFL BUFFER FULL? RF(NL) PUTC20 YES RF PUTC30 PUTC10 EQU * LDKL A1,BUFFL+BUFFL-3 SUR A1,A9 ROOM FOR SBA AND ADDRESS? RF(NN) PUTC30 YES PUTC20 EQU * IFT SNA=1 CF A14,SAVE2 SAVE PACK INFORMATION LDK A1,1 INDICATE NOT LAST IN CHAIN CF A14,DCWRIT WRITE DC BUFFER LDR A9,A1 CF A14,REST2 LDR A9,A9 TRANSMISSION OK? RF(NZ) PUTC90 NO SUR A9,A9 BUFFER INDEX LDR A8,A12 BUFFER ADDRESS XIF IFF SNA=1 CF A14,ERROR LDKL A1,* ST A1,REGI,A11 LKM DATA 3 XIF PUTC30 EQU * CF A14,PDCCH PUT CHAR. IN DC BUFFER LDK A1,0 RETURN CODE PUTC90 EQU * RTN A14 EJECT ************************************************** * * * PDCCH PUT CHAR. IN DC BUFFER * * * ************************************************** * REGISTERS * * A2= CHAR. * A3= RESERVED * A4= RESERVED * A5= RESERVED * A6= RESERVED * A8= ADDRESS IN DC-BUFFER * A9= DC-BUFFER INDEX * A10= INDICATOR * A11= RESERVED * A12= RESERVED * A13= RESERVED * *************************************************** PDCCH EQU * CWK A9,BUFFL+BUFFL OVERFLOW? RF(NL) PDC100 YES ANK A2,/FF IFT SNA+EBCDIC=2 . =5 LC A2,CONEBC,A2 CONVERT XIF SCR A2,A8 STORE IN DC-BUFFER ADKL A8,1 ADKL A9,1 PDC100 EQU * RTN A14 EJECT *************************************************************** * * * GDCCH GET CHAR. IN DC BUFFER * * * *************************************************************** * REGISTERS * * A1= RETURN CODE * A2= CHAR. * A3= POINTER IN VDU BUFFER * A4= RESERVED * A5= RESERVED * A6= RESERVED * A8= ADDRESS IN DC-BUFFER * A9= DC-BUFFER INDEX * A10= INDICATOR * A11= CREDIT WORK AREA * A12= RESERVED * A13= RESERVED * **************************************************** GDCCH EQU * LDK A1,1 PRESET ERROR CW A9,DCLENG,A11 BUFFER EMPTIED? RF(NL) GDCC90 YES LDK A1,0 LCR A2,A8 GET CHAR. ANK A2,/FF IFT SNA+EBCDIC=2 . =5 LC A2,CONASC,A2 CONVERT XIF ADKL A8,1 ADKL A9,1 GDCC90 EQU * RTN A14 EJECT *********************************************************** * * * PAID STORE AID IN BUFFER * * * *********************************************************** * REGISTERS * * A2= AID * A11= RESERVED * A13= RESERVED * ********************************************************** PAID EQU * CF A14,PDCCH STORE AID RTN A14 EJECT ********************************************************** * * * BUFADR STORE BUFFER ADDRESS IN DC-BUFFER * * * ********************************************************** * REGISTERS * * A2= CHAR. * A3= RESERVED * A4= RESERVED * A5= RESERVED * A6= RESERVED * A8= RESERVED * A9= RESERVED * A10= RESERVED * A11= RESERVED * A12= RESERVED * A13= RESERVED * ********************************************************** BUFADR EQU * LDR A2,A1 GET REL. POS. SRL A2,6 ANK A2,/3F LC A2,CONADR,A2 CONVERT TO ASCII CF A14,PDCCH STORE IN DC-BUFFER LDR A2,A1 GET REL. POS. ANK A2,/3F LC A2,CONADR,A2 CONVERT TO ASCII CF A14,PDCCH STORE IN DC-BUFFER RTN A14 EJECT ************************************************************ * * * RESMDT RESET ALL MDT-BITS IN ATTRIBUTES * * * ************************************************************ * REGISTERS * * A2= CHAR. * A3= ADDRESS IN VDU-BUFFER * A4= RESERVED * A5= RESERVED * A6= RESERVED * A8= RESERVED * A9= RESERVED * A10= RESERVED * A11= CREDIT WORK AREA * A12= RESERVED * A13= RESERVED * ************************************************************* RESMDT EQU * LDK A1,0 FIRST SCREEN POS. LDKL A3,BVDU ADR A3,A11 RESM10 EQU * CWK A1,LBVDU ALL SCANNED? RF(NL) RESM90 YES LCR A2,A3 GET CHAR. CCK A2,/8080 ATTRIBUTE? RF(L) RESM20 NO ANK A2,/FE RESET MDT-BIT SCR A2,A3 RESTORE RESM20 EQU * ADK A1,1 ADK A3,1 RB RESM10 RESM90 EQU * RTN A14 EJECT ******************************************************** * * * P1WCC PROCESS WCC BEFORE UPDATE * * ******************************************************** * REGISTERS * * A2= CHAR. * A3= RESERVED * A4= RESERVED * A5= RESERVED * A6= RESERVED * A8= RESERVED * A9= RESERVED * A10= RESERVED * A11= CREDIT WORK AREA * A12= RESERVED * A13= RESERVED * *************************************************** P1WCC EQU * LC A2,CONATT,A2 IN EBCDIC ST A2,WCC,A11 SAVE ANK A2,1 RESET MDT-BITS? RF(Z) P1W900 NO CF A14,RESMDT RESET ALL MDT-BITS P1W900 EQU * RTN A14 EJECT ********************************************************* * * * P2WCC TAKE CARE OF WCC AFTER UPDATE * * * ********************************************************* * REGISTERS * * A11= CREDIT WORK AREA * A12= RESERVED * A13= RESERVED * ********************************************************** P2WCC EQU * CF A14,SAVE2 KEEP IT AWAY =4 LD A3,WCC,A11 . =4 LC A4,TCT01,A11 . =6 CCK A4,VDUCOD VDU? =6 RF(NE) P2W100 NO! NO SOUND =6 LDR A7,A3 . =4 ANK A7,4 SOUND? RF(Z) P2W100 NO CF A14,SOUND SOUND P2W100 EQU * ANK A3,8 COPY? =4 RF(Z) P2W300 NO CCK A4,VDUCOD VDU? =4 RF(NE) P2W200 NO PRINTER =4 CF A14,COPY COPY RF P2W300 . =4 P2W200 EQU * . =4 CF A14,COPP COPY DIRECTLY =4 P2W300 EQU * CF A14,REST2 TAKE IT BACK =4 RTN A14 EJECT ****************************************************************** * * * SAVE SAVE PACK AND UNPACK INFORMATION * * * ****************************************************************** * REGISTERS * * A1= STACK POINTER * A2= CHAR. * A3= VDU BUFFER ADDRESS * A4= REL CURSOR POS. * A5= REL STTRIBUTE POS. * A6= ATTRIBUTE CHAR. * A10= INTERNAL INDICATOR * A11= CREDIT WORK AREA * A12= RESERVED * A13= RESERVED * **************************************************************** SAVE1 EQU * LDKL A1,STACK1 GET STACK ADDRESS RF SAVE SAVE2 EQU * LDKL A1,STACK2 SAVE EQU * ADR A1,A11 STR A2,A1 ADK A1,2 STR A3,A1 ADK A1,2 STR A4,A1 ADK A1,2 STR A5,A1 ADK A1,2 STR A6,A1 ADK A1,2 STR A7,A1 ADK A1,2 STR A10,A1 RTN A14 EJECT ******************************************************************* * * * RESTOR RESTORE PACK AND UNPACK INFORMATION * * * ******************************************************************* * REGISTERS * * A1= STACK POINTER * A2= CHAR. * A3= VDU BUFFER ADDRESS * A4= REL. CURSOR POS. * A5= REL. ATTRIBUTE POS. * A6= ATTRIBUTE CHAR. * A7= RESERVED * A10= INTERNAL INDICATOR * A11= CREDIT WORK AREA * A12= RESERVED * A13= RESERVED * *************************************************************** REST1 EQU * LDKL A1,STACK1 GET STACK ADDRESS RF RESTOR REST2 EQU * LDKL A1,STACK2 RESTOR EQU * ADR A1,A11 LDR* A2,A1 ADK A1,2 LDR* A3,A1 ADK A1,2 LDR* A4,A1 ADK A1,2 LDR* A5,A1 ADK A1,2 LDR* A6,A1 ADK A1,2 LDR* A7,A1 ADK A1,2 LDR* A10,A1 RTN A14 EJECT ******************************************************* * * * BUFFER POOL * * * ******************************************************* BUFFER EQU * DATA *+2 POINTER FIRST FREE IFF BUFFNR=1 DATA *+LINK RES BUFFL IFF BUFFNR=2 DATA *+LINK RES BUFFL IFF BUFFNR=3 DATA *+LINK RES BUFFL IFF BUFFNR=4 DATA *+LINK RES BUFFL IFF BUFFNR=5 DATA *+LINK RES BUFFL IFF BUFFNR=6 DATA *+LINK RES BUFFL IFF BUFFNR=7 DATA *+LINK RES BUFFL IFF BUFFNR=8 DATA *+LINK RES BUFFL IFF BUFFNR=9 DATA *+LINK RES BUFFL IFF BUFFNR=10 DATA *+LINK RES BUFFL IFF BUFFNR=11 DATA *+LINK RES BUFFL IFF BUFFNR=12 DATA *+LINK RES BUFFL IFF BUFFNR=13 DATA *+LINK RES BUFFL IFF BUFFNR=14 DATA *+LINK RES BUFFL IFF BUFFNR=15 DATA *+LINK RES BUFFL IFF BUFFNR=16 DATA *+LINK RES BUFFL IFF BUFFNR=17 DATA *+LINK RES BUFFL IFF BUFFNR=18 DATA *+LINK RES BUFFL IFF BUFFNR=19 DATA *+LINK RES BUFFL IFF BUFFNR=20 DATA *+LINK RES BUFFL IFF BUFFNR=21 DATA *+LINK RES BUFFL IFF BUFFNR=22 DATA *+LINK RES BUFFL IFF BUFFNR=23 DATA *+LINK RES BUFFL IFF BUFFNR=24 DATA *+LINK RES BUFFL IFF BUFFNR=25 DATA *+LINK RES BUFFL IFF BUFFNR=26 DATA *+LINK RES BUFFL IFF BUFFNR=27 DATA *+LINK RES BUFFL IFF BUFFNR=28 DATA *+LINK RES BUFFL IFF BUFFNR=29 DATA *+LINK RES BUFFL IFF BUFFNR=30 DATA *+LINK RES BUFFL IFF BUFFNR=31 DATA *+LINK RES BUFFL IFF BUFFNR=32 DATA *+LINK RES BUFFL XIF DATA 0 RES BUFFL EJECT ******************************************************* * * * GETBUF GET BUFFER * * * ******************************************************* * REGISTERS * * A8= DC-BUFFER ADDRESS * A9= INDEX IN DC-BUFFER * A11= RESERVED * A12= BUFFER ADDRESS * A13= RESERVED * ******************************************************** GETBUF EQU * LDKL A7,BUFFER GETB10 EQU * LDR* A8,A7 RF(NZ) GETB90 BUFFER FREE LKM DATA 0 SWITCH TASK RB GETB10 GETB90 EQU * LDR* A1,A8 STR A1,A7 ADKL A8,2 LDR A12,A8 SUR A9,A9 RTN A14 EJECT ********************************************************* * * * RELBUF RELEASE BUFFER * * * ********************************************************* * REGISTERS * * A8= BUFFER ADDRESS * A11= RESERVED * A13= RESERVED * ********************************************************* RELBUF EQU * LDKL A7,BUFFER SUKL A8,2 POINT TO LINK RELB10 EQU * LDR* A1,A7 RF(Z) RELB90 LDR A7,A1 RB RELB10 RELB90 EQU * STR A8,A7 CMR A8 RTN A14 END