. . DATA DEFINITIONS FOR FANG . . . (C) Copyright 1972-1978 John Walker . . This software is in the public domain . DEF . . COMMAND TABLE . CTNAME EQUF 0 COMMAND NAME (TWO WORDS) CTPN EQUF 2,,XH1 NUMBER OF PARAMETERS CTPTP EQUF 2,,H2 PARAMETER TABLE POINTER CTMODE EQUF 3,,S2 SCANNING MODE BITS CTIMM EQUF 3,,S3 IMMEDIATE EXECUTION MODE FLAG CTAD EQUF 3,,H2 PROCESS ROUTINE ADDRESS CMDEL EQU 4 COMMAND TABLE ENTRY LENGTH . . SCANNING MODE BIT VALUES . IU EQU 1 IMPLY 'U' OPTION UO EQU 2 ALLOW 'U' OPTION VO EQU 4 ALLOW 'V' OPTION OP EQU 8 OMITTED REPEAT PARAMETERS OK CL EQU 16 FILE PARAM MAY BE COMMUNICATIONS LINE . . PARAMETER DESCRIPTOR ENTRY . PDTYPE EQUF 0,,S1 PARAMETER TYPE CODE PDOMIT EQUF 0,,S2 PARAMETER MAY BE OMITTED FLAG PDFLAGS EQUF 0,,S3 READ-ONLY FILE USE FLAG PDEL EQU 1 LENGTH OF ENTRY . . PARAMETER TYPES . NUMBER EQU 0 INTEGER FILE EQU 1 FILE NAME STRING EQU 2 CHARACTER STRING DATA EQU 3 DATA BUFFER KEY EQU 4 SEARCH KEY BUFFER (LIKE DATA) BLOCK EQU 5 DATA BLOCK BUFFER CURBLK EQU 6 INTERNAL 'CURRENT BLOCK' BUFFER ELEMENT EQU 7 ELEMENT NAME ELTCLASS EQU 8 ELEMENT CLASS (INCLUDES ELEMENT NAME) EITHER EQU 9 EITHER ELEMENT OR FILE ELTYPE EQU 10 ELEMENT TYPE CODE EQU 97001 DEFINES CODE AREA LPAR EQU 040 LEFT PARENTHESIS CODE RPAR EQU 041 RIGHT PARENTHESIS CODE CORCRD EQU 042 CORRECTION CARD BUFFER PBUFR EQU 043 PATCH BUFFER TYPE MBUFR EQU 044 MASK BUFFER . . I/O FILE CONTROL TABLE . IOPKT EQUF 0 I/O PACKET START IOFN EQUF 0 FILE NAME IOINTNAM EQUF 2,,S3 INTERRUPT ACTIVITY ID IOINTAD EQUF 2,,H2 INTERRUPT ROUTINE START ADDRESS IOSTATUS EQUF 3,,S1 I/O STATUS IOFUNC EQUF 3,,S2 I/O FUNCTION IOAFC EQUF 3,,S3 ABNORMAL FRAME COUNT IOXFER EQUF 3,,H2 WORDS TRANSFERRED IOACW EQUF 4 ACCESS WORD IODRAD EQUF 5 DRUM ADDRESS IOBLKN EQUF 5 CURRENT BLOCK NUMBER IOSENT EQUF 6 SEARCH SENTINEL IOFIND EQUF 7 SEARCH FIND ADDRESS IOFDT EQUF 8,,H2 FDT POINTER IOOPT EQUF 9,,S1 FILE FORMAT OPTION IOCOUNT EQUF 9,,XH2 NUMBER OF 'BLOCKS' TO PROCESS IOBLEN EQUF 10,,H1 BLOCK LENGTH IOWAD EQUF 10,,S4 WORD-ADDRESSABLE FLAG IOMASS EQUF 10,,S5 MASS STORAGE FLAG IOBB EQUF 11 START OF BOUNDED BUFFER IOL EQU IOBB+6 LENGTH OF I/O FCT . . I/O STATUS CODES . CKSMER EQU 075 CHECKSUM ERROR STERM EQU 076 TERMINATE (STOP, BUT NOT AN ERROR) . . IOZOOM CONTROL TABLE (REST LIKE I/O FCT) . IZBUFL EQU 1792 LENGTH OF IOZOOM BUFFER IZFS EQU IOBB FIRST SECTOR IN CORE IZLS EQU IOBB+1 LAST SECTOR IN CORE IZDATA EQU IOBB+2 START OF DATA BUFFER IZL EQU IZDATA+IZBUFL LENGTH OF IOZOOM FCT . . BLOCKED OUTPUT FCT ADDITIONAL EQUATES . IOBU EQUF IOBB,,H2 CURRENT BLOCKED BUFFER ADDRESS IOWB EQUF IOBB,,H1 WORDS LEFT IN BUFFER . . BLOCK BUFFER FORMAT . IBQ EQUF 0 QUEUE HEADER IBLAST EQUF 2,,S1 LAST BLOCK FLAG IBSTAT EQUF 2,,S2 STATUS OF OPERATION IBAFC EQUF 2,,S3 ABNORMAL FRAME COUNT IBIOP EQUF 2,,H2 POINTER TO I/O FCT IBFDT EQUF 2,,H2 FDT ADDRESS (STORED BLOCKS ONLY) IBBLKN EQUF 4 BLOCK SEQUENCE NUMBER IBMSAD EQUF 4 MASS STORAGE ADDRESS OF THIS BLOCK IBLEN EQUF 3,,H2 WORDS TRANSFERRED IBDATA EQUF 5 START OF DATA IN BUFFER . . @COPY,G file header block . cghsentl equf ibdata 'COPYG' or 'COPYGD' cghblks equf ibdata+1 'BLKSEQ' cghqual equf ibdata+2 file qualifier cghfn equf ibdata+4 file name cghafcyc equf ibdata+6 absolute f-cycle cghtd equf ibdata+7 time and date of copy (DATE$) cgheqt equf ibdata+9 equipment type of source file cghitrk equf ibdata+10 highest track referenced in file cghfang equf ibdata+11 start of '>FANG<' fill . . COMMAND DESCRIPTOR BUFFER . CDBQ EQUF 0 QUEUE WORDS CDBACT EQUF 2,,H2 FORK-TO ADDRESS CDBPC EQUF 2,,H1 HEAD OF PARAMETER CHAIN CDIMG EQUF 3,,H1 IMAGE REQUESTING THIS COMMAND CDRB EQUF 3,,S4 ROADBLOCKED FLAG CDCEASE EQUF 3,,S5 CEASE FLAG CDOPTS EQUF 4 OPTION BITS FOR THIS COMMAND CDELTQ EQUF 5 COMMAND DESCRIPTOR QUEUE HEAD CDBUFW EQUF 7 BUFFER CHAIN WORD CDPATCH EQUF CDBUFW,,H1 PATCH BUFFER POINTER CDBUFC EQUF CDBUFW,,H2 BUFFER CHAIN (BGETL) CDMASK EQUF 8,,H1 MASK BUFFER POINTER . EQUF 8,,H2 *FREE* CDL EQU 9 COMMAND BUFFER LENGTH . . PARAMETER BUFFER . PBLINK EQUF QFL LINK TO NEXT PARAMETER PBFLAGS EQUF QHEAD,,S2 FLAGS FOR READ-ONLY AND OTHER MODES PBTYPE EQUF QHEAD,,S3 PARAMETER TYPE . - 0 = INTEGER . - 1 = FILE . - 2 = STRING . PBVAL EQUF 2 VALUE: . INTEGER: VALUE OF INTEGER . STRING: LENGTH (TEXT STARTS AT PBS . FILE: FDT POINTER PBSS EQUF 3 STRING START PBL EQU 3 PARAMETER BUFFER LENGTH . . PARAMETER BUFFER FLAG BITS . PBFRO EQU 1 READ-ONLY USE OF FILE BY THIS COMMAND PBFSEC EQU 2 DON'T PRINT THIS PARAMETER IF BATCH . . IMAGE BUFFER . IMLN EQUF 0,,H1 LINE NUMBER IMRN EQUF 0,,S4 REPEAT IMAGE NUMBER IMNS EQUF 0,,S5 NUMBER OF DO SUBSCRIPTS IMIMG EQUF 1 START OF LINE IMAGE IMSS EQUF 15 SUBSCRIPT START LOCATION IML EQU 15 LENGTH OF IMAGE BUFFER . . . FILE DESCRIPTOR TABLE . FDIN EQUF 0 INTERNAL NAME FDFN EQUF 2 FILE NAME FDQUAL EQUF 4 QUALIFIER FDEQT EQUF 6,,S1 EQUIPMENT CODE FDINHBT EQUF 6,,S2 INHIBIT BITS FDQWM EQUF 6,,S2 QUARTER WORD MODE FLAG FDPOSF EQUF 6,,S3 POSITION GRANULARITY FLAG FDOPTS EQUF 7 ASSIGN OPTIONS FDBITPC EQUF 7,,S1 BITS PER CHARACTER FDVOL EQUF 8,,S1 # REELS ASSIGNED FDCTMSPD EQUF 8,,S1 CTM SPEED FOR LINE FDMODES EQUF 8,,H2 MODE BITS FDFLW EQUF 9 FILE LENGTH IN WORDS (WAD) . WE USE THE MAXIMUM LENGTH AS THE LENGTH . SINCE THERE'S NO WAY TO GET THE HIGHEST . WRITTEN ADDRESS OF A TEMPORARY WORD- . ADDRESSABLE FILE. FDHITRK EQUF 9,,H1 HIGHEST TRACK REFERENCED FDRINDX EQUF 10,,S3 REEL INDEX FDREADC EQUF 11,,S1 READ IN-PROGRESS COUNT FDWRITE EQUF 11,,S2 WRITE LOCK FDPROT EQUF 11,,S3 PROTECT MODE FLAG FDPROP EQUF 11,,H2 PROPERTIES OF FILE EQUIPMENT fdfext equf 12,,h1 files extended fdbext equf 12,,xh2 blocks extended FDFC EQUF 13,,T1 F-CYCLE (RELATIVE) FDLOCK EQUF 13,,S3 IN-USE FLAG . 0 = AVAILABLE FOR USE . 1 = IN USE CURRENTLY . 2 = ROADBLOCKED DUE TO ERROR FDLINK EQUF 13,,H2 CHAIN TO NEXT FDT FDMSAD EQUF 14 CURRENT MASS STORAGE ADDRESS / ... FDBLKN EQUF 14 ...OR CURRENT BLOCK NUMBER FDBLOCK EQUF 14 LINK TO CURRENT DATA BUFFER (BLOCK ONLY) FDTYPE EQUF 15,,S1 FILE TYPE FLAG . 0 = SINGLE TAPE . 1 = MULTI TAPE . 2 = MASS STORAGE . 3 = WAD STORAGE FDFRF EQUF 15,,S2 MUST FREE FLAG FDFMT EQUF 15,,S3 FILE FORMAT INDICATOR FDBLEN EQUF 15,,H2 BLOCK LENGTH FDRK EQUF 16 READ KEY FDWK EQUF 17 WRITE KEY FDIPLC EQUF 18 IN-PROGRESS ADDRESS FDLT EQUF 18,,H2 LINE TABLE POINTER FDCRYK EQUF 19 CRYPTOGRAPHIC PROTECTION KEY (2 WORDS) fdlablm equf 21,,s1 tape labeling type flag . free equf 21,,s2-s6 * free * FDL EQU 22 FDT LENGTH . . ELEMENT DESCRIPTOR TABLE . ELFDT EQUF PBVAL,,H1 FDT OF SOURCE FILE ELALL EQUF PBVAL,,S4 TYPE SELECTION BITS ELCYC EQUF PBVAL,,T3 REQUESTED CYCLE ELTBIT EQUF PBSS TYPE SELECTION BITS ELPFP EQUF PBSS+1 START OF PFP FORMAT PACKET ELIN EQUF ELPFP INTERNAL FILE NAME FROM FDT ELELTN EQUF ELPFP+2 ELEMENT NAME ELTTYPE EQUF ELPFP+5,,S3 ELEMENT TYPE ELTVERN EQUF ELPFP+6 VERSION NAME ELTXT EQUF ELPFP+10 TEXT ADDRESS ELTND EQUF ELPFP+11 TIME AND DATE ELL EQU ELPFP+12 LENGTH OF PACKET . . DATA ITEM BUFFER . DBTYPE EQUF QL,,S3 ITEM TYPE DBLEN EQUF QL,,T1 LENGTH OF DATA ENTRY IN WORDS DBREPC EQUF QL,,H2 REPEAT COUNT DBVAL EQUF QL+1 VALUE WORD DBL EQU QL+1 LENGTH OF ENTRY . . PATCH BUFFER . PADELC EQUF QL,,H1 # WORDS TO DELETE PACPYC EQUF QL,,H2 # WORDS TO COPY PAADDC EQUF QL+1,,H1 # WORDS TO ADD PAL EQU QL+2 LENGTH OF PATCH BUFFER . . SEARCH FIND BUFFER . SFFINDW EQUF QL FIND ADDRESS WITHIN BLOCK SFL EQU QL+1 LENGTH OF SEARCH FIND BUFFER . . CRYPTOGRAPHIC PROTECTION WORK BUFFER . PROTL EQU 4 WORK BUFFER LENGTH . . FILE TYPE CODES . TSINGLE EQU 0 SINGLE TAPE TMULTI EQU 1 MULTI-TAPE FILE FFAST EQU 2 FASTRAND FORMAT MASS STORAGE FWAD EQU 3 WORD-ADDRESSABLE MASS STORAGE . . Tape labeling type codes . tlunk equ 0 tape label type not yet determined tlunl equ 1 unlabeled (or old format labeled) tllbl equ 2 ANSI (8 bit) labeled tape . . FILE TABLE INDEX DEFINITIONS . FTIFN EQUF 0 FILE NAME FTIPF EQUF 6 '**PF**' FTIWL EQUF 7 NEXT WRITE ADDRESS FTIET EQUF 9 ELEMENT TABLE INFORMATION FTIAPT EQUF 12 ASSEMBLER PROCEDURE TABLE FTICPT EQUF 15 COBOL PROCEDURE TABLE FTIFPT EQUF 18 FORTRAN PROCEDURE TABLE FTIEPT EQUF 21 ENTRY POINT TABLE INFORMATION FTILABS EQUF 25 LAST ABSOLUTE ELEMENT FTIL EQU 34+15 LENGTH OF FTI BUFFER . . ELEMENT MAPPING TABLE ITEM . EMTYP EQUF 0,,S3 ELEMENT TYPE EMLNK EQUF 0,,H2 LINK TO NEXT ITEM EMISN EQUF 1,,H1 INPUT SEQUENCE NUMBER EMOSN EQUF 1,,H2 OUTPUT SEQUENCE NUMBER EMITA EQUF 2 INPUT TEXT ADDRESS EMOTA EQUF 3 OUTPUT TEXT ADDRESS EML EQUF 4 LENGTH OF ENTRY . . ELEMENT ITEM DEFINITIONS . EIEN EQUF 0 ELEMENT NAME EIVLNK EQUF 2,,H1 VERSION LINK EIPLNK EQUF 2,,H2 POINTER LINK EISEQ EQUF 2,,H1 SEQUENCE NUMBER (FILLED BY FILESCAN) EINSEQ EQUF 2,,H2 NEW SEQUENCE NUMBER (FOR TRANSFER, PACK) EIFLGW EQUF 3 FLAGS WORD (NEGATIVE IF DELETED) EIFLG EQUF EIFLGW,,T1 FLAG BITS FOR ELEMENT MODES EITYP EQUF EIFLGW,,S3 ELEMENT TYPE EITLNK EQUF 3,,H2 TYPE LINK EITYP EQUF 3,,S3 ELEMENT TYPE EIVER EQUF 4 VERSION NAME EICYCW EQUF 6 CYCLE WORD EICLIM EQUF EICYCW,,T1 CYCLES TO KEEP EILATC EQUF EICYCW,,T2 LATEST CYCLE EINOCY EQUF EICYCW,,T3 NUMBER OF CYCLES PRESENT EIPCOD EQUF 7,,S1 PROCESSOR CODE (SYMBOLIC ONLY) EITXTL EQUF 7,,H2 TEXT LENGTH IN SECTORS EIPREA EQUF 6 PREAMBLE ADDRESS (RELOCATABLE ONLY) EIPREL EQUF 7,,H1 PREAMBLE LENGTH (RELOCATABLE ONLY) EITXTA EQUF 8 TEXT ADDRESS EITIME EQUF 9 TIME AND DATE (TDATE$ BACKWARDS) EIL EQU 10 LENGTH OF ELEMENT ITEM . . FILESCAN BUFFER EXTENSION . EIFQ EQUF 10 FILESCAN QUEUE HEAD EIFL EQU 12 FILESCAN ELEMENT ITEM BUFFER LENGTH . . ELEMENT TYPE NAMES . TY$SYM EQU 1 SYMBOLIC TY$ASMP EQU 2 ASM PROC TY$COBP EQU 3 COBOL PROC TY$FORP EQU 4 FORTRAN PROC (4TRAN ?) TY$REL EQU 5 RELOCATABLE TY$ABS EQU 6 ABSOLUTE TY$OMN EQU 7 OMNIBUS . . FLAG BIT DEFINITIONS . FL$ERR EQU 1 MARKED IN ERROR FL$QW EQU 2 QUARTER WORD FL$TW EQU 4 THIRD WORD FL$ASC EQU 020 ASCII SOURCE FL$AFCM EQU 040 ARITHMETIC FAULT COMPATIBILITY MODE FL$AFNI EQU 0100 ARITHMETIC FAULT NON-INTERRUPT MODE . . TOC COLUMN DEFINITIONS . TO$NV EQU 5 NAME / VERSION TO$TY EQU 35 TYPE TO$DAT EQU 55 DATE TO$TI EQU TO$DAT+11 TIME TO$PL EQU TO$TI+10 PREAMBLE LENGTH TO$TL EQU TO$PL+5 TEXT LENGTH TO$CL EQU TO$TL+6 OLDEST CYCLE PRESENT TO$CM EQU TO$CL+3 MAX CYCLES TO RETAIN TO$LOC EQU TO$CM+4 STARTING TEXT ADDRESS TO$FLG EQU TO$LOC+9 FLAGS . . SEGMENT LOAD TABLE DEFINITIONS . SGINC EQUF 0,,S1 IN CORE FLAG SGTYP EQUF 0,,S2 'R' IF RSEG SGLNK EQUF 0,,H2 LINK TO NEXT INCORE SEGMENT SGLIB EQUF 1,,H1 LAST IBANK ADDRESS SGSIB EQUF 1,,H2 FIRST IBANK ADDRESS SGLDB EQUF 2,,H1 LAST DBANK ADDRESS SGSDB EQUF 2,,H2 FIRST DBANK ADDRESS SGDRM EQUF 3 RELATIVE DRUM ADDRESS . . SDF I/O FILE CONTROL TABLE . SDFIN EQUF 0 INTERNAL NAME / I/O PACKET SDFFUNC EQUF 3,,T1 FUNCTION AND STATUS FIELD SDFBLW EQUF 4,,H1 BUFFER LENGTH IN WORDS SDFADR EQUF 5 FILE ADDRESS SDFBUFW EQUF 6 BUFFER WORD SDFBLS EQUF 7,,H1 BUFFER LENGTH IN SECTORS SDFIMGL EQUF 7,,H2 IMAGE LENGTH SDFIMA EQUF 8 IMAGE POINTER WORD (1,0) SDFBPT EQUF 9 BUFFER POINTER WORD (1,0) SDFICW EQUF 10 IMAGE CONTROL WORD SDFIMAGE EQUF 11 SDF IMAGE START SDFBUF1 EQUF SDFIMAGE+MAXIML FIRST I/O BUFFER SDFBUF2 EQUF SDFBUF1+BUFSDFT SDF I/O BUFFER 2 SDFL EQU SDFBUF2+BUFSDFT SDF I/O FCT AND BUFFER LENGTH . . EQUIPMENT TYPE PROPERTY TABLE . EPTNAME EQUF 0 NAME OF EQUIPMENT TYPE EPTPROP EQUF 0,,T3 EQUIPMENT TYPE PROPERTY BITS . . EQUIPMENT TYPE PROPERTY BITS . EPMASS EQUF 1 MASS STORAGE EQUIPMENT EPTAPE EQUF 2 TAPE EQUIPMENT EPWAD EQUF 4 WORD-ADDRESSABLE FILE MODE EPCOMM EQUF 010 COMMUNICATIONS LINE TERMINAL EP9TRK EQUF 020 NINE-TRACK TAPE EQUIPMENT EPMSA EQUF 040 CONNECTED VIA MSA . . COMMUNICATIONS LINE TABLE . LTFN EQUF 0 INTERNAL FILE NAME LTOSTAT EQUF 2,,S1 OUTPUT STATUS LTQWI EQUF 2,,S2 QUARTER WORD COMPLETION INDICATOR LTOUSG EQUF 2,,S3 OUTPUT USAGE LTOCRTN EQUF 2,,H2 OUTPUT COMPLETION ROUTINE LTOCOUNT EQUF 3,,H1 OUTPUT CHARACTER COUNT LTOBUF EQUF 3,,H2 OUTPUT BUFFER LTOFCNT EQUF 5,,H1 OUTPUT FINAL COUNT LTOBTIM EQUF 5,,H2 OUTPUT BUFFER TIME LTISTAT EQUF 6,,S1 INPUT STATUS LTIEND EQUF 6,,S2 END OF INPUT ACTION LTIUSG EQUF 6,,S3 INPUT USAGE LTICRTN EQUF 6,,H2 INPUT COMPLETION ROUTINE LTICOUNT EQUF 7,,H1 INPUT CHARACTER COUNT LTIBUF EQUF 7,,H2 INPUT BUFFER ADDRESS LTIFCNT EQUF 9,,H1 INPUT FINAL COUNT LTIBTIM EQUF 9,,H2 INPUT BUFFER TIME LTDSTAT EQUF 10,,S1 DIAL STATUS LTDUSG EQUF 10,,S3 DIAL USAGE LTDCRTN EQUF 10,,H2 DIAL COMPLETION ROUTINE LTDCOUNT EQUF 11,,H1 DIAL CHARACTER COUNT LTDBUF EQUF 11,,H2 DIAL BUFFER ADDRESS . . LINE TABLE EXTENSION FOR INTERCHANGE PROCESSING . LTSYNC EQUF 12,,Q1 SYNC CHARACTER FOR LINE (0=ASYNC) LTSCN EQUF 12,,Q2 NEXT SUBCHANNEL FOR LINE LTQWM EQUF 12,,S4 QUARTER WORD MODE FLAG LTBITPC EQUF 12,,S5 BITS PER CHARACTER LTCLOSE EQUF 12,,S6 LINE TERMINATION FLAG LTCMSK EQUF 13,,Q1 CHARACTER MASK (LTBITPC 1 BITS) LTBLW EQUF 13,,Q2 COMMUNICATIONS BUFFER LENGTH LTTIME EQUF 13,,Q3 OUTPUT TIMER FOR THIS LINE . EQUF 13,,Q4 *FREE* LTINAME EQUF 14 INPUT ACTIVITY NAME LTONAME EQUF 15 OUTPUT ACTIVITY NAME LTOPTMX EQUF 16 LARGEST WORD WORTH OPTIMISING LTSCQ EQUF 17 SUBCHANNEL QUEUE LTOQ EQUF LTSCQ+QL OUTPUT BUFFER QUEUE LTOAQ EQUF LTOQ+QL OUTPUT AVAILABLE QUEUE LTL EQU LTOAQ+QL LENGTH OF LINE TABLE . . SUBCHANNEL CONTROL TABLE . STQ EQUF 0 LINK WORDS STSCN EQUF QL,,Q1 SUBCHANNEL NUMBER STTIME EQUF QL,,Q2 TIMER VALUE STIALT EQUF QL,,S4 INPUT ALTERNATION BIT STOALT EQUF QL,,S5 OUTPUT ALTERNATION BIT STBITL EQUF QL,,S6 BITS ACCRUED IN INPUT WORD STLT EQUF QL+1,,H1 LINE TABLE BACKPOINTER STRETRANS EQUF QL+1,,H2 LAST TEXT MESSAGE SENT . ZERO IF MESSAGE ACKNOWLEDGED STIB EQUF QL+2,,H1 CURRENT INPUT BUFFER STIBP EQUF QL+2,,H2 INPUT BUFFER POINTER STIWA EQUF QL+3 INPUT WORD ACCUMULATOR STIRTN EQUF QL+4,,H1 GETCHAR RETURN ADDRESS STORTNP EQUF QL+4,,H2 OUTWORD RETURN ADDRESS STOWA EQUF 5 OUTPUT WORD ACCUMULATOR STBITLO EQUF QL+6,,S1 BITS LEFT IN OUTPUT WORD STOPTWF EQUF QL+6,,S2 CURRENT OUTPUT WORD BEING OPTIMISED . EQUF QL+6,,S3 *FREE* STOCRTNP EQUF QL+6,,H2 OUTCHAR RETURN POINT STOWLB EQUF QL+7,,H1 WORDS LEFT IN BUFFER STCDB EQUF QL+7,,H2 COMMAND BUFFER FOR INTERCHANGE STOB EQUF QL+8,,H1 CURRENT OUTPUT BUFFER STOBP EQUF QL+8,,H2 OUTPUT BUFFER POINTER STFCT EQUF QL+9,,H1 I/O FCT FOR INPUT/OUTPUT FILE STDMFCT EQUF QL+9,,H2 DRIVE FCT FOR FILE OUTPUT . (ZERO FOR FILE SOURCE INTERCHANGE) STOSUPP EQUF QL+10 SUPPRESSION SAVE STILEN EQUF QL+12 LENGTH OF INPUT BLOCK STMSAD EQUF QL+13 ADDRESS OF LAST BLOCK SENT STL EQU QL+14 LENGTH OF SUBCHANNEL TABLE . . INTERCHANGE TRANSACTION QUEUE ITEM . ITQ EQUF 0 LINK WORDS ITTYPE EQUF QL,,S1 TYPE OF TRANSACTION ITRELF EQUF QL,,S2 RELEASE ON CHANNEL RESUME FLAG . EQUF QL,,S3 *FREE* ITLT EQUF QL,,H2 LINE TABLE POINTER ITST EQUF QL+1,,H1 SUBCHANNEL TABLE POINTER . EQUF QL+1,,H2 *FREE* ITTEXT EQUF QL+2 TEXT START ADDRESS . . TRANSACTION QUEUE ITEM TYPES . ITYIN EQU 1 INPUT COMPLETION ITYTIME EQU 2 TIMEOUT ON OUTPUT ITYSTOUT EQU 3 START INTERCHANGE OUTPUT . . INTERCHANGE PREFIX BLOCK . IPBH EQUF 0 '*INTR*' IPBFL EQUF 1 FANG LEVEL (FIELDATA) IPBSITE EQUF 2 SITEID SENDING IPBQUAL EQUF 3 QUALIFIER OF FILE BEING SENT IPBFNAME EQUF 5 FILE NAME BEING SENT IPBEQTW EQUF 7 EQUIPMENT TYPE, F-CYCLE, ETC. IPBPROP EQUF 8,,H1 FILE PROPERTIES IPBIOOP EQUF 8,,S4 I/O OPTIONS ON FILE IPBL EQU 9 LENGTH OF PREFIX BLOCK . . INTERCHANGE BUFFER LENGTH PARAMETERS . ICHTXTL EQU 80 TEXT LENGTH IN CHARACTERS ICHPREL EQU 4 PREAMBLE: SOH <SBC> <TYP> STX ICHPOST EQU 1 POSTAMBLE: EOT ICHNSYN EQU 4 NUMBER OF SYNCS TO SEND . STRUCTURES* PROC 0,0 DEFINE DATA STRUCTURES END . . MASTER DEFINITION PROC, INVOKES CONFIG AND STRUCTURES . FANG* PROC 0 insert* delete CONFIG . DEFINE CONFIGURATION PARAMETERS SCHDEF . DEFINE SCHEDULER DATA STRUCTURES STRUCTURES . DEFINE DATA STRUCTURES . litc equ 1 set literal counter for reentrant code $(LITC) LIT ctl$bnk*(0) equ litc define counter for packets END . . . PROC to define names of PROC processing routines . P PROC *0 PROCROUTINES* NAME 0 XPTNL* EQUF PRCTB1,,H1 LOOK UP BY SEQUENCE NUMBER RPFXPT* EQUF PRCTB1,,H2 READ PROC TABLE WPFXPT* EQUF PRCTB2,,H1 WRITE PROC TABLE XPTID* EQUF PRCTB2,,H2 PROC ITEM DELETE XPTIS* EQUF PRCTB3,,H1 ITEM SEARCH XPTIA* EQUF PRCTB3,,H2 PROC ITEM ADD END . P PROC 1,2 JDEM* NAME 0 JNDEM* NAME 1 DO P(0,0)=0 , TZ DEMAND DO P(0,0)=1 , TNZ DEMAND J P(1,1),P(1,2) END . P PROC *1 BGET* NAME 0 DO P(1)>0 , LA,U A0,P(1,1) LMJ X11,BGET END . P PROC *1 BRELP* NAME 0 DO (P(1)>0)**(1-((P(1)=1)**(P(1,1)=12))) , LA 12,P(1,1),P(1,2),P(1,3) LMJ X11,BREL END . P PROC 0,1 BRELC* NAME 0 LMJ X11,BRELC END . P PROC *1 BGETL* NAME 0 DO P(1)>0 , LA,14 12,P(1,1) LMJ 5,BGETL END . P PROC *0 BRELA* NAME 0 LMJ 5,BRELA END . P PROC *1 BRELR* NAME 0 DO (P(1)>0)**(1-((P(1)=1)**(P(1,1)=12))) , LA 12,P(1,1),P(1,2),P(1,3) LMJ 5,BRELR END . . FAST SCANNER PROCS . P PROC *1 SCAN* NAME 0 LA,U A0,P(1,1) LOAD IMAGE ADDRESS LR,U R1,P(1,2)-1 LOAD IMAGE LENGTH - 1 LMJ X11,SCAN1 SET UP SCANNER END . P PROC 0,1 STCHR* NAME 0 EX STCHR,*X6 END . P PROC 1,1 CTS* NAME 0 SZ,13 P(1,1),P(1,2) END . P PROC 1,1 snonz* name 0 I$ 4,P(0,1)++P(1,3),15,P(1,2),2*P(1,*2)+P(1,*1),P(1,1) END . . P PROC 1 JOL* NAME 0 JNOL* NAME 1 L EQU P(1,1) K EQU +((L='C')*6)+((L='I')*3)+((L='O')*5) DO 1-(K=0) , DO P(0,0) , TN,K PARTBL DO 1-(K=0) , DO 1-P(0,0) , TP,K PARTBL DO K=0 , L,12-((L-2)/6) 12,PARTBL DO (K=0)*(L='Z')*P(0,0) , JNB 12,P(1,2),P(1,3) DO (K=0)*(L='Z')*(1-P(0,0)) , JB 12,P(1,2),P(1,3) DO (K=0)*(L<'Z')*P(0,0) , TOP,14 12,1*/('Z'-L-6*(('Z'-L)/6)) DO (K=0)*(L<'Z')*(1-P(0,0)) , ; TEP,14 12,1*/('Z'-L-6*(('Z'-L)/6)) DO L<'Z' , J P(1,2),P(1,3) END . P PROC 1,2 JE* NAME 0 JNE* NAME 1 DO P(0,0) , TE,14 P(1,1),P(1,2) DO 1-P(0,0) , TNE,14 P(1,1),P(1,2) J P(1,3),P(1,4) END . P PROC 1 JNNUM* NAME +'09'+1 JNUM* NAME *+'09'+1 JNA* NAME +'AZ'+1 JA* NAME *+'AZ'+1 TG,14 P(1,1),+(P(0,0))/64 TG,14 P(1,1),+(P(0,0))**077 DO P(0,*0) , J $+2 J P(1,2),P(1,3) END . . PROC TO GENERATE JUMPS BASED UPON CHARACTER CLASS . . JCL,<REG1>,<REG2> <TABLE> <CLASS>,<ADDRESS>,<X> ... . . <REG1> IS THE X REGISTER CONTAINING THE CHARACTER. A0 IS . ASSUMED IF OMITTED. . . <REG2> IS AN X REGISTER USED TO LOAD THE CHARACTER CLASS. . X11 IS ASSUMED IF OMITTED. . . <CLASS> IS THE NUMERIC CLASS FOR THIS JUMP ADDRESS. . . <TABLE> IS THE CHARACTER CLASS TABLE TO BE USED. THIS . MAY BE AN EQUF. . . <ADDRESS> IS THE JUMP ADDRESS FOR THIS CLASS. . . <X> IS THE OPTIONAL JUMP ADDRESS FOR THE ADDRESS. . . UNSPECIFIED CLASSES WILL GENERATE: . . J CL$UNDF(0),CL$UNDF(1) . . WHERE CL$UNDF(0) AND CL$UNDF(1) MAY BE DEFINED BY THE PROGRAMMER . IN THE ROUTINE USING THE JCL PROC. . P PROC *2047 JCL* NAME 0 A1 EQU 12*(P(0)<2)+P(0,1) A2 EQU 11*(P(0)<3)+P(0,2) L A2,P(1,1),A1 J $+1,A2 . FIND LARGEST CLASS SPECIFIED Y(0) EQU 0 JPB* PROC *0 DO P(I+1,1)>Y(0) ,Y*(0) EQU P(I+1,1) YA*(P(I+1,1),1) EQU P(I+1,2) YA*(P(I+1,1),2) EQU P(I+1,3) END JPJ* PROC *0 DO YA(I-1)>0 , J YA(I-1,1),YA(I-1,2) DO YA(I-1)=0 , J CL$UNDF(0),CL$UNDF(1) END I DO P-2 , JPB I DO Y(0)+1 , JPJ END . P PROC *1 DO TYPE AND READ TREAD* NAME 0 ATREAD* NAME 1 SNZ TYPOUTST FLAG TYPE AND READ OUTSTANDING DO P(0,0)=0 , TREAD$P P(1,1),P(1,2) DO P(0,0)=1 , ATREAD$P P(1,1),P(1,2) SZ TYPOUTST MARK NO TYPE AND READ OUTSTANDING END . . P PROC *0 R$DIT* NAME 0 LMJ A1,RDIT$ END . P PROC *1 R$PRTX* NAME 0 DO P(1)>0 , LA,14 12,P(1,1) LMJ 13,RPRTX$ END . P PROC *0 R$DITX* NAME 0 LMJ 13,RDITX$ END . P PROC *1 R$PRT* NAME 0 DO P(1)>0 , LA,14 12,P(1,1) LMJ 11,RPRT$ END . P PROC *0 R$DITA* NAME 0 LMJ 13,RDITA$ END . P PROC *1 R$PRTXA* NAME 0 DO P(1)>0 , LA,14 12,P(1,1) LMJ 13,RPRTXA$ END . P PROC *0 R$DITXA* NAME 0 LMJ 13,RDITXA$ END . P PROC *1 R$PRTA* NAME 0 DO P(1)>0 , LA,14 12,P(1,1) LMJ X11,RPRTA$ END . p proc *0 generate processor interface routine cal rfti* name 'RFTI' rpfet* name 'RPFET' rpfapt* name 'RPFAPT' rpfcpt* name 'RPFCPT' rpffpt* name 'RPFFPT' rpfept* name 'RPFEPT' etis* name 'ETIS' aptis* name 'APTIS' cptis* name 'CPTIS' fptis* name 'FPTIS' eptis* name 'EPTIS' etid* name 'ETID' aptid* name 'APTID' cptid* name 'CPTID' fptid* name 'FPTID' eptid* name 'EPTID' etnl* name 'ETNL' aptnl* name 'APTNL' cptnl* name 'CPTNL' fptnl* name 'FPTNL' eptnl* name 'EPTNL' etia* name 'ETIA' aptia* name 'APTIA' cptia* name 'CPTIA' fptia* name 'FPTIA' eptia* name 'EPTIA' ptewt* name 'PTEWT' ptatwt* name 'PTATWT' ptctwt* name 'PTCTWT' ptftwt* name 'PTFTWT' ptetwt* name 'PTETWT' wpfet* name 'WPFET' wpfapt* name 'WPFAPT' wpfcpt* name 'WPFCPT' wpffpt* name 'WPFFPT' wpfept* name 'WPFEPT' wfti* name 'WFTI' sdfio* name 'SDFIO' sdfioa* name 'SDFIOA' sdfi* name 'SDFI' sdfic* name 'SDFIC' sdfoo* name 'SDFOO' sdfo* name 'SDFO' sdfoc* name 'SDFOC' ascfd* name 'ASCFD' fdasc* name 'FDASC' if pircb using PIRCB$ ? if u1110 dual psr machine ? lmj x11,B[p(0,0)]$-1 link to utility-based bank else lxi,u x11,pircb$ load bank descriptor index lij x11,B[p(0,0)]$ enter bank to service request endf else lmj x11,[p(0,0)]$ call as subroutine endf end . . . This PROC generates a calling sequence for the proper BSP routine . for processing procedure table entries of a given type. Assuming . the element type being processed has been loaded in a register . <reg>, the statement: . . PIRCALL <generic name>,<reg> . . will generate the proper calling sequence to the specific routine. . <generic name> is the BSP entry point shorn of the leading B for . bank and the trailing dollar sign, with the 'A', 'C', or 'F' . which indicates the Assembler, COBOL, or FORTRAN procedure table . changed into an 'X'. (For example, the generic of RFPAPT, RPFCPT, . and RPFFPT is RPFXPT. . p proc *1 pircall* name 0 if pircb**(u1110=0) lx x11,p(1,1),p(1,2) load proper entry tag lxi,u x11,pircb$ load BDI to invoke bank lij x11,,x11 enter the service bank else lx x11,p(1,1),p(1,2) load the routine address lmj x11,,x11 call the proper routine endf end . . P PROC 1,2 DSZ* NAME 0 SZ P(1,1),P(1,2) SZ P(1,1)+1,P(1,2) END . P PROC 0 IERR* NAME 0 SLJ IERR END . P PROC 0,1 COMPLETE* NAME 0 LMJ 9,COMPLETE END . P PROC 0,1 ZAP* NAME 0 SZ CDBACT,X8 MARK OPERATION FAILED END . P PROC *1 JTAPE* NAME 1 JNTAPE* NAME 2 TE,U P(1,1),TSINGLE TNE,U P(1,1),TMULTI DO P(0,0)=2 , J $+2 J P(1,2),P(1,3) END . P PROC 1,2 JTERM* NAME 0 TZ CDCEASE,X8 IS CEASE FLAG SET ? J P(1,1),P(1,2) YES. GO TO TERMINATE ROUTINE END . P PROC 1 PURE* NAME 1 IMPURE* NAME 2 A(0) EQU 1*(P(1,1)=CODE) A(0) EQU 2*(P(1,1)=DATA) $(p(0,0)). Set for reentrant code END . P PROC 2 HEADING* NAME 0 HD* PROC 0 E$COL P(2,I). TAB TO PROPER COLUMN E$MSGR . COPY TEXT FROM SOURCE LINE END E$MSG P(1,1). SET UP MESSAGE I DO P(2) , HD DO P(1)>1 , R$PRT P(1,2). PRINT THE MESSAGE END . . CHANGE PSR BITS FOR THIRD / QUARTER WORD ADDRESSING . P PROC 0 thirdword* name 0 quarterword* name 1 lpd (0140*(u1110=0))+(010*p(0,0)) Set PSR designators END