IMD 1.17: 11/11/2014 12:51:22 82VKXBVERDOS B* VERSADOS/RMS68K OBJECT 4.3 SN=39358 (EQUATES) 6 OF 11  BT0682VKXBVERDOS 0420¿-*…THIS�EQUATE�TABLE�CONTAINS�ALL�INFORMATION�PERTAINING�TO�THE?*ƒGPIB�I/O�DRIVER�FOR�THE�VERSADOS�4.0�AND�ABOVE�I/O�SCHEME.�IT>*ƒCONTAINS�INTERNAL�HARDWARE�EQUATES,�CCB�STORAGE�ALLOCATIONS,>*ƒAND�ENTRIES�SPECIFIC�TO�THE�OPERATION�AND�MAINTENANCE�OF�THE*ƒIEEE-488�BUS.*E********************************************************************* *žHISTORYž*E**********************************************************************(*…24�JAN�83…STEVE�FEITELSON/CHRIS�MARRINC*ƒINITIAL�EQUATE�FILE.�EQUATES�ARE�BROKEN�OUT�FROM�THE�MAIN�SOURCE.@*ƒALL�GENERAL�SYSTEM�EQUATES�FOR�THE�DRIVER�DEFINED�THUS�FAR�ARE *ƒPRESENT.* PAGEE**********************************************************************E**********************************************************************@*‚THE�FOLLOWING�DEFINES�THE�QUEUING�STRUCTURE�AND�THE�ASSOCIATED;*‚POINTERS�FOR�HANDLING�COMMAND�FLOW�FOR�THIS�CHANNEL.�ONLYB*‚ONE�QUEUE�ENTRY�PER�DEVICE�CONNECTED�TO�THIS�CHANNEL�IS�ALLOWED.?*‚THEREFORE�THE�MAXIMUM�NUMBER�OF�QUEUED�ENTRIES�IS�15�(ONE�FORD*‚EACH�DEVICE).�THE�QHEAD�POINTER�IS�A�POINTER�TO�THE�NEXT�AVAILABLE<*‚QUEUE�ENTRY�LOCATION�AND�QTAIL�IS�A�POINTER�TO�THE�CURRENT*‚OPERATION�BEING�EXECUTED.*%*ˆEACH�ENTRY�CONSISTS�OF�SEVEN�ITEMS:**Œ(1)�COMMAND�STATUS*Œ(2)�DCB�POINTER*Œ(3)�IOSPB�POINTER%*Œ(4)�PRIMARY�BUFFER�PHYSICAL�ADDRESS5*Œ(5)�SECONDARY/CONFIGURATION�BUFFER‚PHYSICAL�ADDRESS*Œ(6)�PRIMARY�BUFFER�LENGTH*Œ(7)�SECONDARY�BUFFER�LENGTH*3*ˆIF�QTAIL�AND�QHEAD�ARE�EQUAL,�THE�QUEUE�IS�EMPTY.*E********************************************************************* * *‚OFFSETS�WITHIN�A�'GPIBQ'�ENTRY* OFFSET 06CSTQOFST�DS.W�1‡FIRST‚ENTRY�IS�COMMAND�STATUS�OF�ENTRY+DCBQOFST�DS.L�1‡SECOND�ENTRY�IS�DCB�POINTER,IPBQOFST�DS.L�1‡THIRD‚ENTRY�IS�IOSPB�POINTER7(20>8=@<HGP:X9`4h/p1xL€" ***************************************************************3*ˆTHE�FOLLOWING�ARE�EQUATES�THAT�BREAK�DOWN�SOME�OF9*„THE�CONFIGURATION�PARAMETERS�INTO�THEIR�INDIVIDUAL�BYTE*„OR�WORD�MEANINGS.*@**************************************************************** *@*‚BREAKDOWN�EQUATES�OF�'IOSEORR'�-�END�OF�RECORD�CHARACTERISTICS*'WEORFMT�EQU�IOSEORR„WRITE�EOR�FORMATTED%WEORIMG�EQU�IOSEORR+1‚WRITE�EOR�IMAGE(REORFMT�EQU�IOSEORR+2‚READ�EOR�FORMATTED$REORIMG�EQU�IOSEORR+3‚READ�EOR�IMAGE*;*‚BREADOWN�EQUATES�FOR�'IOSEOSC'�-�END�OF�STRING�CHARACTERS*,IOSEOSW�EQU�IOSEOSC„END�OF�STRING�WRITE�CHAR-IOSEOSR�EQU�IOSEOSC+1‚END�OF�STRING�READ�CHAR*5*‚BREAKDOWN�EQUATES�FOR�FIXED�TRANSFER�LENGTH�-�WRITE*2IOSFBWF�EQU�IOSFBWX„FIXED�LENGTH�WRITE�-�FORMATTED0IOSFBWI�EQU�IOSFBWX+2‚FIXED�LENGTH�WRITE�-�IMAGE*4*‚BREAKDOWN�EQUATES�FOR�FIXED�TRANSFER�LENGTH�-�READ*1IOSFBRF�EQU�IOSFBRX„FIXED�LENGTH�READ�-�FORMATTED/IOSFBRI�EQU�IOSFBRX+2‚FIXED�LENGTH�READ�-�IMAGE 2MAXDEVNM�EQU�14‚MAXIMUM�DEVICE�NUMBER�ON�A�CHANNEL‰PAGEF************************************************************************”MVME-300�REGISTER�DEFINITION*F***********************************************************************H*‚THE�FOLLOWING�ARE�THE�RELATIVE�OFFSETS�OF�THE�32�WORD�GPIBC�REGISTERS.B*‚THE�EQUATES�ARE�SET�UP�SUCH�THAT�THEY�ACCESS�THE�ODD�BYTE�OF�THE*‚THE�WORD�OFFSET.*#MARLSBƒEQU�1ˆLSB�OF�MEMORY�ADDR�REG&MARISBƒEQU�3ˆINTERMEDIATE�MEM�ADDR�REGMARMSBƒEQU�5ˆMSB�MEM�ADDR�REG)BCNTLSB‚EQU�7ˆDMA�TRANSFER�BYTE�COUNT�LSB)BCNTMSB‚EQU�9ˆDMA�TRANSFER�BYTE�COUNT�MSB%GPIBRSET�EQU�11‡RESET�GPIBC�INTERFACE!ADDRMOD‚EQU�13‡ADDR�MODE�REGISTER)CNTRSTAT�EQU�15‡INTERFACE�STATUS�REGISTER*#RELCNTƒEQU�17‡BUS�RELEASE�COUNT�REG!EOSCOMP‚EQU�19‡EOS�COMP�CHARACTER&UNICMDƒEQU�21‡UNILINE�COMMAND�REGISTERFIFODAT‚EQU�23‡FIFO�DATA�REG* INTR0„EQU�33‡TMS9914A�INTR�REG�0 INTR1„EQU�35‡TMS9914A�INTR�REG�1ADDRSTAT�EQU�37‡ADDR�STATUS�REG$BUSSTAT‚EQU�39‡BUS�STATUS�REG�(READ)+AUXCMDƒEQU�39‡AUXILIARY�COMMAND�REG�(WRITE)ADDRREG‚EQU�41‡ADDR�SWITCH�REGSERLPOLL�EQU�43‡SERIAL�POLL�REG,CMDPTHRU�EQU�45‡COMMAND�PASS�THRU�REG�(READ))PARLPOLL�EQU�45‡PARALLEL�POLL�REG�(WRITE)DATAIOƒEQU�47‡DATA�I/O�REG*-CONTREG0�EQU�49‡VBIM�CONTROL�REG�0�(TMS9914A)1CONTREG1�EQU�51‡VBIM�CONTROL�REG�1�(I/O�COMPLETE).CONTREG2�EQU�53‡VBIM�CONTROL�REG�2�(BUS�ERROR)-CONTREG3�EQU�55‡VBIM�CONTROL�REG�3�(NOT�USED)VECTREG0�EQU�57‡INTR�VECTOR�1VECTREG1�EQU�59‡INTR�VECTOR�2VECTREG2�EQU�61‡INTR�VECTOR�3VECTREG3�EQU�63‡INTR�VECTOR�4 PAGE*5*„EQUATES�FOR�THE�MVME-300�STATUS�'CNTRSTAT'�REGISTER*FIEMP�EQU�0ŒFIFO�EMPTY8EODONE�EQU�1‹EOI/EOS�HAS�BEEN�DETECTED�UPON�I/O�COMPLETEFIFUL�EQU�2ŒFIFO�FULL$BCRDN�EQU�3ŒBYTE�COUNT�REGISTER�DONE%GPIBFAIL�EQU�4‰GPIB�FAILURE�LED�IS�ON&BUSDMAER�EQU�5‰GPIB�DMA�ERROR�OCCURRED*<*„EQUATES�FOR�THE�MVME-300�UNILINE�'UNICMD'�COMMAND�REGISTER*"DMAWRITE�EQU�0ŠDMA�WRITE�OPERATIONEOSBITƒEQU�1ŠEOS�BIT�ENABLE DMAREAD‚EQU�2ŠDMA�READ�OPERATIONEOIBITƒEQU�3ŠEOI�BIT�ENABLE)FAILONƒEQU�4ŠLITE�FAIL�LED�ON�FRONT�PANEL$RSTDMAƒEQU�5ŠHALT�DMA�IF�IN�PROGRESS*2*‚BIT�EQUATES�FOR�THE�TMS-9914�'ADDRSTAT'�REGISTER*#TADS_B�EQU�1‡TALKER�ADDRESSED�STATE%LADS_B�EQU�2‡LISTENER�ADDRESSED�STATE6TPAS_B�EQU�3‡TALKER�PRIMARY�ADDRESSED�STATE�(SEC�ADDR)8LPAS_B�EQU�4‡LISTENER�PRIMARY�ADDRESSED�STATE�(SEC�ADDR)ATN_B‚EQU�5‡ATTENTION�LINE LLO_B‚EQU�6‡LOCAL�LOCKOUT�STATEREM_B‚EQU�7‡REMOTE�STATE**‚EQUATES�WITHIN�'BUSSTAT'*BUSREN�EQU�0‡REMOTE�ENABLE�LINE!BUSIFC�EQU�1‡INTERFACE�CLEAR�LINE!BUSSRQ�EQU�2‡SERVICE�REQUEST�LINE!BUSEOI�EQU�3‡END�OR�IDENTIFY�LINE%BUSNRFD�EQU�4†NOT�READY�FOR�DATA�LINE$BUSNDAC�EQU�5†NOT�DATA�ACCEPTED�LINEBUSDAV�EQU�6‡DATA�VALID�LINEBUSATN�EQU�7‡ATTENTION�LINE PAGE*!*†TMS9914A�INTERRUPT�MASK�EQUATES@*†THESE�BITS�CORRESPOND�TO�`INTR0'�AND�'INTR1'�TMS9914�REGISTERS*-INT0BIT�EQU�15ƒINTERRRUPT�MASK�REGISTER�0�BIT-INT1BIT�EQU�14ƒINTERRRUPT�MASK�REGISTER�1�BIT"BIBITƒEQU�13ƒBYTE�IN�INTERRUPT�BITBOBITƒEQU�12ƒBYTE�OUT�BITENDBIT‚EQU�11ƒEND�BIT+SPASBIT�EQU�10ƒSERIAL�POLL�ACTIVE�STATE�BIT$RLCBIT‚EQU�9„REMOTE/LOCAL�CHANGE�BIT"MACBIT‚EQU�8„MY�ADDRESS�CHANGE�BIT"GETBIT‚EQU�7„GROUP�EXECUTE�TRIGGERERRBIT‚EQU�6„ERROR�BIT+UCGBIT‚EQU�5„UNRECOGNIZED�COMMAND�GROUP�BIT"APTBIT‚EQU�4„ADDRESS�PASS�THRU�BIT+DCASBIT�EQU�3„DEVICE�CLEAR�ACTIVE�STATE�BITMABITƒEQU�2„MY�ADDRESS�BIT SRQBIT‚EQU�1„SERVICE�REQUEST�BIT IFCBIT‚EQU�0„INTERFACE�CLEAR�BIT *5*‚EQUATES�FOR�'CONTREG0�-�CONTREG4'�INTERRUPT�ENABLES*)VBIMENAB�EQU�4�ENABLE�BIT�FOR�EACH�VECTOR*3TMSINT�EQU�VBIMENAB+24…ENABLE�BIT�FOR�TMS9914A�INTR7IOCINT�EQU�VBIMENAB+16…ENABLE�BIT�FOR�I/O�COMPLETE�INTR5BUSERINT�EQU�VBIMENAB+8„ENABLE�BIT�FOR�BUS�ERROR�INTR %CR�EQU�$0DƒCARRIAGE�RETURN�TERMINATORLF�EQU�$0AƒLINE�FEED�TERMINATOR,MAXFIFO�EQU�1024‚MAXIMUM�SIZE�OF�FIFO�BUFFER  PAGE*+*ˆGPIB�ASYNCHRONOUS�INTERRUPT�EVENT�MESSAGE* ‰OFFSET�0AILEN„DS.B†1‰EVENT�LENGTHAIEC…DS.B†1‰EVENT�CODEAIDVIDƒDS.L†1‰DEVICE�I.D.&AIEVTYP‚DS.B†1‰ASYNCHRONOUS�EVENT�TYPE)AIEVSTAT�DS.B†1‰ASYNCHRONOUS�EVENT�STATUSAILNG„EQU‡*‰EVENT�LENGTH* *‚EVENT�CODES*!IOEVCD�EQU�1ƒNORMAL�EVENTS�TO�IOS,AIEVCD�EQU�9ƒASYNCHRONOUS�EVENT�CODE�TO�TASK*+*‚ASYNCHRONOUS�INTERRUPT�EVENT�TYPE�EQUATES**SRQTYPE�EQU�$01‚SERVICE�REQUESTDCLTYPE�EQU�$02‚DEVICE�CLEAR#RLCTYPE�EQU�$03‚REMOTE/LOCAL�CHANGETCTTYPE�EQU�$04‚TAKE�CONTROL%GETTYPE�EQU�$05‚GROUP�EXECUTE�TRIGGERIFCTYPE�EQU�$06‚INTERFACE�CLEAR'IOPTYPE�EQU�$07‚INTRP�LEVEL�I/O�PENDING* PAGE*;*‚GPIB�CODE/FUNCTION�EQUATES�FOR�ALL�LEVEL�40�GPIB�COMMANDS*%IOCODO�EQU�$4010…COMMAND�OUT/DATA�OUT$IOCODI�EQU�$4011…COMMAND�OUT/DATA�INIOCMDO�EQU�$4012…COMMAND�OUTIORSEC�EQU�$4020…READ�SECONDARY IOWSEC�EQU�$4021…WRITE�SECONDARY)IOPPU‚EQU�$4030…PARALLEL�POLL�UNCONFIGURE'IOPPC‚EQU�$4031…PARALLEL�POLL�CONFIGURE&IOPPOL�EQU�$4032…CONDUCT�PARALLEL�POLL)IOSPPS�EQU�$4033…SET�PARALLEL�POLL�STATUS'IOSSPS�EQU�$4034…SET�SERIAL�POLL�STATUS$IOSPOL�EQU�$4035…CONDUCT�SERIAL�POLL%IOPPD‚EQU�$4036…PARALLEL�POLL�DISABLE IOSIFC�EQU�$4040…INTERFACE�CLEARIOSREN�EQU�$4041…REMOTE�ENABLEIOCREN�EQU�$4042…REMOTE�DISABLE"IOSDCL�EQU�$4044…CLEAR�ALL�DEVICES,IOSSDC�EQU�$4045…CLEAR�ALL�LISTENING�DEVICESIOSLLO�EQU�$4046…LOCAL�LOCKOUTIOPCTL�EQU�$4047…PASS�CONTROL&IOSGTL�EQU�$4048…LISTENERS�GO�TO�LOCAL"IOSGET�EQU�$4049…LISTENERS�TRIGGER+IOABT1�EQU�$404A…INTERFACE�AND�DEVICE�CLEAR$IOABT2�EQU�$404B…UNTALK�AND�UNLISTENIOTCTL�EQU�$404C…TAKE�CONTROL IORQCL�EQU�$404D…REQUEST�CONTROL IORLCL�EQU�$404E…RELEASE�CONTROLIOGTS‚EQU�$404F…GO�TO�STANDBY'IODSDC�EQU�$4050…SPECIFIED�CLEAR�DEVICE(IODREM�EQU�$4051…SPECIFIED�REMOTE�DEVICE)IODGET�EQU�$4052…SPECIFIED�TRIGGER�DEVICE&IODGTL�EQU�$4053…SPECIFIED�GO�TO�LOCAL, TTL GPIB DRIVER - GPIB EQUATES (MENU ITEMS)‰PAGEA******************************************************************"*ŒGPIBC�MENU�ITEM�FUNCTION�EQUATES*/*†THESE�EQUATES�ARE�USED�TO�INDEX�INTO�THE�MENU6*†ROUTINE�PROCESSOR�TABLE�(MENUCTBL).�AT�THAT�INDEX�IN3*†THE�TABLE�IS�THE�ADDRESS�OF�THE�ROUTINE�THAT�WILL0*†PERFORM�THE�FUNCTION�OR�SET�OF�FUNCTIONS.�NOTE-*†THAT�THESE�EQUATES�ARE�NOT�THE�VALUE�OF�THE*†ACTUAL�GPIBC�COMMANDS*A******************************************************************7*ˆCLASS�I�MENU�ITEMS:‚GENERATE�INTERRUPTS�WHEN�EXECUTED*2END�EQU�0ŠEND�OF�MENU�CODE�(SPECIAL�CASE�FUNCTION) UNT�EQU�1ŠUNTALK�CODEUNL�EQU�2ŠUNLISTEN�CODE LAG�EQU�3ŠPRIMARY�LISTEN�ADDRESSOTA�EQU�4ŠPRIMARY�TALK�ADDRESSOSA�EQU�5ŠSECONDARY�R/W�ADDRESS#PPU�EQU�6ŠPARALLEL�POLL�UNCONFIGURE!PPC�EQU�7ŠPARALLEL�POLL�CONFIGUREPPE�EQU�8ŠPARALLEL�POLL�ENABLEPPD�EQU�9ŠPARALLEL�POLL�DISABLESPE�EQU�10‰SERIAL�POLL�ENABLESPD�EQU�11‰SERIAL�POLL�DISABLEDCL�EQU�12‰DEVICE�CLEARLLO�EQU�13‰LOCAL�LOCKOUTTCT�EQU�14‰TAKE�CONTROL!SDC�EQU�15‰SELECTIVE�DEVICE�CLEARGTL�EQU�16‰GO�TO�LOCAL GET�EQU�17‰GROUP�EXECUTE�TRIGGER(AUX�EQU�18‰SEND�AUXILIARY�COMMAND�STRING)IN‚EQU�19‰INITIATE�DMA�WRITE�(INPUT�DATA)*OUT�EQU�20‰INITIATE�DMA�READ�(OUTPUT�DATA)6TERM�EQU�21ˆSEND�TERMINATION�CHARACTERS�(IF�NECESSARY)#SPB�EQU�22ŠRECEIVE�SERIAL�POLL�BYTE#SEOI�EQU�23ˆSEND�EOI�WITH�LAST�BYTE*;*ˆNOTE:…ALL�MENU�ITEMS�GREATER�IN�VALUE�THAN�'AUXTYPE'�WILL5*’CAUSE�THE�MENU�ITEM�FOLLOWING�TO�BE�EXECUTED�IMMED-7*’IATELY�SINCE�THESE�DO�NOT�CAUSE�A�HARDWARE�INTERRUPT.*:*ˆCLASS�II�MENU�ITEMS:�AUXILIARY�COMMANDS�TO�THE�TMS-9914A2*œ(NO�INTERRUPTS�ARE�EXPECTED�FROM�THESE�COMMANDS)*-AUXTYPE�EQU�24…GENERAL�AUXILIARY�COMMAND�CODE9*’(TMS9914A�AUXILLIARY�COMMAND�FOLLOWS�'AUXTYPE'�IN�MENU)*<*ˆCLASS�III�MENU�ITEMS:�FUNCTION�COMMANDS�-�THESE�PROCESSORS2*�EXECUTE�TO�COMPLETION�AND�GENERATE�NO�INTERRUPT.*)FSIC…EQU�25„SEND�INTERFACE�CLEAR�FUNCTION*FRPP…EQU�26„REQUEST�PARALLEL�POLL�FUNCTION.FRELCTL‚EQU�27„RELEASE�CONTROL�OF�BUS�FUNCTION+FTAKCTL‚EQU�28„TAKE�CONTROL�OF�BUS�FUNCTION.FREQCTL‚EQU�29„REQUEST�CONTROL�OF�BUS�FUNCTION.FREQSTAT�EQU�30„REQUEST�DEVICE�STATUS�FUNCTION)FCNFGDEV�EQU�31„CONFIGURE�DEVICE�FUNCTION5FCHDEFLT�EQU�32„CHANGE�DEFAULT�CONFIGURATION�FUNCTION/FSETPPƒEQU�33„SET�PARALLEL�POLL�STATUS�FUNCTION-FSETSPƒEQU�34„SET�SERIAL�POLL�STATUS�FUNCTIONFGTS…EQU�35„GO�TO�STANDBY*‰PAGE*(*ƒBIT�EQUATES�TO�TEST�VALUES�IN�VALPARTB*BVALTALK�EQU�0‚TALKER�ABILITYBVALLIST�EQU�1‚LISTENER�ABILITY BVALCTL‚EQU�2‚CONTROLLER�ABILITY(BVALSCTL�EQU�3‚SYSTEM�CONTROLLER�ABILITYBVALSRQ‚EQU�4‚SRQ�ABILITYBVALPBUF�EQU�5‚PRIMARY�BUFFERBVALSBUF�EQU�6‚SECONDARY�BUFFER#BVALCBUF�EQU�7‚CONFIGURATION�BUFFER*BVALTMOD�EQU�8‚TALKER�MODEBVALLMOD�EQU�9‚LISTENER�MODEBVALCMOD EQU 10 CONTROLLER MODE,BVALBTLM EQU 11 IF BUS THEN MUST BE T/L MODE$BVALBDEV EQU 12 BUSSABLE DEVICE ONLYBVALBUS‚EQU�13�CONTROL�BUS!BVALSADR EQU 14 SECONDARY ADDRESS BVALBCHG EQU 15 IN CHARGE OF BUS*#*ƒEQUATES�FOR�ENTRIES�IN�'VALPARTB'*6VALTALK�EQU�1<VALBDEV�EQU�1<FHSNLN�EQU�*�LENGTH�OF�PARM.�BLOCK�FOR�SHARED�SEGMENT�REQUEST‹*Ç*�FHSCMD�EQUATES�(16�BITS)¢*Ç(FHALLOƒEQU�$80�ALLOCATE�(CREATE�A�FILE)ŸFHASGNƒEQU�$40�ASSIGN�(OPEN)ª(FHCHNGƒEQU�$20�CHANGE�ACCESS�PERMISSIONŸFHRENMƒEQU�$10�RENAME±FHPROTƒEQU�$8�PROTECT±FHCLOSƒEQU�$4�CLOSE³FHDELTƒEQU�$2�DELETE²FHCKPTƒEQU�$1�CHECKPOINT®$FHRATTƒEQU�$180�RETRIEVE�ATTRIBUTES£&FHFDENƒEQU�$140�FETCH�DIRECTORY�ENTRY¡'FHFDMNƒEQU�$120�FETCH�DEVICE�MNEMONICS %FHCHLUƒEQU�$110�CHANGE�LU�ASSIGNMENT¢#FHFDV„EQU�$108�FETCH�DEFAULT�VOLUMESPLCANC EQU $280 CANCEL SPOOLERSPLCONT EQU $240 CONTINUESPLFORM EQU $220 FORMSSPLPRNT EQU $210 PRINTSPLCOPY EQU $208 COPIESSPLQUE‚EQU�$204�DISPLAY�QUEUE#FHDVOL‚EQU�$8001�SET�DEFAULT�VOLUME*Ç*ˆEQUATES�FOR�LU�ASSIGNMENTS¥*Ç!CDFLUNƒEQU…5“CMD�DEVICE/FILE�LUN�!LDFLUNƒEQU…6“LOG�DEVICE/FIEL�LUN�*Ç*�FHSOPT�EQUATES�(16�BITS)¢$*ACCESS�PERMISSION�FIELD�(BITS�0-2)¥*Ç*FAPBIT�EQU�$7�BITS�FOR�ACCESS�PERM.�FIELDŸFOPPR„EQU�0�PUBLIC�READ®FOPER„EQU�1�EXCLUSIVE�READ«FOPPW„EQU�2�PUBLIC�WRITE­FOPEW„EQU�3�EXCLUSIVE�WRITEª FOPPRPW‚EQU�4�PUBLIC�READ-WRITE¨+FOPPREW‚EQU�5�PUBLIC�READ,�EXCLUSIVE�WRITE�+FOPERPW‚EQU�6�EXCLUSIVE�READ,�PUBLIC�WRITE�#FOPEREW‚EQU�7�EXCLUSIVE�READ-WRITE¥*Ç*OVERWRITE�FIELD�(BIT�3)°FOPOVRT‚EQU�8�OVERWRITE�FILE«*Ç*TRUNCATE�FIELD�(BIT�4)±+FOPTRNƒEQU�$10�TRUNCATE�FILE�AT�CLOSE�TIMEœ*Ç%*�ALLOCATE�DATA�BUFFER�FIELD�(BIT�5)¤+FOPABF�EQU�$20�ALLOCATE�SHARED�DATA�BUFFERž*Ç*POSITION�FIELD�(BIT�6)±+FOPBEG�EQU�0�POSITION�AT�BEGINNING�OF�FILEž'FOPEND�EQU�$40�POSITION�AT�END�OF�FILE¢"*RESERVED�FIELD�(BITS�7�NOT�USED)§*Ç*FILE�TYPE�FIELD�(BITS�8-10)¬#FFTBIT�EQU�$700�BITS�FOR�FILE�TYPE¦FOPCON‚EQU�0�CONTIGUOUS°%FOPSEQƒEQU�$100�SEQUENTIAL�(FRL/VRL)¢DFOPISKƒEQU�$200�KEYED�RECORD,�INDEXED�SEQUENTIAL,�NO�DUPLICATE�KEYSƒ-FOPISDƒEQU�$300�",�",�DUPLICATE�KEYS�ALLOWEDš*;FOPADRƒEQU‡$800†RETURN�PHY.�ADR�FOR�SHARED�DATA�BUFFER�REQ.*Ç$*USER�ATTRIBUTES�FIELD�(BITS�15-12)¥*FUSBITƒEQU�$F000�BITS�FOR�USER�ATTRIBUTES�*Ç*�CHANGE�LU�OPTIONSµFOPSLUƒEQU�0�SEND�LU²FOPRLUƒEQU�1�RECEIVE�LU¯!FOPKEPƒEQU�$8000�KEEP�ASSIGNMENT¦*Ç%*SET AND FETCH DEFAULT VOLUME OPTIONS#FOPDSY�EQU�0�SYSTEM�VOLUME�DEFAULT¦FOPDTM�EQU�1�TEMPORARY²FOPDSP�EQU�2�SPOOLER´FOPDUS�EQU�3�USER·*Ç*FETCH DEVICE MNEMONICS OPTIONS(FOPFRA�EQU�4�FETCH�RANDOM�ACCES�DEVICES¡&FOPFIN�EQU�5�FETCH�INTERATCIE�DEVICES£#FOPFPR�EQU�6�FETCH�PRINTER�DEVICES¦*Ç*�FHSSTA�EQUATES�(8�BITS)£*ÇFSTAOKƒEQU�$0�NO�ERROR°*Ç#*ERROR�CODE�1�IS�RESERVED�FOR�EXEC¦*(SERVER�DOES�NOT�EXIST)°*ÇFSTAIF�EQU�$2�INVALID�COMMAND«$FSTAILU‚EQU�$3�INVALID�LOGICAL�UNIT¤FSTAVOL‚EQU�$4�VOLUME�ERROR¬#FSTADNM‚EQU�$5�DUPLICATE�FILE�NAME¥$FSTAFDƒEQU�$6�FILE�DESCRIPTOR�ERROR£!FSTAPCƒEQU�$7�PROTECT�CODE�ERROR¦"FSTARLƒEQU�$8�RECORD�LENGTH�ERROR¥#FSTASE�EQU�$9�SHARED�SEGMENT�ERROR¦+FSTADSƒEQU�$A�INSUFFICIENT�DIRECTORY�SPACEœ&FSTAAPƒEQU�$B�ACCESS�PERMISSION�ERROR¡(FSTASSƒEQU�$C�INSUFFICIENT�SYSTEM�SPACEŸ!FSTAASƒEQU�$D�INVALID�ASSIGNMENT¦"FSTADTƒEQU�$E�INVALID�DEVICE�TYPE¥FSTABO�EQU�$F�BUFFER�OVERFLOW«!FSTATNƒEQU�$10�INVALID�TASK�NAME¦'FSTAADD‚EQU�$11�IN VALID�BUFFER�ADDRESS¡!FSTAFTƒEQU�$12�INVALID�FILE�TYPE¦"FSTAIEƒEQU�$13�INTERNAL�FHS�ERROR¥+FSTAIPƒEQU�$14�INVALID�PARAM�BLOCK�ADDRESSœ'FSTADL�EQU�$15�DATA�BLOCK�LENGTH�ERROR¢FSTASZƒEQU�$16�SIZE�ERROR­'FSTANNM‚EQU�$17�NON-EXISTENT�FILE�NAME¡!FSTAEOD�EQU�$18�END�OF�DIRECTORY¨ FSTAKY�EQU�$19�KEY�LENGTH�ERROR© FSTAFL�EQU�$1A�FAB�LENGTH�ERROR©*FSTANDV EQU $1B DEFAULT VOLUME NOT DEFINED2FSTAWS‚EQU‚$1C�WRONG�STATE�FOR�SPOOL�START�COMMAND6FSTAIU‚EQU‚$1D�SPOOL�COMMANDS-INVALID�USER�#�SPECIFIED*Ç&*FETCH�DIRECTORY�ENTRY�RETURNED�INFO.£*Ç!�OFFSET�0�START�WITH�ZERO�OFFSET«FDUSN�DS.W�1�USER�NUMBER°FDCLG�DS.L�2�CATALOG´FDFIL�DS.L�2�FILE�NAME²FDEXT�DS.W�1�EXTENSION²�DS.W�1�RESERVED¸FDFS�DS.L�1�FILE�STARTING�PSN«FDFE�DS.L�1�FILE�ENDING�PSN­/FDEOF�DS.L�1�END�OF�FILE�LOGICAL�SECTOR�NUMBERš/FDEOR�DS.L�1�END�OF�FILE�LOGICAL�RECORD�NUMBERšFDWCD�DS.B�1�WRITE�ACCESS�CODEªFDRCD�DS.B�1�READ�ACCESSS�CODEªFDATT�DS.B�1�ATTRIBUTES±?FDLBZ�DS.B�1�LAST�DATA�BLOCK�SIZE�(FILE�TRUNCATED�IF�<>�FDDAT)Š7FDLRL�DS.W�1�RECORD�SIZE�(0�=>�VARIABLE�RECORD�LENGTH)’�DS.B�1�RESERVED¸%FDKEY�DS.B�1�KEY�SIZE�(0�=>�NO�KEYS)¤FDFAB�DS.B�1�FAB�SIZE³FDDAT�DS.B�1�DATA�BLOCK�SIZE¬ FDDTEC�DS.W�1�DATE�FILE�CREATED©&FDDTEA�DS.W�1�DATE�FILE�LAST�ASSIGNED£�DS.B�8�RESERVED¸$FDLEN�EQU�*�FETCH�DIR.�ENTRY�LENGTH¥*Ç'*FETCH�DEVICE�MNEMONICS�RETURNED�INFO.¢*Ç �OFFSET�0ÂFDVDEV�DS.L�1�DEVICE�MNEMONIC«FDVVOL�DS.L�1�VOLUME�ID±FDVVAL�DS.B�1�RESERVED²FDVSTS�DS.B�1�DEVICE�STATUS­*FDVLEN�EQU�*�FETCH�DEVICE�MNEOMICS�LENGTHŸ‰PAGE»*Ç *�IOS�PARAMETER�BLOCK�STRUCTURE�*Ç!‰OFFSET�0�START�WITH�ZERO�OFFSET£IOSFCTƒDS.W�1�FUNCTION°IOSOPTƒDS.W�1�OPTIONS±IOSSTAƒDS.B�1�STATUS²"IOSLUNƒDS.B�1�LOGICAL�UNIT�NUMBER¥0IOSSRVƒEQU…*“SERVICE�ADDRESS�FOR�ATTENTION�EVENT‰DS.B�1�RESERVED°.IOSPKL�DS.B�1�RESERVED�FOR�PARTIAL�KEY�LENGTH›/IOSRRN�DS.L�1�RANDOM�RECORD�NUMBER:�LRN�OR�LSNš#IOSSADƒDS.L�1�START�BUFFER�ADDRESS¤!IOSEADƒDS.L�1�END�BUFFER�ADDRESS¦!IOSLENƒDS.L�1�LENGTH�OF�TRANSFER¦!IOSCADƒDS.L�1�COMPLETION�ADDRESS¦#IOSBLNƒEQU�*�LENGTH�OF�PARAM�BLOCK¤** IOS PARAMETER BLOCK STRUCTURE$*ˆFOR�CONFIGURE�AND�STATUS�COMMANDS.*‰OFFSET�IOSRRN IOSDBPƒDS.Lƒ1ŒDATA�BLOCK�POINTERIOSCSLƒEQU„*ŒLENGTH�OF�PB *A*‚IOS�Configuration�Block�structure�for�CONFIGURE,�CHANGE�DEFAULT+*‚CONFIGURATION,�&�REQUEST�STATUS�commands.*‚Device-independent�portion:* ‰OFFSET�0IOSDSTƒDS.Bƒ1ŒDEVICE�STATUS?IOSCECƒEQU„IOSDST‡CONFIGURATION�ERROR�CODE�(returned�in�lieu�of(*§device�status�if�ISTACNF�error�status)IOSCTPƒDS.Bƒ1ŒCHANNEL�TYPEIOSDTPƒDS.Bƒ1ŒDEVICE�TYPEIOSDRCƒDS.Bƒ1ŒDRIVER�CODEIOSATMƒDS.Wƒ1ŒATTRIBUTES�MASKIOSPRMƒDS.Wƒ1ŒPARAMETERS�MASKIOSATWƒDS.Wƒ1ŒATTRIBUTES�WORDIOSRECƒDS.Wƒ1ŒRECORD�LENGTHIOSRSZƒDS.Lƒ1ŒDEVICE�SIZEIOSWTOƒDS.Lƒ1ŒWRITE�TIMEOUTIOSRTOƒDS.Lƒ1ŒREAD�TIMEOUT+IOSDDCƒEQU„*ŒDEVICE�DEPENDENT�CONFIGURATION *F*‚Bit�equates�for�IOSPRM�for�device-independent�part�of�configuration.*/IOSRECB‚EQU‡0‰Parameter�#�for�IOSREC�parameter.IOSRSZB‚EQU‡1‰etc. IOSWTOB‚EQU‡2 IOSRTOB‚EQU‡3 *@*‚Device-dependent�portion�of�configuration�block�for�terminals:*‰OFFSET�IOSDDCIOSXOFƒDS.Bƒ1ŒX-OFF�CHARACTERIOSXONƒDS.Bƒ1ŒX-ON‚CHARACTER(IOSBRCƒDS.Bƒ1ŒBREAK�EQUIVALENT�CHARACTER&IOSDOPƒDS.Bƒ1ŒDISCARD�OUTPUT�CHARACTER$IOSRLNƒDS.Bƒ1ŒREPRINT�LINE�CHARACTER#IOSCLCƒDS.Bƒ1ŒCANCEL�LINE�CHARACTERIOSRTVƒDS.Lƒ1ŒREAD�TERMINATORS IOSEOLƒDS.Lƒ1ŒEND�OF�LINE�STRINGIOSBRTƒDS.Bƒ1ŒBAUD�RATE�CODE IOSNLSƒDS.Bƒ1ŒNULL�PADDING�COUNTIOSTRCƒDS.Bƒ1ŒTERMINATOR�CLASS/IOSTCDƒDS.Bƒ1ŒTERMINAL�CODE�(SEE�EQUATES�BELOW):IOSTTMƒDS.Bƒ10‹DO�NOT�USE!‚RESERVED�FOR�INTERNAL�USE�ONLY!‰DS.Bƒ6ŒRESERVED6IOSTLNƒEQU„*ŒLENGTH�OF�DATA�BLOCK�FOR�TERMINAL�DEVICES *6*ˆCONFIGURATION�PARAMETERS�SPECIFIC�TO�PRINTER�DEVICES*‰OFFSET�IOSDDCAIOSLRLƒDS.Wƒ1‹LOGICAL�RECORD�LENGTH�<=�IOSREC(PHYSICAL�REC.�LEN.)7IOSELCƒDS.Bƒ1‹END�OF�LINE�CHARACTER�(WITH�AUTO�LF�ONLY)‰DS.Bƒ15ŠRESERVED5IOSPLNƒEQU„*‹LENGTH�OF�DATA�BLOCK�FOR�PRINTER�DEVICES*N*‚Bit�equa tes�for�IOSDST�(device�status);�also�for�XRPDST�in�channel�commands.J*‚Note:‚the�various�bits�are�meaningful�only�with�certain�drivers/devices.*3XDSBRKƒEQU…0“BREAK�CONDITION�(only�used�internally)0XDSDCDƒEQU…1“State�of�DCD�line�at�the�connector.0XDSABRƒEQU…2“1�=�Doing�auto�baud�rate�detection. XDSWPBƒEQU…5“WRITE-PROTECTED�BIT!XDSNRBƒEQU…7“DEVICE�NOT�READY�BIT*+*ˆEquates�for�IOSDST�specific�to�mag�tapes./*ˆBits�2,1,0�of�IOSDST�return�the�tape�density.*XDSBLANK�EQU‡7“Blank�tapeXDSD800‚EQU‡1“800�bpiXDSD1600�EQU‡0“1600�bpi*2XDSCGBƒEQU‡4“1�=�Transport�density�software�select&*’.“0�=�Transport�density�panel�select*0*‚Equates�for�IOSCEC�(configuration�error�code).&*‚$01-$3F‚errors�common�to�all�drivers0*‚$40-$7F‚errors�specific�to�a�particular�driver*‚$80-$FF‚reserved*CECTIMƒEQU…$41‹Modem�operation�and�some�incompatible�parameter*Ÿor�attribute�were�specified.>CECTBRƒEQU…$42‹The�device�cannot�be�software-configured�to�the*Ÿspecified�baud�rate.* *ÆIEEE4886*…(IOSCEC�equates�specific�to�IEEE488�devices)•IEEE488 *ÆIEEE488>CECBPO‚EQU�$40ŽTrying�to�configure�a�parameter�that�isƒIEEE488!*œonly�valid�for�the�BUS.“IEEE4889CECSCE‚EQU�$41ŽTrying�to�configure�BUS�for�systemˆIEEE488+*œcontroller�capability�and�hardwar‰IEEE488*œswitch�is�not�set.˜IEEE488.CECIPA‚EQU�$42ŽInvalid�primary�address“IEEE488=CECVARL�EQU�$43ŽVariable�configuration�area�parameter…IEEE488*œerror.¤IEEE4888CECSADR�EQU�$44ŽInvalid�sec.�addr.�configurationŠIEEE488*.*…(IOSCEC�equates�specific�to�printer�devices)*3CECPNIƒEQU…$40‹NULL�is�invalid�for�an�EOL�character=CECPRLZƒEQU„$41‹Logical�and/or�physical�record�length�is�zero>CECPLGPƒEQU„$42‹Logical�record�length�>�physical�record�length*/*…(IOSCEC�equates�specific�to�mag�tape�devices)*8CECREQƒEQU‡$40‰The�tape�drive�is�not�configured�for�user* density�requests.*)CECDENƒEQU‡$41‰Unknown�density�requested.**I*‚Equates� for�IOSCTP�(channel�type);�also�for�XIOCTP�in�channel�commands.*XTACIAƒEQU…1“ACIA�DEVICEXTPIAAƒEQU…2“PIA�A-SIDE�DEVICEXTPIABƒEQU…3“PIA�B-SIDE�DEVICEXTCRTCƒEQU…4“CRTC�DEVICEXTSSDAƒEQU…5“SSDA�DEVICEXTADLCƒEQU…6“ADLC�DEVICEXTDIPCƒEQU…$10‘DISK�IPCXTMIPCƒEQU…$11‘MCCM�IPC#XTVM22ƒEQU…$12‘VM22�DISK�CONTROLLER"XTDSASƒEQU…$20‘SASI�ON�I/O�CHANNEL(XTDWINƒEQU…$21‘WINCHESTER�ON�I/O�CHANNEL$XTDFLPƒEQU…$22‘FLOPPY�ON�I/O�CHANNEL%XTD315ƒEQU…$23‘VME315�DISK�CONTROLLERé)XTM435ƒEQU…$24‘MVME435�(MAG�TAPE�ADAPTER)XTEPCIƒEQU…$30‘2661�DEVICEéééééééXTVM31„EQU„$81‘VM31�CHANNEL*¨PRINTER�PORTS:�$50-$5FXTPEXMƒEQU…$50‘PIA�EXORMACSXTPVM1ƒEQU…$51‘VM01�PARALLELXTPRTLƒEQU…$52‘RTTLIO�PARALLEL*¨SERIAL�PORTS:�$60-$6F"XTS7A2ƒEQU…$60‘7201�A-SIDE�ON�VM02"XTS7B2ƒEQU…$61‘7201�B-SIDE�ON�VM02"XTS7A8ƒEQU…$62‘7201�A-SIDE�ON�VM80"XTS7B8ƒEQU…$63‘7201�B-SIDE�ON�VM80"XTS7ARƒEQU…$64‘7201�A-SIDE�ON�RSIO"XTS7BRƒEQU…$65‘7201�B-SIDE�ON�RSIO,XTSEXSƒEQU…$6F‘KEYBOARD/SCREEN�ON�EXORMACS/S*#XTGBUSƒEQU…$4A‘IEEE�488�BUS”IEEE488**H*‚Equates�for�IOSDTP�(device�type);�also�for�XRPDTP�in�channel�commands.*XDSFDKƒEQU…1“FLOPPY�DISKXDSRDKƒEQU…2“RIGID�DISKXDSACIA‚EQU…3“TERMINALXDSPRTƒEQU…4“PRINTERXDSTAPE‚EQU…5“MAGNETIC�TAPE*$XDSGBUS‚EQU…$4A‘IEEE�488�BUS”IEEE4880XDSGDEV‚EQU…$4B‘IEEE�488�BUSSABLE�DEVICEˆIEEE488*#*‚Equates�for�IOSDRC�(driver�code).*3IODMPSCƒEQU„1’Async�terminal�driver�for�7201�ports.4IODLPRTƒEQU„2’Driver�for�local�Centronics�printer�on+*£EXORmacs�DEBUG�or�MVME410�on�I/O�channel.3IODSASIƒEQU„3’Driver�for�SASI�disks�on�I/O�channel.8IODWIN„EQU„4’Driver�for�Winchester�disks�on�I/O�channel.4IODFLP„EQU„5’Driver�for�Floppy�disks�on�I/O�channel..IOD315„EQU„6’Driver�for�disks�on�MVME315�board/IODMTA„EQU„7’DRIVER�FOR�MAG�TAPE�ON�I/O�CHANNEL ééé3IODEPCIƒEQU„8’Async�terminal�driver�for�2661�ports.9IODTERMƒEQU„$11�Driver�for�screen/keyboard�on�EXORMACS/S.IODIPC„EQU„$20�IPC�driver./IODVM22ƒEQU„$21�DRIVER�FOR�VM22�DISK�CONTROLLER,IODGPIBƒEQU„$4A�IEEE�488�bus�driver.�IEEE488*2*‚Bit�equates�for�IOSATM�and�IOSATW�for�terminals.*IOAHCPY‚EQU‡0‰HARD�COPYIOAXCTL‚EQU‡1‰XON/XOFFIOABITS‚EQU‡2‰7BIT/8BITIOASTPB‚EQU‡3‰STOP�BITSIOAUSEP‚EQU‡4‰PARITYIOAPRTY‚EQU‡5‰ODD/EVEN�PARITYIOAECHO‚EQU‡6‰HALF/FULL�DUPLEXIOATAHD‚EQU‡7‰TYPE�AHEAD#IOATFUL‚EQU‡8‰FULL�BUFFER�TERMINATEIOAPNUL‚EQU‡9‰PASS�NULLS#IOAMODM‚EQU‡10ˆMODEM/DIRECT�CONNECTIOAOFFH‚EQU‡11ˆMODEM�OFFHOOK5IOADCDƒEQU‡12ˆNOTIFY�BREAK�CLAIMER�OF�DCD�TRANSITIONS=IOAAUTO‚EQU‡13ˆDO�AUTO�BAUD�RATE�DETECTION�ON�DCD�TRANSITIONSééééé9IOATRMƒEQU‡15ˆDO�NOT�USE!‚RESERVED�FOR�INTERNAL�USE�ONLY!*'*‚Bit�equates�for�IOSPRM�for�terminals.*/IOSXOFB‚EQU‡4‰Parameter�#�for�IOSXOF�parameter.IOSBRCB‚EQU‡5‰etc. IOSDOPB‚EQU‡6 IOSRLNB‚EQU‡7 IOSCLCB‚EQU‡8 IOSRTVB‚EQU‡9IOSEOLB‚EQU‡10IOSBRTB‚EQU‡11IOSNLSB‚EQU‡12IOSTRCB‚EQU‡13IOSTCDB‚EQU‡14*;*ˆCONFIGURATION�PARAMETERS�SPECIFIC�TO�MAGNETIC�TAPE�DRIVES***‰OFFSETƒIOSDDC/IOSDENƒDS.B†1“Density�for�write�from�loadpoint.*.IOSRDTƒDS.B†1“Read�tries�before�error�message.*)IOSWRTƒDS.B†1“Write�tries�before�erasure.*,IOSERTƒDS.B†1“Erasures�before�error�message.*0IOSMTSV‚DS.B†8“Reserving�an�area�for�future�use.*/IOSMLNƒEQU†*”Length�of�data�block�for�mag�tape.*,*‚Bit�equates�for�IOSPRM�for�magnetic�tapes.*4IOSDENB‚EQU‡4‰Parameter�number�for�IOSDEN�parameter,IOSRDTB‚EQU‡5‰etc. IOSWRTB‚EQU‡6 IOSERTB‚EQU‡7*,*‚Bit�equates�for�IOSATW�for�magnetic�tapes.*8IOSELBƒEQU‡0‰Transport�density�selectable/not�selectable*2IOSREQB‚EQU‡1‰User�does/does�not�request�a‚density***$*‚Equates�for�IOSTCD�(terminal�code)*‚$00-$7F‚reserved*‚$80-$FF‚user-defined*TCDX155‚EQU‡0‰EXORterm�155.*&*‚Bit�equates�for�IOSATW�for�printers.*IOALNFD‚EQU‡0‰AUTO�LINE�FEED,IOASNFF‚EQU‡1‰SUPR ESS�FORM�FEED�AFTER�ASSIGN3IOATPLL‚EQU‡2‰TRUNCATE�PRINT�AT�LOGICAL�LINE�LENGTH*%*‚Bit�equates�for�IOSPRM�for�printers*9IOSLRLBƒEQU„4‹Parameter�number�for�logical�record�length.=IOSELCBƒEQU„5‹Parameter�number�for�the�end-of-line�character.** IOS DATA BLOCK STRUCTURE FOR%*‰DISK�CONFIGURE�AND�STATUS�COMMANDS.*‰OFFSET�IOSDDC1IOSSPTƒDS.Bƒ1ŒPHYSICAL�SECTORS�PER�TRACK�ON�MEDIA#IOSHDSƒDS.Bƒ1ŒNO.�OF�HEADS�ON�DRIVE'IOSTRKƒDS.Wƒ1ŒNO.�OF�CYLINDERS�ON�MEDIA(IOSILVƒDS.Bƒ1ŒINTERLEAVE�FACTOR�ON�MEDIA$IOSSOFƒDS.Bƒ1ŒSPIRAL�OFFSET�ON�MEDIA+IOSPSMƒDS.Wƒ1ŒPHYSICAL�SECTOR�SIZE�OF�MEDIA+IOSSHDƒDS.Wƒ1ŒSTARTING�HEAD�NUMBER�ON�DRIVE+IOSTRKD‚DS.Wƒ1ŒNUMBER�OF�CYLINDERS�ON�DRIVE@IOSPCOM‚DS.Wƒ1ŒPRECOMPENSATION�CYLINDER�#�(usually�.5�total�cyl)2IOSSPTD‚DS.Bƒ1ŒPHYSICAL�SECTORS�PER�TRACK�ON�DRIVEIOSSR:IOSSRTD‚DS.Bƒ1ŒSTEPPING�RATEIOSRWCC:4IOSEWCC‚DS.Wƒ1ŒREDUCED�WRITE�CURRENT�CYLINDER�NUMBER#IOSECCƒDS.Wƒ1ŒECC�DATA�BURST�LENGTHIOSDRSV‚DS.Bƒ2ŒRESERVED+*œTHE�ABOVE�RESERVED�BYTES�IS�FOR�AN�OFFSET*œTO�ANOTHER�PARAMETER�BLOCK)!IOSDLNƒEQU„*ŒLENGTH�OF�DATA�BLOCK*4*‚Bit�equates�for�IOSATM�and�IOSATW�for�disk�devices*.IOADDENƒEQU„$0‘MFM/FM�encoding�method�on�media/IOATDENƒEQU„$1‘96/48�TPI�track�density�on�media,IOADSIDE‚EQU„$2‘double/single�Sided�diskette-IOAFRMTƒEQU„$3‘Media�Format�(IBM�or�Motorola),IOARDISC‚EQU„$4‘Rigid/Floppy�disk�(or�drive)0IOADDEND‚EQU„$5‘MFM/FM�drive�encoding�capability0IOATDEND‚EQU„$6‘96/48�TPI�track�density�of�drive5IOARIBSƒEQU„$7‘Seek�required�w/�head�change�SMD�drive4IOADPCOM‚EQU„$8‘Post�read/pre-write�pre-compensation(*¦cylinder�number�(if�a�pre-compensation)*¦cylinder�number�is�supplied�-�this�flag&*¦indicates�is�it�is�post-read�or�pre-"*¦write.�The�default�is�pre-write)!IOASIZEƒEQU„$9‘8"/5�1/4"�diskette*)*‚Bit�equates�for�IOSPRM�for�disk�devices*.IOSSPTBƒEQU„$4‘Physical�sectors/track�on�media$IOSHDSBƒEQU„$5‘No.�of�heads�on�drive(IOSTRKBƒEQU„$6‘No.�of�cylinders�on�media)IOSILVBƒEQU„$7‘Interleave�factor�on�media%IOSSOFBƒEQU„$8‘Spiral�offset�on�media,IOSPSMBƒEQU„$9‘Physical�sector�size�of�media,IOSSHDBƒEQU„$A‘Starting�head�number�on�drive,IOSTRKDB‚EQU„$B‘Number�of�cylinders�on�drive*IOSPCOMB‚EQU„$C‘precompensation�cylinder�#/IOSSPTDB‚EQU„$D‘Physical�sectors/track�on�driveIOSSRB„EQU„$E‘stepping�rate5IOSRWCCB‚EQU„$F‘reduced�write�current�cylinder�number(*£and�EEC�data�burst�length�(either�both*£or�neither�are�defined)*Ç *ÆIEEE488/*�IEEE�488�BUS�CONFIGURATION�PARAMETERS IEEE488 *ÆIEEE488�OFFSET�IOSDDC¹IEEE4881IOSEORR‚DS.Lƒ1ŒEND�OF�RECORD�REQUIREMENTS�IEEE4886IOSEOSC‚DS.Wƒ1ŒEND�OF�STRING�CHAR�-�WRITE/READ‹IEEE488;IOSPOLC‚DS.Bƒ1ŒPARALLEL�POLL�CONFIGURATION�REGISTER†IEEE488-IOSPRMA‚DS.Bƒ1ŒDEVICE�PRIMARY�ADDRESS”IEEE488@IOSFBWX‚DS.Lƒ1Œ#�OF�BYTES�FOR�FIXED�LENGTH�WRITE,FMT/IMG�IEEE488?IOSFBRX‚DS.Lƒ1Œ#�OF�BYTES�FOR�FIXED�LENGTH�READ,FMT/IMG‚IEEE4882IOSSAMR‚DS.Lƒ1ŒREAD�SECONDARY�ADDRESS�MASK�IEEE4883IOSSAMW‚DS.Lƒ1ŒWRITE�SECONDARY�ADDRESS�MASKŽIEEE488-IOSRSVD‚DS.Lƒ2ŒRESERVED‚FOR�LATER�USE“IEEE488¤&IOPCUR�EQU�$2000�CURRENT�POSITION�/�=£(IOPPRVƒEQU�$4000�PREVIOUS(BACKWARD)�/�<Ÿ3IOPRANƒEQU�$6000�RANDOM(LRN�OR�LSN�GIVEN)�/�>�OR�=”"IOPTSKƒEQU�$8000�TASK�ID�SUPPLIED¥1IOPMNTƒEQU�$0„MOUNT�DISK�(CONFIGURE�REQUEST�ONLY)8IOPDMNT‚EQU�$100  0�DISMOUNT�DISK�(CONFIGURE�REQUEST�ONLY)ISTARO�EQU�$CB�RECORD�OVERFLOW/TOO�MANY�RECORDS�IN�DATA�BLOCK‹+ISTAKY�EQU�$CC�KEY�ERROR,�FAB�KEY�CONFLICTž(ISTAIDS�EQU�$CD�INSUFFICIENT�DISC�SPACE¡(ISTAUF�EQU�$CE�UNRECOVERABLE�FILE�ERROR¡ISTAIRPI�EQU�$DD�INVALID�REQUEST�FOR�PENDING�INTERRUPT†IEEE4880ISTAIVCB�EQU�$DE�INVALID�COMMAND�FOR�BUS”IEEE4888ISTADXAB�EQU�$DF�DATA�XFER�ABORTED�BY�CONTROLLERŒIEEE488 *»IEEE488* ISTANRƒEQU�$E1�DEVICE�NOT�READY§ISTADBƒEQU�$E2�DEVICE�BUSY¬ISTACRC‚EQU�$E3�DATA�CRC�ERROR©&ISTAWPƒEQU�$E4�WRITE�PROTECTED�DEVICE¡+ISTADDM‚EQU�$E5�DELETED�DATA�MARK�DETECTED�ISTATOƒEQU�$E6�TIMEOUT°&ISTASAƒEQU�$E7�INVALID�SECTOR�ADDRESS¡ISTACSM‚EQU�$E8�CHECKSUM�ERROR©#ISTARES‚EQU�$E9�DISC�RESTORE�ERROR¥ISTADOƒEQU�$EA�DATA�OVERRUN«%ISTASC�EQU�$EB�DEVICE�STATUS�CHANGED¤*ISTADME�EQU�$EC�TRACK/SECTOR�ID�NOT�FOUNDŸ%ISTAMRK�EQU�$ED�ADDR.�MARK�CRC�ERROR¤ISTASEK‚EQU�$EE�SEEK�ERROR­ISTABDS‚EQU�$EF�BAD�SECTOR­*Ç*ˆCHANNEL�ERRORS±*ÇISTACHN‚EQU…$F1’CHANNEL�BUSY–"ISTADMA‚EQU…$F2’CHANNEL�DMA�ERROR‘,ISTACDN‚EQU…$F3�UNRECOVERABLE�CHANNEL�ERROR‰!ISTACNT‚EQU…$F4�CONTROLLER�ERROR£+ISTACFG�EQU„$F5�DEVICE�CONFIGURATION�ERROR›ISTABUS EQU $F6 DMA BUS ERROR!ISTAMAP EQU $F7 DMA MAPPING ERROR$ISTADMC EQU $F8 DMA CONTROLLER ERROR+ISTAICE EQU $F9 INDETERMINATE CHANNEL ERROR‰PAGE»*Ç *ˆI/O�MACROSµ*Ç*…CALLING�SEQUENCE²!*ˆXXXCALL�(ADDR.�OF�PARAM�BLOCK)¡*Ç ‰OFFSET�0ºFHSCALL‚MACROº ‰IFNC�'\1',''‰IFNC�'\1','(A0)'&‰LEA�\1,A0�LOAD�ADDRESS�OF�PARAM�BLOCK‰ENDC‰ENDC‰TRAP�#3�CALL�EXEC�DIRECTIVE¥‰ENDM»*Ç*ÇIOSCALL‚MACROº ‰IFNC�'\1',''‰IFNC�'\1','(A0)''‰LEA�\1,A0�LOAD�ADDRESS�OF�PARAM�BLOCKš‰ENDC‰ENDC‰TRAP�#2�CALL�EXEC�DIRECTIVE¥‰ENDM»*Ç*ˆIOS�PARAMETER�BLOCK�MACRO¦*ŠCALLING�SEQUENCE­!*�XXX�(LABEL,PARAM1�...,PARAM�N)œ*Ç IOS†MACROº \0IOS„EQU…*¶ ‰IFC…'\1',''‰DFC.W„0“FUNCTIONš‰ENDC» ‰IFNC„'\1',''‰DFC.W„\1’FUNCTIONš‰ENDC» ‰IFC…'\2',''‰DFC.W„0’OPTIONSœ‰ENDC» ‰IFNC„'\2',''‰DFC.W„\2’OPTIONS›‰ENDC»‰DFC.B„0“STATUSœ ‰IFC…'\3','' ‰DFC.B„0’LUN ‰ENDC» ‰IFNC„'\3',''‰DFC.B„\3’LUNŸ‰ENDC»‰DFC.B„0“RESERVEDš ‰IFC…'\4',''‰DFC.B„0“PARTIAL�KEY�LENGTH�‰ENDC» ‰IFNC„'\4',''‰DFC.B„\4’PART  IAL�KEY�LENGTH�‰ENDC» ‰IFC…'\5',''"‰DFC.L„0’RECORD�NO.�-�KEY�POINTER‹‰ENDC» ‰IFNC„'\5',''#‰DFC.L„\5”RECORD�NO.�-�KEY�POINTERˆ‰ENDC» ‰IFC…'\6',''‰DFC.L„0’BUFFER�START�ADDRESS�‰ENDC» ‰IFNC„'\6',''‰DFC.L„\6“BUFFER�START�ADDRESS�‰ENDC» ‰IFC…'\7',''‰DFC.L„0“BUFFER�END�ADDRESS�‰ENDC» ‰IFNC„'\7',''‰DFC.L„\7“BUFFER�END�ADDRESS�‰ENDC»‰DFC.L„0“LENGTH�OF�TRANSFER� ‰IFC…'\8',''‰DFC.L„0’COMPLETION�ADDRESS‘‰ENDC» ‰IFNC„'\8',''‰DFC.L„\8’COMPLETION�ADDRESS�‰ENDC»‰ENDM»*Ç*ˆFHS�PARAMETER�BLOCK�MACRO¦*Ç FHS†MACROº \0FHS„EQU…*¶ ‰IFC…'\1',''‰DFC.W„0’COMMANDœ‰ENDC» ‰IFNC„'\1',''‰DFC.W„\1“COMMANDš‰ENDC» ‰IFC…'\2',''‰DFC.W„0“OPTIONS›‰ENDC» ‰IFNC„'\2',''‰DFC.W„\2”OPTIONS™‰ENDC»‰DFC.B„0“STATUSœ ‰IFC…'\3','' ‰DFC.B„0’LUN ‰ENDC» ‰IFNC„'\3',''‰DFC.B„\3”LUN�‰ENDC» ‰IFC…'\4',''"‰DFC.L„$20202020ŒVOLUME-DEVICE�ID‘‰ENDC» ‰IFNC„'\4',''‰DFC.L„\4’VOLUME-DEVICE�ID’‰ENDC»‰DFC.W„0“USER�NUMBER—‰DFC.L„$20202020‹CATALOG›‰DFC.L„$20202020­‰DFC.L„$20202020‹FILENAMEš‰DFC.L„$20202020­‰DFC.W„$2020�EXTENSION™‰DFC.W„0“RESERVEDš ‰IFC…'\5',''‰DFC.B„0“WRITE�CODE˜‰ENDC» ‰IFNC„'\5',''‰DFC.B„\5“WRITE�CODE—‰ENDC» ‰IFC…'\6',''‰DFC.B„0’READ�CODEš‰ENDC» ‰IFNC„'\6',''‰DFC.B„\6’READ�CODE™‰ENDC» ‰IFC…'\7',''‰DFC.W„0’RECORD�LENGTH–‰ENDC» ‰IFNC„'\7',''‰DFC.W„\7”RECORD�LENGTH“‰ENDC» ‰IFC…'\8',''‰DFC.L„0“SIZE/POINTER–‰ENDC» ‰IFNC„'\8',''‰DFC.L„\8“SIZE/POINTER•‰ENDC»‰ENDM»*Ç*ˆOUTPUT�CONSTANT�MACROª*Ç DFC†MACROº ‰DC.\0ƒ\1µ‰ENDM»éééé‡PAGE1************************************************* *�&.IOV.EQ¦*1**************************************************%*‡TABLE�OF�TASKS�CLAIMING�I/O�VECTORS* ˆOFFSET‚0IOVHDR‚DS.L„1†!IOV"IOVEND‚DS.L„1†END�OF�TABLE�ADDRESS#IOVENTR�EQU…*†OFFSET�OF�FIRST�ENTRY* ˆOFFSET‚0IOVJSR‚DS.W„3†JSR�COMNISR ˆOFFSET‚0IOVVECT�DS.W„1†VECTOR�NUMBERIOVTCB‚DS.L„1†TCB�ADDRESSIOVADR‚DS.L„1†ISR�ADDRESS$IOVARG‚DS.L„1†ARGUMENT�PASSED�TO�ISRIOVESZ‚EQU…*+6„SIZE�OF�ENTRY**„CISR�PARAMETER�BLOCK* ˆOFFSET‚0CISTSK‚DS.L„1†TASK�NAMECISSES‚DS.L„1†SESSIONCISOPT‚DS.W„1†OPTIONSCISVCT‚DS.W„1†VECTOR�NUMBERCISISR‚DS.L„1†ISR�ADDRESS$CISARG‚DS.L„1†ARGUMENT�PASSED�TO�ISRéé  ééé3‰PAGE»1************************************************* *�&.LV5.EQ¦*1*************************************************ééééééé<EDMFUA]BI************************************************************************** *—*********** *—*�4/16/82�* *—************K*****************************************************************************4*ˆDATA�STRUCTURES�AND�EQUATES�FOR�EXEC�(CHANNEL)�I/O**%*ˆEXEC�I/O�PARAMETER�BLOCK�STRUCTURES* ‰OFFSET…0“START�WITH�ZERO�OFFSETXIOCODƒDS.B„1“COMMAND�CODEXIOSCDƒDS.B„1“COMMAND�SUB-CODE&‰DS.B„1“--�UPPER�BYTE�OF�OPTIONS�WORD!,XIOOPTƒDS.B„1“--�LOWER�BYTE�OF�OPTIONS�WORD!XIOCIDƒDS.L„1“CHANNEL�MNEMONICXIOPRMƒEQU…*“START�PARAMETERS*$*ˆALLOCATE�PARAMETER�BLOCK�STRUCTURE*+‰OFFSET…XIOPRMŽSTART�WITH�PARAMETERS�OFFSETXIOCTPƒDS.B„1„CHANNEL�TYPE?XIOMICƒDS.B„1„MASKED�INTERRUPT�INSTRUCTION�COUNT�(USED�BY�CHPI)0XIOSVAƒDS.L„  1„I/O�HANDLER�SERVICE�VECTOR�ADDRESSAXIOSUPƒDS.L„1„SUPERVISOR�CHANNEL�MNEMONIC�(use�only�if�option�bit(*§XOPSUB�is�set--otherwise�leave�this�0)XIOADDƒDS.L„1„DEVICE�ADDRESSXIOMLNƒDS.W„1„#�OF�BYTES�ACROXIOVNOƒDS.B„1“VECTOR�NUMBERXIOPPRƒDS.B„1“POLLING�PRIORITYXIOSPRƒDS.B„1“SOFTWARE�PRIORITY!XIOPFCƒDS.B„1“POLLING�FIELD�COUNTXIOALNƒEQU…*“LENGTH**ˆINTERRUPT�SEGMENTS* ‰OFFSET…0!XIOPOFƒDS.W„1“POLLING�BYTE�OFFSETXIOMSKƒDS.B„1“POLLING�MASK XIOTSTƒDS.B„1“POLLING�TEST�VALUEXIOROFƒDS.W„1“RESET�OFFSETXIOREVƒDS.B„1“RESET�VALUE‰DS.B„1“RESERVEDXIOXLNƒEQU…*“LENGTH*(*ˆEQUATES�FOR�'XIOOPT'�(8�BITS)�ALLOCATE*7XOPSHRƒEQU…0…Only�system�tasks�may�attach�this�channel.%XOPEXCƒEQU…1…Reserved�(used�by�CHPI).!XOPDIRƒEQU…4…Exclusive�vectoring.@XOPSUB„EQU„8…This�channel�is�to�be�subordinate�to�the�supervisor*§whose�mnemonic�is�in�CCBSUP.:XOPSUP„EQU„$10ƒThis�channel�is�to�be�a�supervisor�channel.;XOPINH„EQU„$20ƒFor�internal�use�only--do�not�use�(4.3�SJF).*"*ˆATTACH�PARAMETER�BLOCK�STRUCTURE*+‰OFFSET…XIOPRMŽSTART�WITH�PARAMETERS�OFFSET XIOKEYƒDS.B„1“USER�GENERATED�KEY%XIOSLNƒDS.B„1“LENGTH�OF�STATUS�RETURNXIOVADƒDS.L„1“VECTOR�ADDRESSXIOTOCƒDS.W„1“TIMEOUT�COUNTXIORETƒDS.W„1“RETRY�COUNT*&*ˆEQUATES�FOR�'XIOOPT'�(8�BITS)�ATTACH*XOPWUPƒEQU…0“ISSUE�WAKE-UP XOPASQƒEQU…1“ISSUE�ASQ�INTERRUPTXOPPROƒEQU…0“I/O�AND�PROCEEDXOPWATƒEQU…2“I/O�AND�WAIT$XOPSRVƒEQU…3“SERVICE�VECTOR�SUPPLIED*&*ˆEQUATES�FOR�'XIOOPT'�(8�BITS)�DETACH*$XOPONEƒEQU…0“DETACH�ONLY�ONE�CHANNEL XOPALLƒEQU…1“DETACH�ALL�CHANNELS*(*ˆINITIATE�I/O�PARAMETER�BLOCK�STRUCTURE*+‰OFFSET…XIOPRMŽSTART�WITH�PARAMETERS�OFFSETXIOTSKƒDS.L„1“TASK�ID!XIOSESƒDS.L„1“TASK�SESSION�NUMBER XIOCHNƒEQU…*$*ˆNON-STANDARD�CHANNEL�UNIQUE�FIELDS"XIOSADƒDS.L„1“START�BUFFER�ADDRESSXIOBLNƒDS.L„1“LENGTH�OF�BUFFER'XIOBOFƒDS.L„1“ADDRESS�OF�BUFFER�POINTER&XIOCADƒDS.L„1“COMMAND�SEQUENCE�ADDRESS(XIOCLNƒDS.W„1“LENGTH�OF�COMMAND�SEQUENCEXIOCOFƒDS.W„1“COMMAND�OFFSET%XIOTADƒDS.L„1“TRANSIENT�SPACE�ADDRESS'XIOTLNƒDS.W„1“LENGTH�OF�TRANSIENT�SPACE#XIORTNƒDS.L„1“RETURN�STATUS�POINTERXIOILNƒEQU…*“LENGTH *ˆSTANDARD�CHANNEL�UNIQUE�FIELDS‰OFFSET‚XIOCHN,XIOUIDƒDS.L„1“USER�SUPPLIED�ID�(DCB�POINTER)*XIOCPKƒDS.L„1“START�COMMAND�PACKET�ADDRESSXIOPLNƒDS.W„1“PACKET�LENGTHXIONLNƒEQU…*“PB�LENGTH*,*ˆEQUATES�FOR�'XIOOPT'�(8�BITS)�INITIATE�I/O*"XOPDCPƒEQU…0“DRIVER�COMMAND�PACKET%XOPRCPƒEQU…1“REQUESTOR�COMMAND�PACKET** CMR TRAP 1 EXEC ERROR CODES*%XSTMNOƒEQU‡$0B‘CHANNEL�MNEMONIC�ERROR**ˆINIT.�I/O�SUB�CODES*XDSCMDƒEQU…0“INITIATE�I/OXDRESTƒEQU…1“RESETXDHALTƒEQU…2“HALT�IOXDRESBƒEQU…3“RESUBMIT�SEQUENCE*+*ˆEQUATES�FOR�RETURN�STATUS�(D0�AND�XRSSTA)*-XSTNATƒEQU…$81‘CHANNEL�NOT�ATTACHED�TO�CALLER/XSTAATƒEQU…$82‘CHANNEL�ATTACHED�TO�ANOTHER�TASKXSTOFFƒEQU…$83‘CHANNEL�OFF-LINEXSTBSYƒEQU…$84‘CHANNEL�BUSY1XSTINVƒEQU…$85‘INVALID�CALL�FOR�THIS�CHANNEL�TYPE**XSTCPSƒEQU…$91‘COMMAND�PACKET�STRUC.�ERROR#XSTCMEƒEQU…$92‘CHANNEL�MARKED�ERROR"XSTADSƒEQU…$93‘BUFFER�LENGTH�ERROR!XSTADBƒEQU…$94’BASE�ADDRESS�ERROR*)XSTSMBƒEQU…$A1‘SHARED�MEMORY�BUSY�(FATAL)!XSTUANƒEQU…$A2‘UNEXPECTED�ACK/NAKXSTMANƒEQU…$A3‘MISSING�ACK/NAK%XSTSYNƒEQU…$A4‘IPC�ACK/NAK�SYNC�ERROR%XSTBCMƒEQU…$A5‘BAD�CMD�COUNT�EXCEEDED"XSTSHMƒEQU…$A7‘SHARED�MEMORY�ERROR*+XSTRNGƒEQU…$B1‘COMMAND�SEQUENCE�RANGE�ERROR&XSTIBBƒEQU…$B2‘ILLEGAL�BACKWARD�BRANCH&XSTIOPƒEQU…$B3‘ILLEGAL�COMMAND�OP-CODE(XSTHLTƒEQU…$B4‘I/O�COMMAND�SEQUENCE�HALT0XSTSDAƒEQU…$B5‘SOURCE�FIELD�DEVICE�ADDRESS�ERROR0XSTSBAƒEQU…$B6‘SOURCE�FIELD�BUFFER�ADDRESS�ERROR2XSTSTAƒEQU…$B7‘SOURCE�FIELD�TRANSIENT�ADDRESS�ERRO/XSTDDAƒEQU…$B8‘DEST.�FIELD�DEVICE�ADDRESS�ERROR/XSTDBAƒEQU…$B9‘DEST.�FIELD�BUFFER�ADDRESS�ERROR2XSTDTAƒEQU…$BA‘DEST.�FIELD�TRANSIENT�ADDRESS�ERROR*XSTSESƒEQU‡$C6‡BAD�SESSION�CODE!XSTBUFƒEQU‡$C7‡BAD�BUFFER�ADDRESS XSTBLNƒEQU‡$C8‡BAD�BUFFER�LENGTH!XSTCADƒEQU‡$C9‡CHANNEL�ADR.�ERROR*.*ˆDATA�STRUCTURE�FOR�NON-STANDARD�RETURN�EVENT*"‰OFFSET‚0“STAR  T�WITH�VARIABLE�DATA‰DS.B„1“EVENT�LENGTH‰DS.B„1“EVENT�CODEXRSSTAƒDS.B„1“STATUS�CODEXRSKEYƒDS.B„1“CHANNEL�KEY!XRSPTRƒDS.W„1“LAST�COMMAND�NUMBERXRSLENƒEQU…*“LENGTH*1*ˆDATA�STRUCTURE�FOR�TYPE�(70,71,FF)�RETURN�EVENT*"‰OFFSET‚0“START�WITH�VARIABLE�DATA‰DS.B„1“EVENT�LENGTH‰DS.B„1“EVENT�CODEXRPSTAƒDS.B„1“EVENT�TYPEXRPKEYƒDS.B„1“CHANNEL�KEY(XRPUIDƒDS.L„1“USER�SUPPLIED�ID�(DCB�PTR)XRPSTVƒDS.W„1“STATUS�VALUEXRPPRMƒEQU…*“STATUS�PARAMETERS**ˆEQUATES�FOR�'XRPSTA'�(8�BITS)*XPSNRMƒEQU…$70‘NORMAL�RETURNXPSHLTƒEQU…$71‘HALT/ABORT'XPSUNSƒEQU…$80‘UNSOLICITED�DEVICE�EVENT(XPSUNRƒEQU…$FF‘UNSOLICITED�CHANNEL�EVENT**ˆEQUATES�FOR�'XRPSTV'**XSTVABT‚EQU‡0“INVALIT�HALT�COMMAND�(ABORT)XSTVDST‚EQU‡0“DEVICE�STATUS)XSTVNID‚EQU‡1“DEVICE�STATUS�(NO�ID�GIVEN)XSTVRSET�EQU‡0“CHANNEL�RESETXSTVDWN‚EQU‡$FF‘CHANNEL�DOWN*G*‚Remainder�of�event�if�XRPSTA=$80�and�XRPSTV=0.‚This�is�the�format�forH*‚an�unsolicited�event�if�INITIATE�I/O�commands�have�been�done�and�hence*‚the�device�ID�is�known.*+‰OFFSET…XRPPRMŽSTART�WITH�PACKET�PARAMETERSXRPDSTƒDS.B„1“DEVICE�STATUSXRPDTPƒDS.B„1“DEVICE�TYPEXRPLENƒEQU…*“LENGTH*C*‚Remainder�of�event�if�XRPSTA=$80�and�XRPSTV=1.‚This�is�the�formatJ*‚for�an�unsolicited�event�if�no�INITIATE�I/O�commands�have�been�done�yet.*‰OFFSET�XRPLENXRPDNOƒDS.B„1’DEVICE�NUMBER‰DS.B„1’RESERVEDXRP1LEN‚EQU…*’LENGTH*!*ˆCHANNEL�COMMAND�DIRECTIVE�CODES*XDCALLƒEQU…1“ALLOCATEXDDELTƒEQU…2“DELETEXDATCHƒEQU…3“ATTACHXDDTCHƒEQU…4“DETACHXDONLNƒEQU…5“MARK�ON�LINEXDOFLNƒEQU…6“MARK�OFF�LINEXDINITƒEQU…7“INITIATE�I/O*"*ˆDIRECTIVE�NUMBER�FOR�CHANNEL�I/O*XCAIO„EQU…60’ARBITRARY�I/O�CODE$XCCMR„EQU…60’CHANNEL�MANAGEMENT�CODE*-*ˆDATA�STRUCTURE�FOR�CHANNEL�DATA�BLOCK�(CDB)* ‰OFFSET…0XCDBPTR‚DS.L„1“NEXT�POINTER2XCDBOPT‚DS.W„1“OPTIONS�TO�USE�IN�ALLOCATE�COMMAND.XCDBAID‚DS.L„1“ASCII�IDENTIFIER%XCDBPRM‚DS.B„XIOALN-XIOPRM†PARAMETERS*'*ˆDRIVER�TRANSIENT�SPACE�DATA�STRUCTURE* ‰OFFSET…0“START�WITH�ZERO�OFFSETZSTAT„DS.L„1“DEVICE�STATUSZOPT…DS.L„1“I/O�OPTIONSZDOPT„DS.L„1“DRIVER�OPTIONS!ZRLEN„DS.L…1‘DEVICE�RECORD�LENGTHZBCNT„DS.L„1“BUFFER�COUNTER$ZBPTR„DS.L„1“BUFFER�RELATIVE�POINTERZEOLC„DS.L„1“END�OF�LINE�CHAR.ZCRNULƒDS.L„1“CR�NULL�COUNT%ZSBITSƒDS.L„1“PROGRAM�BYTE�FOR�DEVICE!ZBAL…DS.L„1“BRANCH�AND�LINK�VALUEZNCNT„DS.L„1“NULL�PAD�COUNTER ZBUF…DS.L„1“TEMP.�STORAGE�BUFFER"ZMODE1ƒDS.L„1“2661�MODE�REGISTER�1"ZMODE2ƒDS.L„1“2661�MODE�REGISTER�2 TSPACEƒEQU„**,*ˆDRIVER�CHANNEL�CONTROL�AREA�DATA�STRUCTURE* ‰OFFSET…0“START�WITH�ZERO�OFFSETZCID…DS.L„1“CHANNEL�MNEMONICZSTW…DS.W„1“STATE�WORDZKEY…DS.B„1“CHANNEL�KEYZRSET„DS.B„1“RESET�FLAG!ZBSAD„DS.L„1“START�BUFFER�ADDRESS$ZTSAD„DS.L„1“TRANSIENT�SPACE�ADDRESSZPTR…DS.L„1“POINTERZLEN…EQU…*“LENGTH**ˆZSTW�(STATE�WORD)�VALUES*$*’-1�=�TERMINATION�(NOTHING�PENDING)*“0�=�NOT�ACTIVE*“1�=�I/O�IN�PROGRESSéŠPAGE1************************************************* *�&.MAP.EQ¦*1**************************************************(*†MAPBEG�IN�SYSPAR�AREA�POINTS�TO�MEMMAP*;*‡MEMMAP�ENTRY�--�EACH�ENTRY�DESCRIBES�ONE�MEMORY�PARTITION* ‰OFFSET‚0,MAPMTYP‚DS.B„1†MEMORY�TYPE,�BITS�7-4�(3-0=0)1MAPPART‚DS.B„1†PARTITION�NUMBER,�BITS�3-0�(7-4)=08MAPSTRA‚DS.L„1†START�OF�AVAILABLE�MEMORY,�THIS�PARTITION0MAPFMLP‚DS.L„1†POINTER�TO�FML�HEADER�INFORMATION2MAPENDA‚EQU…MAPFMLPƒEND�OF�AVAILABLE�MEMORY�--�ROMMAPENTSZ�EQU…*†SIZE�OF�ENTRY*%*‡FREE�MEMORY�LIST�HEADER�INFORMATION* ‰OFFSET‚04LOWFREE‚DS.L„1†POINTER�TO�1ST�FREE�MEMORY�LIST�ENTRY:STRAVAIL�DS.L„1†START�OF�AVAILABLE�MEMORY�-�THIS�PARTITION8ENDAVAIL�DS.L„1†END�OF�AVAILABLE�MEMORY�-�THIS�PAR  TITION/MEMTYPE‚DS.B„1†MEMORY�TYPE�AND�PARTITION�NUMBER‰DS.B„1†UNUSED*SEMFRMEM�DS.W„3†FREE�MEMORY�LIST�SEMAPHORE)SEMWTMEM�DS.W„3†WAIT�FOR�MEMORY�SEMAPHORE FMLHDSZ‚EQU…**"*„LINKED�LIST�OF�FREE�MEMORY�SPACE* ‰OFFSET‚02FMLFP„DS.L„1†FORWARD�POINTER�TO�NEXT�ENTRY�IN�LIST/FMLBP„DS.L„1†BACKWARD�POINTER�TO�PREVIOUS�ENTRY/FMLFREE‚DS.L„1†FREE�PAGES�AVAILABLE�TO�ALLOCATE%FMLUSED‚DS.L„1†ALLOCATED�(USED)�PAGESééée$‰TTL‡NEC7201�CHIP�DESCRIPTION ‰OFFSET„0*>*‚Arrangement�of�registers�off�memory-mapped�I/O�base�address.*CREG…EQU‡0‰Control�register.SREG…EQU‡0‰Status�register.DREG…EQU‡-4ˆData�register. L****************************************************************************#NCR0BRK‚EQU�%10000000‡BREAK/ABORT�}6NCR0TXU‚EQU�%01000000‡Tx�UNDERRUN�}�USED�WITH�EXTERNALRxB>TxA>TxB�/�RxA>TxA>RxB>TxB*Œ%XXXXXX11‡FIELD�DEFINITION!NCW2UD1‚EQU�%00000011‡UNDEFINED�}0NCW2BDM‚EQU�%00000010‡BOTH�CHANNELS�DMA‡}�SYSTEM:NCW2ADM‚EQU�%00000001‡CH.�A�DMA,�CH.�B�INT„}�CONFIGURATION/NCW2BIN‚EQU�%00000000‡BOTH�CHANNELS�INTERRUPT�}*L*****************************************************************************Œ%11XXXXXX‡FIELD�DEFINITION)NCW3BT8‚EQU�%11000000‡Rx�8�BITS/CHARACTER)NCW3BT6‚EQU�%10000000‡Rx�6�BITS/CHARACTER)NCW3BT7‚EQU�%01000000‡Rx�7�BITS/CHARACTER)NCW3BT5‚EQU�%00000000‡Rx�5�BITS/CHARACTER*"NCW3AUE‚EQU�%00100000‡AUTO�ENABLES&NCW3EHU‚EQU�%00010000‡ENTER�HUNT�PHASE#NCW3CRC‚EQU�%00001000‡Rx�CRC�ENABLE0NCW3ADS‚EQU�%00000100‡ADDRESS�SEARCH�MODE�(SDLC)1NCW3SYN‚EQU�%00000010‡SYNC�CHARACTER�LOAD�INHIBITNCW3RXE‚EQU�%00000001‡Rx�ENABLE*L*****************************************************************************Œ%11XXXXXX‡FIELD�DEFINITION8NCW4CLK‚EQU�%11000000‡MASK�FOR�ISOLATING�THE�CLOCK�FIELD$NCW4C64‚EQU�%11000000‡X64�CLOCK�MODE$NCW4C32‚EQU�%10000000‡X32�CLOCK�MODE$NCW4C16‚EQU�%01000000‡X16�CLOCK�MODE#NCW4C01‚EQU�%00000000‡X1‚CLOCK�MODE*Œ%XX11XXXX‡FIELD�DEFINITION(NCW4EXS‚EQU�%00110000‡EXTERNAL�SYNC�MODE/NCW4SDL‚EQU�%00100000‡SDLC�MODE�(01111110�FLAG)+NCW4B16‚EQU�%00010000‡16�BIT�SYNC�CHARACTER+NCW4B08‚EQU�%00000000‡08�BIT�SYNC�CHARACTER*Œ%XXXX11XX‡FIELD�DEFINITION+NCW4SB2‚EQU�%00001100‡2�STOP�BITS/CHARACTER/NCW4SBH‚EQU�%00001000‡1�1/2�STOP�BITS/CHARACTER+NCW4SB1‚EQU�%00000100‡1�STOP�BITS/CHARACTER&NCW4SME‚EQU�%00000000‡SYNC�MODE�ENABLE*%NCW4PEO‚EQU�%00000010‡PARITY�EVEN/ODD#NCW4PEE‚EQU�%00000001‡PARITY�ENABLE*L****************************************************************************/NCW5DTR‚EQU�%10000000‡Data�Terminal�Ready�(DTR)*Œ%X11XXXXX‡FIELD�DEFINITION)NCW5TX8‚EQU�%01100000‡Tx�8�BITS/CHARACTER)NCW5TX6‚EQU�%01000000‡Tx�6�BITS/CHARACTER)NCW5TX7‚EQU�%00100000‡Tx�7�BITS/CHARACTER)NCW5TX5‚EQU�%00000000‡Tx�5�BITS/CHARACTER* NCW5BRK‚EQU�%00010000‡SEND�BREAKNCW5TXE‚EQU�%00001000‡Tx�ENABLE"NCW5CRC‚EQU�%00000100‡CRC-16/CCITT+NCW5RTS‚EQU�%00000010‡Request�To�Send�(RTS)#NCW5TCE‚EQU�%00000001‡Tx�CRC�ENABLE*L****************************************************************************8NCW6SYN‚EQU�%11111111‡SYNC�BITS�7-0‡}�SDLC�ADDRESS�FIELD*L****************************************************************************9NCW7SYN‚EQU�%11111111‡SYNC�BITS�15-8†}�01111110�SDLC�FLAGSDLCFLAG�EQU‡$7EŠPAGE1************************************************* *�&.NIO.EQ¦*1*************************************************  ééééééé‡�4˜L >¨M°A¸* ‰LLEN�120·O*******************************************************************************O********************************************************************************.*ˆDATA�STRUCTURES�AND�EQUATES�FOR�INTERNAL�I/O**ˆMODIFICATION�HISTORY8*‰9/02/83‚Added�mag�tape�device�dependent�portion�of�DCB:*ˆ11/09/82‚Added�TNT�TASK�ID�for�HDS-400�network�terminals=*‰6/15/82‚Modified�DCB�so�that�default�configuration�is�last.6*‰4/13/82‚Initial�update�to�make�all�systems�the�same.B*‰2/23/82‚Addition�of�structures�used�in�CONFIGURE,�CHANGE�DEFAULT-*’CONFIGURATION,�and�REQUEST�STATUS�commands.<*‰9/14/81‚Revision�2.0�--�Additional�DCB�field�equates.‚R.V. *‰8/12/80*O*******************************************************************************O******************************************************************************* (IOSTINƒEQU�2†IOS�TRAP�INSTRUCTION�NUMBER(FHSTINƒEQU�3†FHS�TRAP�INSTRUCTION�NUMBER0FHSID„EQU�'.FHS'�FILE�HANDLING�SERVICES�TASK�ID–2FMSID„EQU�'.FMS'�FILE�MANAGEMENT�SERVICES�TASK�ID”/IOSID„EQU�'.IOS'�INPUT/OUTPUT�SERVICES�TASK�ID—(IODID„EQU�'.IOD'�I/O�COMPLETION�TASK�IDž)TTYID„EQU�'.TTY'�TERMINAL�DRIVER�TASK�ID��DEVICE�IN�DEFAULT�CONFIGURATION2*�1�-->�DEVICE�MAY�NOT�BE�IN�DEFAULT�CONFIGURATIONDCBBCTƒDS.B�1�BREAK�COUNT+DCBBRKƒDS.L�1�ADDRESS�OF�BREAK�SERVICE�LUTœ$DCBSRVƒDS.L�1�BREAK�SERVICE�ADDRESS£7DCBTSKƒDS.L�1„EVENT�CLAIMER�-->�TASK�NAME�7/6/83�IEE488�SESSION�NUMBERˆ7/6/83�IEE488@DCBSUPƒDS.L�1„ADDRESS�OF�SUPERVISOR�DCB�OR�SESSION„7/6/83�IEE4880*’NUMBER�IF�THIS�IS�SUPERVISOR�DCBˆ7/6/83�IEE488ADCBSOPƒDS.L�1„SUPERVISOR/SUBORDINATE�DCB�OPEN�COUNTƒ7/6/83�IEE488-*—FOR�EVERY�SUBORDINATE�DEVICE†9/13/83�IEE488  .*—THAT�IS�OPENED,�THIS�COUNT�IS…9/13/83�IEE488!*—INCREMENTED�BY�1’9/13/83�IEE488 DCBRSVƒDS.L†1‰DS.L†1‰DS.L†1‰DS.L†1.*œRESERVED�BUFFER�OF�16�BYTES�FOR�FUTURE�USAGE+*œBETWEEN�THE�DEVICE�INDEPENDENT�AND�DEVICE*œDEPENDENT�INFORMATION**‚DEVICE�DEPENDENT�PORTION*+DCBDEVƒEQU‡*“START�DEVICE�DEPENDENT�PORTION&DCBLENƒEQU‡DCBDEV+IOSREC‡RECORD�LENGTH%DCBSECƒEQU‡DCBDEV+IOSRSZ‡DISK�SECTORS)DCBSIZƒEQU‡DCBDEV+IOSRSZ‡SCREEN/PAGE�SIZE&DCBTMWƒEQU‡DCBDEV+IOSWTO‡WRITE�TIMEOUT%DCBTMRƒEQU‡DCBDEV+IOSRTO‡READ�TIMEOUT*E* DEVICE DEPENDENT PORTION FOR TTY COMPATABILITY THAT WAS THROWN AWAY * ORIGINALLY*)DCBSBS‚EQUˆDCBDEV+IOSBRC‡PROGRAMMING�INFO)DCBHBS‚EQUˆDCBDEV+IOSRTV‡PROGRAMMING�INFO�OFFLINE„1�-->�ONLINEDFLGWPƒEQU�1�WRITE�PROTECT¬"DFLGSCƒEQU�2�DEVICE�STATUS�CHANGE¥+DFLGINƒEQU�3�DEVICE�BUSY�FOR�INITIALIZATION*DFLGCFƒEQU�4�DEVICE�BUSY�FOR�CONFIGURATION(DFLGCTƒEQU�5�CANCEL�TIMER�0-->NO‚1-->YES7DFLGITƒEQU�6�SET�-->�IGNORE�TIMER�EVENT�FOR�THIS�DEVICE*Ç*‚DCBATT�BIT�EQUATES�(16�BITS)*ÇDATRED‚EQU�0�SUPPORTS�READ­DATWRT‚EQU�1�SUPPORTS�WRITE¬DATBIN‚EQU�2�SUPPORTS�BINARY«DATRAN�EQU�3�SUPPORTS�RANDOM¬DATIMG‚EQU�4�SUPPORTS�IMAGE¬DATHIO‚EQU�5�SUPPORTS�HALT�I/O©&DATPOS‚EQU�6�SUPPORTS�POSITION�RECORD¢DATFMK‚EQU�7�SUPPORTS�FILEMARK© DATIND‚EQU�8�INTERACTIVE�DEVICE¨DATPRT‚EQU�9�PRINTER�DEVICE¬DATSPL EQU 10 SUPPORTS SPOOLING+DATWRC EQU 11 SUPPORTS WRITE WITH CRC CHECK4DATSPD EQU 12 SUPPORTS SPECIAL PURPOSE DEVICE DRIVER,DATSHR�EQU�13�DEVICE�IS�NOT�SHARABLE¡IEEE488%DATBDV�EQU�14�BUSSABLE�DEVICE¨IEEE488 *ÄIEEE488*‹B13+B14�==>†00�=�NONEŸIEEE488$*œ01�=�NON-SHARED�BUS�DEVICEŽIEEE488%*œ10�=�SHARED�BUSSABLE�DEVICE�IEEE488)*œ11�=�NON-SHARED�BUSSABLE�DEVICE‰IEEE488 *Ç*‚DCBTMO�VALUES�(16�BITS)*Ç *ˆ0�=�NOT�ACTIVE�(OR�TIMED�OUT)¢$*ˆ+�=�ACTIVE�IN�DATA�TRANSFER�PHASEž"*ˆ-�=�ACTIVE�IN�TERMINATION�PHASE *ljPAGE» *À***********3*‚SYSTEM�VALUE�TABLE�(SVT)�DATA�STRUCTURE—*‚S�V�T‚* *À*********** ‰OFFSET‚0�START�WITH�ZERO�OFFSET!SVTSOPƒDS.L�1�I/O�SYSTEM�OPTIONS¦5SVTQSTƒDS.L�1�START�OF�DEVICE�CONNECTION�QUEUE�SPACE’0SVTQNDƒDS.L�1�END�OF�DEVICE�CONNECT�QUEUE�SPACE—SVTQUEƒDS.L�1�FIRST�DCQ¯0SVTLSTƒDS.L�1�START�OF�LOGICAL�UNIT�TABLE�SPACE—.SVTLNDƒDS.L�1�END�OF�LOGICAL�UNIT�TABLE�SPACE™ SVTLUTƒDS.L�1�FIRST�TABLE�ENTRY§'SVTDSTƒDS.L�1�START�OF�DCB�TABLE�SPACE %SVTDNDƒDS.L�1�END�OF�DCB�TABLE�SPACE¢ SVTDCBƒDS.L�1�FIRST�TABLE�ENTRY§SVTSDCB‚DS.B�1�DCB�SEMAPHORESVTSLUT‚DS.B�1�LUT�SEMAPHORE«SVTSDCQ‚DS.B�1�DCQ�SEMAPHORE«SVTSFCB‚DS.B�1�FCB�SEMAPHORE«0SVTSIDƒDS.L�4�I/O�SYSTEM�ID�AND�REVISION�NUMBER—*SVTBRKƒDS.L�2�TASK-ID�OF�UNCLAIMED�BREAKS�7SVTBSAƒDS.L�1�SERVICE�ADDRESS�FOR�UNCLAIMED�BREAK�TASK� *Ç*‚EQUATES�FOR�SVTSOP�(32�BITS)*ÇSVOPMUƒEQU�0�MULTIPLE�USER¬SVOPFMƒEQU�1�FMS�PRESENT® *À***********3*‚LOGICAL�UNIT�TABLE�(LUT)�DATA�STRUCTURE—*‚L�U�T‚* *À*********** ‰OFFSET‚0�START�WITH�ZERO�OFFSET $LUTPTRƒDS.L�1�POINTER�TO�NEXT�TABLE£LUTTIDƒDS.L�1�TASK-ID±"LUTSESƒDS.L�1�TASK�SESSION�NUMBER¥%LUTMLUƒDS.B�1�MAXIMUM�NUMBER�OF�LUNS¢"LUTCASƒDS.B�1�CURRENT�ASSIGNMENTS¥LUTUNMƒDS.W�1�USER�NUMBER­LUTBEGƒEQU�*�BEGIN�LU�ENTRIES©*Ç ‰OFFSET‚0�START�WITH�ZERO�OFFSET(LUTCAPƒDS.B�1�CURRENT�ACCESS�PERMISSIONŸ"LUTCSFƒDS.B�1�CURRENT�STATUS�FLAG¥(LUTATTƒDS.W�1�ATTRIBUTES�OF�DEVICE/FILEŸ!LUTDCBƒDS.L�1�ADDRESS�OF�DCB/FCB¦"LUTSEGƒEQU�*�LENGTH�OF�EACH�ENTRY¥ *Ç*‚LUTCSF�BIT�EQUATES�(8�BITS)*ÇLUSFAC‚EQU�0�ACTIVE´LUSFIO‚EQU�1�I/O�PENDING¯LUSFCP‚EQU�2�CLOSE�PENDING­LUSFAS‚EQU�3�ASSIGN�PENDING¬LUSFCW‚EQU�4�CONNECTION�WAIT*LUSEVC‚EQU�5�DRIVER�EVENTS�CLAIMED¢IEEE488LUSFDV‚EQU�7�DEVICE�ASSIGNMENT *À***********5*‚DEVICE�CONNECT�QUEUE�(DCQ)�DATA�STRUCTURE•*‚D�C�Q‚* *À*********** ‰OFFSET‚0�START�WITH�ZERO�OFFSET$DCQPTRƒDS.L�1�POINTER�TO�NEXT�TABLE£(DCQNXTƒDS.L�1�POINTER�TO�NEXT�DCB�ENTRYŸDCQDCBƒDS.L�1�ADDRESS�OF�DCBªDCQLUTƒDS.L�1�ADDRESS�OF�LUTª#DCQLUE�DS.L�1�ADDRESS�OF�LUN�ENTRY¦&DCQLADƒDS.L�1�LOGICAL�ADDRESS�OF�IOCB¡DCQTIN�DS.B�1�TRAP�INDICATOR¬DCQRES�DS.B�1�RESERVED�BYTE­%DCQPLN�DS.B�1�PARAMETER�BLOCK�LENGTH¤DCQPRIƒDS.B�1�PRIORITY° DCQLENƒEQU�*º‰PAGE»ééé PAGE1**************************************************�&.PANAL.EQ¤*1***************************************************ˆFRONT�PANEL�EQUATES* ‰OFFSET�00FPDMPTST DS.W 1 MEMORY DUMP, ENABLE, SYSTEM TESTFPTTO„DS.W�1�TEST�TIME-OUTFPLEDST‚DS.W�1�LED�STATUSéééééé À ŠPAGE1************************************************* *�&.PAT.EQ¦*1***************************************************ˆPERIODIC�ACTIVATION�TABLE*!‰OFFSET„0‰THIS�IS�AN�OFFSET�TABLEPAT†DS.L†1‰!PAT„DEBUG�TOOL0PATFHDR‚DS.L†1‰ADDRESS�OF�1ST�ENTRY�IN�FREE�LIST0PATTHDR‚DS.L†1‰ADDRESS�OF�1ST�ENTRY�IN�TASK�LIST0PATEHDR‚DS.L†1‰ADDRESS�OF�1ST�ENTRY�IN�EXEC�LIST(PATTSIZ‚DS.L†1‰LENGTH(IN�BYTES)�OF�TABLE$PATENTRY�EQU‡*‰OFFSET�TO�FIRST�ENTRY**ˆPAT�ENTRY�DEFINITION*&‰OFFSET„0‰OFFSET�IS�FROM�ENTRY�POINTER,PATNEXT‚DS.L†1‰POINTER�TO�NEXT�ENTRY�IN�LISTPATOCMSK�EQU‡$0202…MASK�FOR�BOTH�PATOCANC�AND�PATOFINL�OPTION.ééÉ+K*==========================================================================**ˆEQUATE�FILE�FOR�RAD1�TABLE*K*==========================================================================*'*ˆThe�RAD1�table�consists�of�4�parts�--8*’(1)‚The�"header",�which�contains�various�constants�and'*œpointers�to�other�parts�of�the�table.9*’(2)‚RAUSRLST,�which�is�a�table�of�user-RAD�combinations2*œfor�keeping�track�of�which�users�are�using�which*œRADs�and�vice�versa.6*’(3)‚RARADLST,�which�is�a�table�of�RADs�showing�which)*œchannels�are�assigned,�RAD�status,�etc.@*�and‚(4)‚RATEMP,�which�is�a�section�of�memory�to�be�used�by�the**œdriver�for�temporary�or�working�storage.*K*==========================================================================**ƒHeader�area�equates�.�.�.*4RARADTBL�EQU‡0“Start�of�table�area,�set�to�"!RAD"�as*°an�"eye-catcher".FRARADLAD�EQU‡RARADTBL+4„Offset�to�start�of�RARADLST�in�the�RAD1�table.6RARADUSD�EQU‡RARADLAD+2Š#�of�RADs�in�RARADLST�already.9RANUMRAD�EQU‡RARADUSD+1Š#�of�RADs�defined�in�this�system.RAUSRLST�EQU‡RAHDRLNGŒRAUSRLST�always�starts�immediately�after*¦the�header�area./RAUUSRNO�EQU‡0“Offset�into�table�entry�for�task*¦name/session�#.;RAURADID�E QU‡RAUUSRNO+8ŠOffset�into�table�entry�for�RAD-ID.8RAUSTAT‚EQU‡RAURADID+4ŠOffset�into�table�entry�for�"RAD-&*¦aborted/restarted"�flag.‚(Used�to�be(*¦sure�all�users�of�a�RAD�are�"informed"*¦of�abort�or�restart.)7RAUEROPT�EQU‡RAUSTAT+2‹Error-notification�options�flag.;RAUERSTO�EQU‡RAUEROPT+2ŠError-notification�storage�addr�for *¦error�code.;RAUERSUB�EQU‡RAUERSTO+4ŠError-notification�subroutine�addr.5RAULNGƒEQU‡RAUERSUB+4ŠLength�of�an�entry�in�RAUSRLST.**ƒRARADLST�equates�.�.�.*Ò3Û)RARADLID�EQU‡0“Offset�in�entry�to�RAD-ID.>RARDSTAT�EQU‡RARADLID+4ŠOffset�into�table�entry�for�RAD�status*¦flag.*‚Arrangement�of�registers�off�memory-mapped�I/O�base�address.*CREG…EQU‡6‰Command�register.SREG…EQU‡2‰Status�register.DREG…EQU‡0‰Data�register.MREG1„EQU‡4‰Mode�register�1MREG2„EQU‡4‰Mode�register�2 L*****************************************************************************(*‚Status�register�bit�definitionsƒ(SREG)*TXRDY…EQU„0’transmitter�readyRXRDY…EQU„1’receiver�readyDNR‡EQU„2’device�not�readyPEˆEQU„3’parity�errorDOVR†EQU„4’data�overrunFEˆEQU„5’framing�error�or�break(*£framing�error�if�data�in�read�register*£break�if�read�register�is�0DCD‡EQU„6’data�carrier�detectDSRB†EQU„7’data�set�ready**K******************************************************** ********************éééé4)*‚Command�register�bit�definitions‚(CREG)*TXEN†EQU„0’enable�transmitter!DTR‡EQU„1’set�data�terminal�readyRXEN†EQU„2’enable�receiverFBˆEQU„3’force�break1ERRSET„EQU„4’reset�error�flags�in�status�registerRTS‡EQU„5’request�to�sendAAˆEQU„6’async:�auto�echo�modeASˆEQU„7’asycn�mode**N*******************************************************************************)*‚Mode�register�2�bit�definitions�(MREG2)*-*ˆbaud�rate�bits�defined�elsewhere�(bits�0-3)**„%1111xxxx�field�definition*4ITCX16„EQU„%01110000Šinternal�clocks,�x16�clock�rate**O*********************************************************************************)*‚Mode�register�1�bit�definitions‚(MREG1)*:*„%XXXXXX11‚field�definition�for�mode�and�baud�rate�factor**ASY16X„EQU„%00000010Šasynchronous�16x�rate*1*„%xxxx11xx‚field�definition�for�character�length*'BIT5†EQU„%00000000Š5�bits�per�character'BIT6†EQU„%00000100Š6�bits�per�character'BIT7†EQU„%00001000Š7�bits�per�character'BIT8†EQU„%00001100Š8�bits�per�character*'*…%xx11xxxx‚field�definition‚for�parity*!PENBL…EQU„%00010000Šparity�enable(PTYPE…EQU„%00100000Šparity�type�even/odd*/*‰%11xxxxxx�field�definition�for�#�of�stop�bits*SB1‡EQU„%01000000Š1�stop�bit SB15†EQU„%10000000Š1.5�stop�bitsSB2‡EQU„%11000000Š2�stop�bits**J**************************************************************************éé PAGE1**************************************************�&.SMLOAD.EQ£*1*************************************************O**********************************************************************************�OFFSETS�TO�M6840�PROGRAMMABLE�TIMER�CHIP*O*******************************************************************************  ‰OFFSET�0‰DS.B‚1ˆSKIP�ALL�EVEN�BYTES/CR13…DS.B‚2ˆCONTROL�REGISTER�FOR�TIMERS�1�AND�3=CR2SR„DS.B‚2ˆCONTROL�REGISTER�FOR�TIMER�2�AND�STATUS�REGISTER, MSBT1„DS.B‚2ˆMOST�SIGNIFICANT�BYTE�-�TIMER�1-T1LSB„DS.B‚2ˆLEAST�SIGNIFICANT�BYTE�-�TIMER�1,MSBT2„DS.B‚2ˆMOST�SIGNIFICANT�BYTE�-�TIMER�2-T2LSB„DS.B‚2ˆLEAST�SIGNIFICANT�BYTE�-�TIMER�2,MSBT3„DS.B‚2ˆMOST�SIGNIFICANT�BYTE�-�TIMER�3-T3LSB„DS.B‚1ˆLEAST�SIGNIFICANT�BYTE�-�TIMER�3éééé PAGE1************************************************* *�&.SPL.EQ¦*1*************************************************ééééééé(I088E@MH *4*‚***************************************************‚SPOOLER�EQUATE�FILE-*‚CONTAINS�MACROS�FOR�FMSINT�AND�ALL�INTERNAL*‚SPOOLER�EQUATES5*******************************************************ŠMACROS�FOR�SPLFMS�(FMSINT)** SFHSCO PARAMETERS: * 1. COMMAND * 2. OPTIONS0*�3.�ADDRESS�REGISTER�(�->‚FHS�PARAMETER�BLOCK�)*>SFHSCO MACRO * SETS COMMAND AND OPTIONS IN FHS PARAMETER BLOCK MOVE.L #((\1)*$10000)+\2,(\3) ENDM** SIOSCO PARAMETERS: * 1. COMMAND * 2. OPTIONS0* 3. ADDRESS REGISTER ( -> IOS PARAMETER BLOCK )*>SIOSCO MACRO * SETS COMMAND AND OPTIONS IN IOS PARAMETER BLOCK MOVE.L #((\1)*$10000)+\2,(\3) ENDM** SFATTR PARAMETERS:1* 1. OPTIONS: FILE TYPE, OR'ED INTO OPTIONS FIELD* 2. RECORD SIZE ( 0 => VRL )/* 3. FAB AND DATA BLOCK SIZE, 2 ONE BYTE VALUES * 4. KEY SIZE0* 5. ADDRESS REGISTER ( -> FHS PARAMETER BLOCK )*9SFATTR MACRO * SETS FILE ATTRIBUTES FOR FHS ALLOCATE CALLƒOR.W�#\1,FHSOPT(\5)�OPTIONS IFNE \2$ MOVE.W #\2,FHSLRL(\5) RECORD LENGTH ENDC IFEQ \2 CLR.W FHSLRL(\5) ENDC< MOVE.L #(\4)*$10000+\3,FHSSIZ(\5) KEY, FAB, DATA BLOCK SIZE ENDM* PAGE**‚SPOOLER�QUEUE�ENTRY�STRUCTURE* OFFSET 0"QDEVICE�DS.L�1�DEVICE�NAME�(ASCII)/QFORMS�DS.L�1�FORMS�ID�DEFAULT�=�'STND'ƒ(ASCII)QVOL�DS.L�1�VOLUME�NAME“(ASCII)"QUSERN�DS.W�1�USER�NUMBER‘(BINARY)"QCATLG�DS.L�2�CATALOG�NAME�(ASCII)QFILEN�DS.L�2�FILENAME”(ASCII)QEXT�DS.W�1�EXTENSION•(ASCII)QTASKN�DS.L�1�TASK�NAME“(ASCII)#QSESS�DS.L�1�SESSION�NUMBER�(ASCII)!QJOBID�DS.L�1�JOB�NUMBER’(BINARY)"QPRI�DS.B�1�TASK�PRIORITY‘(BINARY)#QLUN�DS.B�1�LUN�FOR�OUTPUT�(BINARY)QDATE�DS.L�1�DATE™(BINARY)QTIME�DS.L�1�TIME™(BINARY)-QSIZE�DS.L�1�FILE�SIZE�-�#�OF�BLOCKS†(BINARY)QSTAT�DS.B�1�STATUS—(BINARY).QCOPYS�DS.B�1�#�OF�COPIES�DEFAULT�=�1…(BINARY) QLNG EQU ***‚QSTAT�BIT�DEFINITIONS*+QSTATRDY EQU 0 READY TO OUTPUT SPOOLER FILEHQSTATACT EQU 1 ACTIVE-SPOOLER FILE ASSIGNED AND ALLOCATED FOR USER INPUT-QSTATOUT EQU 2 BEING OUTPUT TO SPOOLER DEVICE4QSTATWAT EQU 3 MUST WAIT FOR A CONTINUE TO BE ISSUED1QSTATFRM EQU 4 CAN'T OUTPUT-NOT MATCHING FORMS IDCQSTATIOE EQU 5 IO ERROR ON OUTPUT FOUND,WAIT FOR CONTINUE OR CANCEL+QSTATCAN EQU 6 CANCEL AN ENTRY BEING OUTPUT7QSTATOAA EQU 7 BEING OUTPUT AND ACTIVE(FILE NOT CLOSED)*?*‚ENTRY�STRUCTURE�OF�RESERVED�RECORDS�IN�THE�SPOOLER�QUEUE�FILE3*ˆ(RECORDS�0-8)�(RECORD�9�CONTAINS�LAST�JOB�NUMBER)* OFFSET 0RDEV�DS.L�1�DEVICE�NAME…(ASCII)RFRM‚DS.L�1�FORMS�ID‡(ASCII)HRSTAT�DS.L�1�STATUS‚0=OK�TO�OUTPUT‚-1=FORMS�WAS�ISSUED,WAIT�FOR�CONTINUERLNG EQU * ENTRY LENGTH-RREC EQU QLNG/12 NUMBER OF ENTRIES PER RECORD**‚MISC�EQUATES*USER0�EQU�0ƒUSER�NUMBER�0FOUT�EQU�3„LUN�FOR�OUTPUT�FILE DOUT�EQU�4„LUN�FOR�OUTPUT�DEVICE3BLANK EQU $20202020 BLANKS-USE FOR PARAMETER BLOCKS0ENTRYLNG EQU FHSNLN+EVTLEN LENGTH OF 1 ASQ ENTRYCR EQU $0D CARRIAGE RETURN CODELF EQU $0A LINE FEED CODESPOOLF�EQU‚$40‰'@'&MYSES EQU 1 .SPL SESSION NUMBER NUMBER?BUFADR�EQU�$20000‚SEGMENT�START�ADDRESS�FOR�NON-SPOOLER�FILE�IO@BUFLNG�EQU�$A00„SEGMENT�LENGTH�(CHANGES�BY�SUBTASK�IF�TOO�SMALL)?REGOFF�EQU�50†OFFSET�TO�REGISTERS�IN�START�TASK�PARAMETER�BLOCK&FOURƒEQU‚4…OFFSET�OF�4�FOR�REGISTER�A1**‚SPLFLG�BIT�DEFINITIONS*9EOF EQU 0 FOUND AN END OF FILE ON READ SPOOLER QUEUE FILE"PRNTER EQU 1 DOING IO TO A PRINTER*NOTSPL EQU 2 OUTPUTTING A NON-SPOOLER FILE!PIOFƒEQU�3�PROCEED�IO�IN�PROGRESS-IOERRF EQU 4 IO ERROR FOUND DURING PROCEED IO$RDYERR EQU 5 OUTPUT DEVICE NOT READY*1*‚SPLFLG1�BIT�DEFINITIONS�-�USED�BY�QUEUE�COMMAND*$OUTDEV EQU 0 OUTPUT MATCHING DEVICES(OUTUSN EQU 1 OUTPUT MATCHING USER NUMBER+OUTSES EQU 2 OUTPUT MATCHING SESSION NUMBER OUTALL EQU 3 OUTPUT ENTIRE QUEUE**‚BIT�DEFINITIONS�FOR�SUBTRERR*'RDERR EQU 0 IO ERROR FOUND ON FILE READ+WRTERR EQU 1 IO ERROR FOUND ON DEVICE WRITE?HDRERR EQU 2 IO ERROR FOUND ON DEVICE WRITE - OUTPUTTING HEADER?TERMERR EQU 3 TERMINATE THE SUB-TASK AND SET TO FILE NOT OUTPUT* A*‚SUB-TASK�EVENT�STRUCTURE�FOR�SENDING�IO�ERROR�EVENTS�TO�MONITOR* OFFSET 0 IOERLNG�DS.B�1�EVENT�LENGTHƒ(12)IOERCDE�DS.B�1�EVENT�CODE„(32)+IOERMSG DS.W 1 EVENT MESSAGE (SUBTERR WORD)(IOERD0 DS.L 1 CONTENTS OF DO ON IO ERRORIOERNAM DS.L 1 SUBTASK NAME*%SUBTELNG EQU 12 SUB-TASK EVENT LENGTH#SUBTECDE�EQU�32ƒSUB-TASK�EVENT�CODE*SPLECDE�EQU�33‚.SPL�EVENT�CODE�TO�SUB-TASK*.*ˆERROR�MESSAGE�HANDLER�PARAMETR�BLOCK�OFFSETS* ‰OFFSET�0#EM_D0 DS.L 1 D0 IOS/FHS RETURN CODE/EM_A0 DS.L 1 A0 IOS/FHS PARAMETER BLOCK ADDRESSEM_OPT DS.B 1 OPTIONS FLAGEM_TLUN DS.B 1 LDFLUN$EM_QRC‚DS.B�1�QUERY�RETURN�CHARACTEREM_KLUN DS.B 1 CDFLUN(EM_SPA DS.L 1 START ADDRESS OF USER TEXT&EM_EPA DS.L 1 END ADDRESS OF USER TEXT PAGE*CMN EQU $FFFFFF00 USED FOR MOVE.L $80-$FF TO GEN 2 BYTE INSTRUCTIONS*%*‚SPLOOLER�QUEUE�ENTRY�RECORD�EQUATES*+LINEBL EQU QLNG RECORD'S LINE BUFFER LENGTHKEYSIZ EQU 0 NULL KEYS#VRLFIL EQU QLNG FIXED RECORD LENGTH'MXRECL�EQU�LINEBL‚MAXIMUM�RECORD�LENGTH**‚FILE�NAME�EQUATES*4FILNML EQU 24 FULLY QUALIFIED FILE NAME FIELD LENGTH**‚DATA�BLOCK�EQUATES*BDEFSIZ EQU $108 1 SECTOR FAB/8 SECTOR DATA BLK(DEFAULT ALLOCATION)$DBMAX EQU 20 MAXIMUM DATA BLOCK SIZE*:*‚FMS�LOGICAL�ADDRESSES�FOR�SEGMENTS�TO�BE�USED�AS�BUFFERS*IFMSDBA EQU $10000 LOGICAL BUFFER START FOR FILE DATA BLOCK (SHARED W/FMS)NFMSSRA EQU FMSDBA+DBMAX*$100 BUFFER START FOR SOURCE FILE DB OR EXTRACT BUFFER**‚DEFINE�DATA�LAYOUTS*:*‚********************************************************;*‚FMSINT�PARAMETER�BLOCK�(USED�BETWEEN�FMSINT�AND�SPOOLER)::*‚*********************************************************1�OFFSET�0‚POINTED�TO�BY�A3�(A0�ON�CALL�TO�FMSINT)*FMSTAT DS.B 1 STATUSFMSCMD DS.B 1 COMMANDFMSREC�DS.L�1…LRN7FMSBUF�DS.L�1…FWA�OF�LINE�BUFFER,�POINTER�TO�FILE�NAMES$FMSRECN�DS.W�1‡#�OF�RECORDS�AFFECTED*FMSEFS�DS.B�1‡FILE�STATUS*=EFSCHG�EQU�1‚FILE�STATUS�CHANGED�(EDIT�FILE�.NE.�OUTPUT�FILE)* FMSOFS�DS.B�1‡OUTPUT�FILE�STATUS*&OFSDEL EQU 1 OUTPUT FILE STATUS DELETE**!*‚********************************‚FILENAME�PARAMETERS!*‚********************************)�OFFSET„0„POINTED�TO�BY�FMSBUF�IN�OPENCMD*FLNM1 DS.B FILNML FULLY QUALIFIED FILENAME DS.W 1 RESERVED DS.W 1 READ/WRITE CODES:OFSTAT�DS.B�1�OUTPUT�FILE�STATUS„0=FILENAME1�IS�FOR�OUTPUT‚DS.W�1�READ/WRITE�CODES‚PAGE**‚***************************‚MAP�FOR�FMSINT�SCRATCH�PAD*‚***************************(�OFFSET�0ƒPOINTED�TO�BY�A6�DURING�FMSINT**‚MAP�FOR�UNINITIALIZED�DATA*EOFLRN�DS.L�1‚FILE'S�LAST�LRNEFLUN�DS.B�1ƒFILE�LUNEFFLG�DS.B�1‚FILE�FLAG'* EFFLG = 0 => 'FILENAME1' IS EDIT FILE**LRECBA DS.L 1 LAST RECORD'S BUFFER ADDRESS*%OUTRCZ DS.W 1 OUTPUT FILE RECORD SIZE"OUTKYZ DS.B 1 OUTPUT FILE KEY SIZE"SRCKYZ DS.B 1 SOURCE FILE KEY SIZE'SRCRCZ DS.W 1 SOURCE FILE RECORD LENGTHSRCDBE DS.L 1 BUFFER END SRCDBL DS.L 1 BUFFER LOGICAL END*?DATASGL�EQU�*‚END�OF�UNINITIALIZED�DATA�(ZEROED�OUT�BY�OPENCMD)**‚MAP�FOR�INITIALIZED�DATA*.SRCDBS DS.L 1 SOURCE FILE LOGICAL BUFFER START*;LRECRDƒDS.L�1�LRN�OF�LAST�RECORD�READ(-1�IF�NONE�AVAILABLE)*5STKPTR DS.L 1 STACK POINTER FOR ABORT FROM SUBROUTINE****‡FMSINT�COMMAND�EQUATES*#OPENCMD‚EQU‚1ˆFMS-OPEN�FILE�COMMAND#RDCMD‚EQU‚2ˆFMS-READ�RECORD�COMMAND&DELCMD‚EQU‚3‰FMS-DELETE�RECORD�COMMAND(INSRTCMD‚EQU�4†FMS-INSERT�RECORD�COMMAND(REPLCMD‚EQU‚5ˆFMS-REPLACE�RECORD�COMMAND PAGE*.*ˆOFFSETS�USED�BY�A�SPAWNED�SUB-TASK�DOING�THE*ˆACTUAL�SPOOLER�OUTPUT* ‰OFFSET�0 DATAST EQU *SCRATCHS�DS.B�154‚SCRATCH�AREA‰DS.B�200‚STACK STACK EQU *&FHSPBS�DS.B�FHSNLN‚FHS�PARAMETER�BLOCK&IOSPBS�DS.B�IOSBLN‚IOS�PARAMETER�BLOCK#SPLQNS�DS.L�2‡TASK�NAME�AND�SESSIONSPLFLGS�DS.B�2†FLAGSSUBTERR�DS.W�1†ERROR�FLAGSCURRECS�DS.L�1†CURRENT�RECORD)QEVTS�DS.B�ENTRYLNG‚EVENT�PARAMETER�BLOCK(QBUFS�DS.B�QLNG†QUEUE�ENRTY�BEING�OUTPUT BUFEND�DS.L�1ˆBUFFER�END�ADDRESS)SBUFSA�DS.L�1ˆSHARED�BUFFER�START�ADDRESS'SBUFEA�DS.L�1ˆSHARED�BUFFER�END�ADDRESS /CURPT�DS.L�1‰CURRENT�POINTER�INTO�SHARED�BUFFERSAVLNG�DS.L�1ˆBUFFER�SIZEFOPT�DS.W�1ŠOUTPUT�FILETYPE1BUFSTRT�DS.L�1‡NON-SPOOLER�FILE�DATA�AREA�ADDRESS DATALNG EQU * PAGEéééééééŠPAGE1************************************************* *�&.SRVR.EQ¥*1***************************************************‰SERVER�EQUATES*!*‰TYPE�7�MESSAGE�(SERVER�REQUEST)* ‰OFFSET�0TYP7SIZE‚DS.B‚1…MESSAGE�LENGTH'TYP7CODE‚DS.B‚1…MESSAGE�TYPE�CODE�($07)ATYP7TRAP‚DS.B‚1…TRAP�NUMBER�(BIT�7=SYS�TSK;6=TERM�MSG;5=LAST�TSK)TYP7PRIO‚DS.B‚1…PRIORITYTYP7TASK‚DS.L‚1…TASK�NAMETYP7SESS‚DS.L‚1…SESSIONTYP7USER‚DS.W‚1…USER�NUMBERTYP7D0„DS.L‚1‡REQUESTOR'S�D0TYP7A0„DS.L‚1‡REQUESTOR'S�A0&TYP7PBST‚DS.B‚1…PARAMETER�BLOCK�STATUS$TYP7PBSZ‚DS.B‚1…PARAMETER�BLOCK�SIZE'TYP7PBLK‚EQUƒ*…START�OF�PARAMETER�BLOCK**ˆPARAMETER�BLOCK�STATUS�CODES**T7STPMOVƒEQUƒ0†TOTAL�PARAMETER�BLOCK�MOVED,T7STPARTƒEQUƒ1†PART�OF�PARAMETER�BLOCK�MOVED*T7STPADRƒEQUƒ2†BAD�PARAMETER�BLOCK�ADDRESS,T7STNORQƒEQUƒ3†PARAMETER�BLOCK�NOT�REQUESTED**…BITS�SET�IN�TYP7TRAP�FIELD*2TYP7TSYS�EQUƒ7ˆTASK�SENDING�MESSAGE�IS�SYSTEM�TASK-TYP7TTRM�EQUƒ6ˆMESSAGE�IS�TERMINATION�MESSAGE+TYP7TLST�EQUƒ5ˆTASK�IS�LAST�TASK�IN�SESSION*"*�OPTIONS�AVAILABLE�ON�ACKNOWLEDGE*-TACKOSCC�EQU‚14ˆSET�CONDITION�CODES�ON�RETURN TACKOSD0�EQU‚13ˆDET�D0�ON�RETURN TACKOSA0�EQU‚12ˆSET�A0�ON�RETURNTACKORDY�EQU‚11ˆREADY�THE�TASK%TACKOWT‚EQU‚10ˆPUT�TASK�IN�WAIT�STATETACKOSPD�EQU‚9‰SUSPEND�THE�TASK,TACKOTRM�EQU‚8‰SPEC�RESPONSE�TO�TERM�REQUESTéé P- ‰LLEN�120ŠPAGE1************************************************* *�&.STR.EQ¦*1***************************************************†GENERAL�EQUATES*"TRMODE„EQU�15…TRACE�MODE�BIT�IN�SR'SRMODE„EQU�13…SUPERVISER�MODE�BIT�IN�SRBMULTPROC‚EQU‚0„COND�ASSEMBLY�FLAG�(MULTIPLE�PROCESSORS)�1=ON�0=OFFASHARMEMƒEQU‚1„COND�ASSEMBLY�FLAG�(MEMORY�SHARED�BY�MULTIPLE�PROC)CWAITMEMƒEQU‚1„COND�ASSEMBLY�FLAG�(WAIT�FOR�MEMORY�OPTION�AVAILABLE):EXECPRIO‚EQU‚240ƒPRIORITY�SET�WHEN�EXEC�ROUTINES�RESTARTED6HIBIT…EQU‚15„HIGH�ORDER�BIT�NUMBER�-�USED�IN�BIT�TESTS**ŠSECTION�NUMBERS�FOR�LEVELS* LVLBASE„EQU‚2LEVEL00„EQU‚LVLBASE+0LEVEL01„EQU‚LVLBASE+1LEVEL02„EQU‚LVLBASE+2LEVEL03„EQU‚LVLBASE+3LEVEL04„EQU‚LVLBASE+4LEVEL05„EQU‚LVLBASE+5PATCHES„EQU‚15*(*†TRACE�FLAGS�-�SET�IN�TRACFLAG�(SYSPAR)*#TRCFTRP1�EQU‚15‰SET�TO�TRACE�TRAP�1%TRCFIOƒEQU‚14‰SET�TO�TRACE�INTERRUPTS-TRCFTIMR�EQU‚13‰SET�TO�TRACE�TIMER�INTERRUPTS.TRCFTRAP�EQU‚12‰SET�TO�TRACE�USER�TRAPS�(2-15)'TRCFEXCP�EQU‚11‰SET�TO�TRACE�EXCEPTIONS'TRCFDSPT�EQU‚10‰SET�TO�TRACE�DISPATCHES2TRCFUIO‚EQU‚9ŠSET�TO�TRACE�USER�CLAIMED�INTERRUPTS.TRCFMMU‚EQU‚8ŠSET�TO�TRACE�RETURN�FROM�LOADMMU/TRCFSINT�EQU‚7ŠSET�TO�TRACE�SIMULATED�INTERRUPTéééY&bj:r[z^‚T.TRCFSYSF�EQU‚6ŠSET�TO�TRACE�SYSFAIL�INTERRUPTS‰PAGE**ˆTRAP�0�EQUATES*T0P†EQU‚1�SEMAPHORE�P�(WAIT)T0V†EQU‚2�SEMAPHORE�V�(SIGNAL) T0READY‚EQU‚3�TASK�TO�READY�LIST%T0PAGAL‚EQU‚4�ALLOCATE�PHYSICAL�PAGES T0PGFRƒEQU‚5�FREE�PHYSICAL�PAGEST0GETTCB�EQU‚6�SEARCH�TCB�LIST'T0FNDSEG�EQU‚7�FIND�SEGMENT�NAME�IN�TST2T0LOGPHY�EQU‚8�LOGICAL�TO�PHYSICAL�ADDRESS�CONVERT'T0FNDGSG�EQU‚9�FIND�SEGMENT�NAME�IN�GST"T0ASRINT�EQU‚10Œ'INTERRUPT'�TO�ASR5T0QEVNTN�EQU‚11ŒPLACE�EVENT�IN�ASQ�-�ARG�IS�TASK�NAME2T0FNDSEM�EQU‚12ŒFIND�ENTRY�IN�USER�SEMAPHORE�TABLE6T0GTXTCB�EQU‚13ŒGET�TCB�USING�SESSION�PROVIDED�IN�CALL5T0PAUSE‚EQU‚14ŒPAUSE�WHILE�WAITING�FOR�IO�TO�COMPLETE;T0DSRVX‚EQU‚15ŒDEALLOCATE�SERVER�FUNCTION�-�WHEN�TASK�STOPS6T0DSEMX‚EQU‚16ŒDEALLOCATE�SEMAPHORES�-�WHEN�TASK�STOPS/T0DASQX‚EQU‚17ŒDEALLOCATE�ASQ�-�WHEN�TASK�STOPS;T0DSEGX‚EQU‚18ŒDEALLOCATE�MEMORY�SEGMENTS�-�WHEN�TASK�STOPS8T0EXEQDQ�EQU‚19ŒSEND�MESSAGE�TO�SERVER�-�WHEN�TASK�STOPSéé éé5T0DMONX‚EQU‚20ŒDETACH�TASK�FROM�EXMON�WHEN�TASK�STOPS.T0EXABRT�EQU‚21ŒABORT�USER�TASK�FROM�EXEC�MODE*T0WAKEUP�EQU‚22ŒWAKEUP�TASK�FROM�EXEC�MODE7T0QEVNTT�EQU‚23ŒPLACE�EVENT�IN�ASQ�-�ARG�IS�TCB�ADDRESST0SCHED‚EQU‚36ŒSCHEDULE�A�ROUTINE�FOR�EXECUTION�IN�BACKGROUND.1T0GUARD‚EQU‚37ŒCALL�A�SUBROUTINE�IN�GUARDED�MODE.*8*„THE�FOLLOWING�EQU'S�DEFINE�ENTRIES�TO�SUBROUTINES�ONLY0*ˆTRAP�0�ENTRIES�FOR�EXTERNAL�CALLS�DO�NOT�EXIST*5T0RYEXT1�EQU‚3�READY�ROUTINE�ENTRY�-�FROM�TRAP�1�EXIT0T0RYEXIR�EQU‚3�READY�ROUTINE�ENTRY�-�FROM�EXITIRTSKILAST‚EQU„2‡TASK�IS�LAST�TASK�IN�SESSION�(SET�ONLY�BY�TERM)TSKIABRT‚EQU„1‡TASK�WAS�ABORTED+TSKIUVCT‚EQU„0‡TASK�HAS�CLAIMED�USER�VECTOR**‰TCBSTATE�BIT�DEFINITIONS*TSKSDORM‚EQU„15†TASK�IS�DORMANTTSKSBLCK‚EQU„14†TASK�IS�BLOCKED1TSKSSMWT‚EQU„13†TASK�IS�BLOCKED�ON�EXEC�SEMAPHORE)TSKSEVWT‚EQU„12†TASK�IS�WAITING�FOR�EVENT?TSKSAKWT‚EQU„11†TASK�IS�WAITING�FOR�SERVICE�REQ�ACKNOWLEDGEMENT6TSKSWTEM‚EQU„10†TASK�IS�WAITING�FOR�COMMAND�FROM�EXMON TSKSSUSP‚EQU„9‡TASK�IS�SUSPENDED*+TSK2TRMP‚EQU„7‡TASK�HAS�PENDING�TERMINATION'TSK2RTEX‚EQU„6‡TASK�WILL�RETURN�TO�EXEC%TSK2EVWK‚EQU„5‡TASK�IS�HEADED�FOR�ASR$TSK2NRDY‚EQU„4‡TASK�IS�ON�READY�LIST&TSK2WKWT‚EQU„3‡TASK�HAS�PENDING�WAKEUP@TSK2ACK2‚EQU„2„TERM�MESSAGE�TO�SERVER�SENT�WHILE�ACK�OUTSTANDING*/TSKSWMSK‚EQU„$FF00ƒMASK�OF�ALL�TASK�WAIT�STATES**…TCBEMMSK�BIT�DEFINITIONS*"TEMTRAP1‚EQU‚1‡TRAP�1�IS�MONITORED&TEMBUSER‚EQU‚16†BUS�ERROR�IS�MONITORED*TEMADDER‚EQU‚17†ADDRESS�ERROR�IS�MONITORED0TEMILLEG‚EQU‚18†ILLEGAL�INSTRUCTION�IS�MONITORED'TEMZDIVƒEQU‚19†ZERO�DIVIDE�IS�MONITORED*TEMCHK„EQU‚20†CHK�INSTRUCTION�IS�MONITORED.TEMTRAPV‚EQU‚21†TRAPV�INSTRUCTION�IS�MONITORED/TEMPRIVƒEQU‚22†PRIVILEGE�VIOLATION�IS�MONITORED&TEML1010‚EQU‚23†LINE�1010�IS�MONITORED&TEML1111‚EQU‚24†LINE�1111�IS�MONITORED*-TEMMCNTƒEQU‚27†MAX�INSTRUCTION�COUNT�SUPPLIED=TEMTRACƒEQU‚28†SINGLE�INSTRUCTION�TRACE�REQUESTED�(IF�VCHG=0)1TEMVEQUƒEQU‚28†VALUE�=�TEST�REQUESTED�(IF�VCHG=1)*TEMVCHGƒEQU‚29†VALUE�CHANGE�TEST�REQUESTEDééééé ‰PAGE1************************************************* *�&.TIOT.EQ¥*1**************************************************&*„TRAP�INSTRUCTION�OWNER�TABLE‚--�TIOT*„ENTRY�DEFINITIONS* ‰OFFSET‚0/TIOTTCB‚DS.L‚1ˆSERVER�TASK�CONTOL�BLOCK�ADDRESS#TIOTSESS�DS.L‚1ˆSERVER�SESSION�CODE(TIOTSEM‚DS.W‚3ˆASQ�CONTROLLING�SEMAPHORE!TIOTADDR�DS.L‚1ˆINTERRUPT�ADDRESS2TIOTMCNT�DS.W‚1ˆCOUNT�OF�MESSAGES�NOT�ACKNOWLEDGEDTIOTSTAT�DS.B‚1ˆTIOT�STATUS$TIOTPBSZ�DS.B‚1ˆPARAMETER�BLOCK�SIZETIOTELƒEQUƒ*ˆENTRY�LENGTH*$*‚TIOTSTAT�--�STATUS�BIT�DEFINITIONS*&TIOTSON‚EQUƒ15‡SERVER�FUNCTION�ENABLED=TIOTSTRM�EQUƒ14‡SERVER�WANTS�NOTIFICATION�OF�TASK�TERMINATION?TIOTSPBO�EQUƒ13‡SERVER�WANTS�PARAMETER�BLOCK�MOVED�WITH�MESSAGEDTIOTSMSG�EQUƒ12‡MESSAGE�SENT�TO�SERVER�-�SINCE�LAST�SIGNAL�SEMAPHORE*)*‚TRAP�INSTRUCTION�ASSIGNMENT�TABLE�CODES*(TIATEXEC�EQU‚1ˆTRAP�IS�RESERVED�FOR�EXEC)TIATUSER�EQU‚2ˆTRAP�IS�ASSIGNED�TO�SERVERééé鸊PAGE1************************************************* *�&.TR1.EQ¦*1*************************************************éééééé éÁÊ7ÒBÚ!***ˆTRAP�#1�EQUATES±*ÇGTSEG„EQU‚1�ALLOCATE�SEGMENTšDESEG„EQU‚2�DEALLOCATE�SEGMENT˜TRSEG„EQU‚3�TRANSFER�SEGMENTš&ATTSEGƒEQU‚4�ATTACH�SHAREABLE�SEGMENT’)SHRSEGƒEQU‚5�GRANT�SHARED�SEGMENT�ACCESS�%MOVELLƒEQU‚6�MOVE�LOGICAL�TO�LOGICAL“'DCLSHRƒEQU‚7�DECLARE�SEGMENT�SHAREABLE‘,SNPTRCƒEQU‚8�MOVE�TRACE�TABLE�TO�USER�BUFFER'RCVSA„EQU‚9�RECEIVE�SEGMENT�ATTRIBUTES�CRTCB„EQU‚11ŽCREATE�TCB START„EQU‚13ŽSTART�TASK ABORT„EQU‚14ŽABORT�TASK�(SELF)™"TERM…EQU‚15ŽTERMINATE�TASK�(SELF)•'TERMT„EQU‚16ŽTERMINATE�TASK�(NOT�SELF)‘"SUSPNDƒEQU‚17ŽSUSPEND�TASK�(SELF)—$RESUMEƒEQU‚18ŽRESUME�SUSPENDED�TASK•(WAIT…EQU‚19ŽTASK�BECOMES�BLOCKED�(SELF)�$WAKEUPƒEQU‚20ŽWAKEUP�A�WAITING�TASK•/DELAY„EQU‚21ŽDELAY�SOME�NUMBER�OF�MILLISECONDS‰!RELINQƒEQU‚22ŽRELINQUISH�CONTROL˜&TSKATTR‚EQU‚23ŽRETURN�TASK�ATTRIBUTES”#SETPRIƒEQU‚24�SET�CURRENT�PRIORITY—STOP…EQU‚25�STOP�TASK¢,EXPVCTƒEQU‚26�SAVE�EXCEPTION�VECTOR�ADDRESSŽ'TRPVCTƒEQU‚27�SAVE�TRAP�VECTOR�ADDRESS“#TSKINFO‚EQU‚28�RETREIVE�COPY�OF�TCB)RQSTPAƒEQU‚29�REQUEST�PERIODIC�ACTIVATIONDELAYWƒEQU‚30�DELAY�AND�WAITGTASQ„EQU‚31ŽALLOCATE�AN�ASQ›DEASQ„EQU‚32�DEALLOCATE�ASQ�SETASQƒEQU‚33�SET�ASQ�STATUS�"RDEVNTƒEQU‚34ŽREAD�EVENT�FROM�ASQ—/QEVNT„EQU‚35ŽPUT�EVENT�IN�SOMEONE�ELSE'S�QUEUE‰WTEVNTƒEQU‚36ŽWAIT�FOR�EVENTœ RTEVNTƒEQU‚37ŽRETURN�FROM�EVENT™!ATSEM„EQU‚41ŽATTACH�TO�SEMAPHORE—WTSEM„EQU‚42ŽWAIT�ON�SEMAPHORE™SGSEM„EQU‚43ŽSIGNAL�SEMAPHOREšDESEM„EQU‚44ŽDETACH�SEMAPHOREšCRSEM„EQU‚45ŽCREATE�SEMAPHOREš0DESEMAƒEQU‚46ŽDETACH�ALL�SEMAPHORES�(THIS�TASK)‰-SERVERƒEQU‚51�ESTABLISH�SERVER�FOR�USER�TRAP‹*DSERVEƒEQU‚52�DETACH�FROM�SERVER�FUNCTIONŽ.DERQSTƒEQU‚53�SET�USER/SERVER�R‚EQUEST�STATUS‰*AKRQSTƒEQU‚54�ACKNOWLEDGE�SERVICE�REQUESTŽCDIR…EQU‚58ŽCONFIGURE�DIRECTIVECMR†EQU‚60ŽREQUEST�CHANNEL0CISR…EQU‚61ŽCONNECT�TO�INTERRUPT�SERVISE�ROUTINE(SINT…EQU‚62ŽSIMULATE�USER�I/O�INNTERRUPT)EXMON„EQU‚64ŽATTACH�TO�EXCEPTION�MONITOR�+DEMON„EQU‚65ŽDETACH�FROM�EXCEPTION�MONITOR�)EXMMSKƒEQU‚66ŽSET�EXCEPTION�MONITOR�MASK�!RSTATEƒEQU‚67ŽRECEIVE�TASK�STATE˜PSTATEƒEQU‚68ŽPUT�TASK�STATEœ/REXMONƒEQU‚69ŽEXECUTE�TASK�UNDER�EXMON�CONTROLŠ;MOVEPLƒEQU‚72ŽMOVE�FROM�PHYSICAL�ADDRESS�TO�LOGICAL�ADDRESS STDTIMƒEQU‚73ŽSET�DATE�AND�TIME™ GTDTIMƒEQU‚74ŽGET�DATE�AND�TIME™&*„MACRO�ERQ�--�CALLS�TRAP�#1�ROUTINES¡*Ç ERQ…MACRO»‰IFC„'\0','RTE' ‰IFNCƒ'\1','' ‰MOVE.L‚\1,D0‰ENDC‰TRAP„#1‰MEXIT‰ENDC \@A†SET…2¶‰IFEQ„\0-ABORT¯ ‰IFNC„'\1',''‰MOVE.W‚\1,A0²‰ENDC ‰IFNC„'\2','' ‰MOVE.W‚\2,D0‰SWAP„D0‰ENDC \@A†SET…1¶‰ENDC»‰IFEQ„\0-TERM° ‰IFC…'\1','' ‰SUB.LƒA0,A0‰ENDC ‰IFNC„'\1',''‰MOVE.W‚\1,A0²‰ENDC ‰IFC‡'\2','' ‰SUB.L…D0,D0‰ENDC ‰IFNC„'\2','' ‰MOVE.W‚\2,D0‰SWAP„D0‰ENDC \@A†SET…1¶‰ENDC»‰IFEQ„\0-SUSPND® \@A†SET…1¶‰ENDC»‰IFEQ„\0-WAIT° \@A†SET…1¶‰ENDC»‰IFEQ„\0-DELAY¯ ‰IFNC„'\1',''‰MOVE.L‚\1,A0²‰ENDC \@A†SET…1¶‰ENDC»‰IFEQ„\0-RELINQ® \@A†SET…1¶‰ENDC»‰IFEQ„\0-WTEVNT® \@A†SET†1µ‰ENDC»‰IFEQ„\0-DEASQ¯ \@A†SET…1¶‰ENDC‰IFEQ„\0-SETASQ® ‰IFNC„'\1',''é éé ‰MOVE.Lƒ\1,A0‰ENDC \@A†SET…1¶‰ENDC»‰IFEQ„\0-RTEVNT ‰IFNC„'\1','' ‰MOVE.L‚\1,A0‰ENDC \@A†SET…1‰ENDC‰IFEQ„\0-DESEMA \@A†SET…1‰ENDC‰IFEQ„\0-DSERVE ‰IFNCƒ'\1','' ‰MOVE.L‚\1,A0‰ENDC \@A†SET…1‰ENDC‰IFEQ„\0-DERQST ‰IFNC„'\1','' ‰MOVE.Lƒ\1,A0‰ENDC \@A†SET…1‰ENDC ‰IFEQ„2-\@A² ‰IFNCƒ'\1','' ‰LEA…\1,A0‰ENDC‰ENDC‰MOVE.Wƒ#\0,D0‰TRAP…#1‰ENDM»ééééééŠPAGE1**************************************************�&.TR1RTCD.EQ¢*1**************************************************.*ˆERROR�RETURN�CODES�USED�BY�TRAP�1�DIRECTIVES*5RTCDDIRN‚EQU„1’DIRECTIVE�NUMBER�IN�D0�IS�NOT�ASSIGNEDBRTCDPBLK‚EQU„2ŠPARAMETER�BLOCK�ADDRESS�NOT�IN�USER'S�ADDRESS�SPACE)RTCDTASK‚EQU„3’TARGET�TASK�DOES�NOT�EXIST,RTCDNTBL‚EQU„4’REQUIRED�TABLE�DOES�NOT�EXIST4RTCDTFUL‚EQU„5’TABLE�IS�FULL�-�NO�ROOM�FOR�NEW�ENTRYDRTCDDPRQ‚EQU„6ˆDUPLICATE�REQUEST-�FUNCTION�CANNOT�BE�PERFORMED�TWICE/RTCDNFND‚EQU„7’ENTRY�NOT�FOUND�IN�TABLE�OR�LIST)RTCDNMEM‚EQU„8’MEMORY�SPACE�NOT�AVAILABLECRTCDALOW‚EQU„9‰CALLER�DOES�NOT�HAVE�PERMISSION�TO�COMPLETE�FUNCTIONARTCDSTAT‚EQU„10‹STATE�OF�TARGET�TASK�NOT�VALID�FOR�THIS�DIRECTIVE=RTCDLGCF‚EQU„11�REQUEST�CONFLICTS�WITH�EXISTING�TABLE�ENTRIESBRTCDADR1‚EQU„12ŠADDRESS�OF�SOME�PARAMETER�NOT�IN�USER'S�ADDR�SPACEBRTCDADR2‚EQU„13ŠADDRESS�OF�SOME�PARAMETER�NOT�IN�USER'S�ADDR�SPACE'RTCDENAB‚EQU„14‘FUNCTION�IS�NOT�ENABLED;RTCDOPTƒEQU„15�INVALID�OPTIONS�SPECIFIED�IN�PARAMETER�BLOCK@RTCDPCNT‚EQU„16ŒINVALID�COUNT�OR�LENGTH�FIELD�IN�PARAMETER�BLOCK*é ééâˆPAGE1**************************************************�&.TRACE.EQ¤*1************************************************** *‡TRACE�TABLE*$*‡TRACE�TABLE�HEADER�-�FIRST�8�BYTES* ‰OFFSET‚0 TRCTBLƒEQUƒ*!TRCPTRƒDS.Lƒ1‡TABLE�ENTRY�POINTERTRCLNGƒDS.Lƒ1‡TABLE�LENGTHTRCENTRS�DS.Lƒ1‡TRACE�ENTRIES**ˆTRACE�ENTRIES�DEFINITIONS*ˆ20�BYTES�FOR�EACH�ENTRY%*ˆONE�20�BYTE�SET�FOR�EACH�TRACE�CALL* ‰OFFSET�0TRCCODE‚DS.W‚1‹TRACE�CODETRCSR„DS.W‚1‹STATUS�REGISTERTRCPC„DS.L‚1‹PROGRAM�COUNTERTRCA0„DS.L‚1‹A0TRCA6„DS.L‚1‹A6TRCD0„DS.L‚1‹D0"TRCTIME‚DS.L‚1‹TIME�(IN�MILLISECS)TRCTIM2‚DS.W‚1‹TIME�(MICROSECS)TRCENTSZ�EQUƒ*éééééëŠPAGE1************************************************* *�&.TST.EQ¦*1****************************************************„TASK�SEGMENT�TABLE*ˆCONTAINS‚PREAMBLE#*’MEMORY�MANAGMENT�LOAD�INFORMATION*’SEGMENT�ATTRIBUTE�BLOCK*)SEGMENTS‚EQU‚4‰NUMBER�OF�SEGMENTS�ALLOWED*!ŠOFFSET�0‡THIS�IS�AN�OFFSET�TABLE*TST‡DS.L�1‰!TST�DEBUG�TOOL"TSTNSEGS‚DS.B�1‰NUMBER�OF�SEGMENTS5TSTCSEGS‚DS.B�1‰NUMBER�OF�SEGMENTS�CURRENTLY�EXISTING*TSTLMMUƒDS.W�1‰INDEX�TO�LAST�MMU�LOAD�LINE4TSTLATTR‚DS.W�1‰INDEX�TO�LAST�SEGMENT�ATTRIBUTE�LINETSTSTATƒDS.W�1‹MMU�STATUS+TSTMMU„DS.W�4*SEGMENTS‚MMU�LOAD�INFORMATION/TSTATTRƒDS.W�4*SEGMENTS‚SEGMENT�ATTRIBUTE�BLOCK8TSTWTSKƒDS.L�1‰NAME�OF�TASK�WITH�WINDOW�TO�ADDRESS�SPACE%TSTLEN„EQU�*ƒLENGTH�OF�TASK�SEG�TABLE**‰TSTATTR�FIELDS*(TSTANAME‚EQU�TSTATTR-TSTMMUƒSEGMENT�NAME5TSTAATTR‚EQU�TSTATTR-TSTMMU+4�SEGMENT�ATTRIBUTE�FIELD2TSTAR1„EQU�TSTATTR-TSTMMU+6�MEMORY�TYPE�DESCRIPTOR/TSTAUCNT‚EQU�TSTATTR-TSTMMU+7�SEGMENT�USE�COUNT**‰TSTSTAT�FIELDS *9TSTASN„EQU�TSTSTATŠADDRESS�SPACE�NUMBER�FOR�TASK�(1�BYTE)*.*‰SEGMENT�ATTRIBUTE�BIT�DEFINITIONS�(TSTATTRF)*$SEGAUSED‚EQU„15†SEGMENT�ENTRY�IN�USE#SEGAROMƒEQU„14†SEGMENT�IS�READ�ONLY/SEGASHRƒEQU„13†SEGMENT�IS�SHARED�WITHIN�SESSION!SEGAGLBL‚EQU„12†SEGMENT�IS�GLOBAL1SEGAMMIO‚EQU„11†SEGMENT�IS�MEMORY�MAPPED�IO�SPACE'SEGAPROM‚EQU„10†SEGMENT�IS�PHYSICAL�ROM**‰TSTMMU�FIELDS*TSTLB…EQU�0ŠLOGICAL�BEGINTSTLE…EQU�2ŠLOGICAL�ENDTSTPO…EQU�4ŠPHYSICAL�OFFSET/TSTCTL„EQU�6ŠCONTROL�(NULL�BYTE�+�CONTROL�BYTE)**‰MMU�CONTROL�REGISTER�VALUES*!RAMCTL„EQU‚$01‡READ/WRITE�SEGMENT ROMCTL„EQU‚$03‡READ�ONLY‚SEGMENTéô9ŠPAGE1************************************************* *�&.UDR.EQ¦*1**************************************************%*ˆUSER�DEFINED�DIRECTIVE�TABLE�HEADER*!‰OFFSET„0‰THIS�IS�AN�OFFSET�TABLEUDR†DS.L†1‰!UDR„DEBUG�TOOL(UDRCNTƒDS.W†1‰NUMBER�OF�ENTRIES�IN�TABLE"UDRENTRY�EQU‡*‰OFFSET�TO�1ST�ENTRY**ˆUDR�ENTRY�DEFINITION*&‰OFFSET„0‰OFFSET�IS�FROM�ENTRY�POINTER1UDRSESS‚DS.L†1‰SESSION�OF�TASK�THAT�CREATED�ENTRYUDROPTƒDS.B†1‰OPTIONSUDREXIT‚DS.B†1‰EXIT�NUMBER&UDRADDR‚DS.L†1‰DIRECTIVE�ENTRY�ADDRESSUDRESIZ‚EQU‡*‰ENTRY�LENGTH**ˆUDR�OPTIONS�-�SET�IN�UDROPT*'UDROGLBL�EQU‡4‰IF�SET�-�ENTRY�IS�GLOBALéééééý‰NOLIST FHSPB„MACRO‰OPTƒNOCL,NOMEX<*ˆThis�macro�defines�an�FHS�parameter�block�in�storage.�Some?*ˆof�the�more�often�supplied�fields�are�accepted�as�parameters.*'*ˆ#1‚=�PARM�BLOCK�PREFIX�(3�BYTES�MAX).5*ˆ#2‚=�LOGICAL�UNIT�NUMBER�(5=TERMIN,6=TERMOUT,7=#PR)*ˆ#3‚=�VOLUME�ID*ˆ#4‚=�USER�ID*ˆ#5‚=�CATALOG*ˆ#6‚=�FILE�NAME*ˆ#7‚=�EXTENTION *ˆ#8‚=�LRECL*ˆ#9‚=�BLKSIZE*ˆ#A‚=�OPTIONS*ˆ#B‚=�SHARED�SEGMENT�OPTION&*ˆ#C‚=�SHARED�SEGMENT�STARTING�ADDRESS ‰OPT‡MEX,NOCL SPC 2)\1FHSPB‚ DS.L†0‰"\1"�-FHS-�PARAMETER�BLOCK\1CODEƒDCB.B…1,0‡Code\1CMD„DCB.B…1,0‡Command ‰IFC‡'\A',''\1OPT„DC.W†0‰Options‰ENDC ‰IFNC†'\A',''\1OPT„DC.W†\AˆOptions‰ENDC \1STATƒDC.B†0‰Status�upon�return ‰IFC‡'\2',''\1LU…DC.B†0‰Logical�unit‰ENDC ‰IFNC†'\2',''\1LU…DC.B†\2ˆLogical�unit‰ENDC ‰IFC‡'\3',''\1VOL„DCB.B…4,0‡Volume�ID‰ENDC ‰IFNC†'\3',''\1VOL„DC.B†'\3'†Volume�ID‰ENDC ‰IFC‡'\4',''\1USERƒDCB.B…2,0‡User�ID‰ENDC ‰IFNC†'\4',''\1USERƒDC.W†\4ˆUser�ID‰ENDC ‰IFC‡'\5',''\1CAT„DCB.B…8,'ˆ'�Catalog‰ENDC ‰IFNC†'\5',''\1CAT„DC.B†'\5'†Catalog‰ENDC ‰IFC‡'\6',''\1FILEƒDCB.B…8,'ˆ'�File�name‰ENDC ‰IFNC†'\6',''\1FILEƒDC.B†'\6'†File�name‰ENDC ‰IFC‡'\7',''\1EXT„DCB.B…2,'‚'„Extention‰ENDC ‰IFNC†'\7',''\1EXT„DC.B†'\7'†Extention‰ENDC‰DC.B†$0,$0…-Reserved-\1WRCDƒDC.B†$0ˆWrite�code\1RECDƒDC.B†$0ˆRead‚code ‰IFC‡'\8',''\1LRECL‚DCB.B…2,0‡Record�length‰ENDC ‰IFNC†'\8',''\1LRECL‚DC.W†\8ˆRecord�length‰ENDC ‰IFC‡'\9',''\1BLKSZ‚DCB.B…4,0‡Block�size‰ENDC ‰IFNC†'\9',''\1BLKSZ‚DC.L†\9ˆBlock�size‰ENDC‰IFC‡'\B','SS=YES'/\1SS1ST‚DC.L†\CˆShared�segment�STARTING�address,\1SSEND‚DC.L†0‰Shared�segment�ENDINGƒaddress"\1SSNAM‚DC.L†0‰Shared�segment�NAME‰ENDC‰ENDM   IOSPB„MACRO‰OPTƒNOCL,NOMEX<*ˆThis�macro�defines�an�IOS�parameter�block�in�storage.�Some?*ˆof�the�more�often�sullpied�fields�are�accepted�as�parameters.*'*ˆ#1‚=�PARM�BLOCK�PREFIX�(3�BYTES�MAX).*ˆ#2‚=�LOGICAL�UNIT�NUMBERbcc*ˆ#3‚=�OPTIONS*ˆ#4‚=�RECORD�NUMBER*ˆ#5‚=�START�OF�BUFFER*ˆ#6‚=�ENDƒOF�BUFFER ‰OPT‡MEX,NOCL SPC 2)\1IOSPB‚DS.L†0‰"\1"�-IOS-�PARAMETER�BLOCK\1IOCOD‚DCB.B…1,0‡Code\1FUNCD‚DCB.B…1,0‡Function�code ‰IFC‡'\3',''\1IOOPT‚DCB.B…2,0‡Options‰ENDC ‰IFNC†'\3',''\1IOOPT‚DC.W†\3ˆOptions‰ENDC$\1IOSTA‚DCB.B…1,0‡Status�upon�return ‰IFC‡'\2',''\1IOLUƒDCB.B…1,0‡Logical�unit‰ENDC ‰IFNC†'\2',''\1IOLUƒDC.B†\2ˆLogical�unit‰ENDC‰DC.W†0‰-Reserved- ‰IFC‡'\4',''\1IORNO‚DCB.B…4,0‡Record�number‰ENDC ‰IFNC†'\4',''\1IORNO‚DC.L†\4ˆRecord�number‰ENDC ‰IFC‡'\5',''!\1IOSOB‚DCB.B…4,0‡Start�of�buffer‰ENDC ‰IFNC†'\5',''\1IOSOB‚DC.L†\5ˆStart�of�buffer‰ENDC ‰IFC‡'\6',''\1IOEOB‚DCB.B…4,0‡End�of�buffer‰ENDC ‰IFNC†'\6',''\1IOEOB‚DC.L†\6ˆEnd�of�buffer‰ENDC&\1IOSLL‚DC.L†0‰Length�of�data�transfer ‰IFC‡'\7',''!\1IOCAD‚DC.L†0‰Completion�address‰ENDC ‰IFNC†'\7',''"\1IOCAD‚DC.L†\7ˆCompletion�address‰ENDC‰ENDM    REGS…MACRO‰OPT�NOCL,NOMEX9*********************************************************5*‚The�PREFIX�for�the�register�labels�is�provided�by„*7*‚appending�the�CHARACTER�to�the�"REGS"�macro�name...‚**·*3*‚A�description�can�be�provided�as�a�parameter...†**·* *‚Example:­**�REGS.E‚Ž**·*9********************************************************* ‰OPT�NOCL,MEX#\0AREAƒDS.L†0‰Register�save�area�\1*‡-Data�registers-\0D0…DC.L†0‰D0\0D1…DC.L†0‰D1\0D2…DC.L†0‰D2\0D3…DC.L†0‰D3\0D4…DC.L†0‰D4\0D5…DC.L†0‰D5\0D6…DC.L†0‰D6\0D7…DC.L†0‰D7*‡-Address�registers-\0A0…DC.L†0‰A0\0A1…DC.L†0‰A1\0A2…DC.L†0‰A2\0A3…DC.L†0‰A3\0A4…DC.L†0‰A4\0A5…DC.L†0‰A5\0A6…DC.L†0‰A6\0A7…DC.L†0‰A7‰ENDM  ALLOCATE MACRO4‰LEA‡\1FHSPB,A0Š>..A0�=�address�of�\1�FHS�parm�block1‰MOVE.W„#$0080,(A0)‰>..Build�FHS�ALLOCATE�command&‰TRAP†#3’>..Issue�the�ALLOCATE�command SPC 1‰ENDM   ASSIGNƒMACRO4‰LEA‡\1FHSPB,A0Š>..A0�=�address�of�\1�FHS�parm�block/‰MOVE.W„#$0040,(A0)‰>..Build�FHS�ASSIGN�command$‰TRAP†#3’>..Issue�the�ASSIGN�command SPC 1‰ENDM   GET†MACRO4‰LEA‡\1IOSPB,A0Š>..A0�=�address�of�\1�IOS�parm�block-‰MOVE.W„#$0001,(A0)‰>..Build�IOS�READ�command"‰TRAP†#2’>..Issue�the�RE AD�command SPC 1‰ENDM PUT†MACRO4‰LEA‡\1IOSPB,A0Š>..A0�=�address�of�\1�IOS�parm�block.‰MOVE.W„#$0002,(A0)‰>..Build�IOS�WRITE�command#‰TRAP†#2’>..Issue�the�WRITE�command SPC 1‰ENDM  UPDATEƒMACRO4‰LEA‡\1IOSPB,A0Š>..A0�=�address�of�\1�IOS�parm�block/‰MOVE.W„#$0008,(A0)‰>..Build�IOS�UPDATE�command$‰TRAP†#2’>..Issue�the�UPDATE�command SPC 1‰ENDM  CLOSE„MACRO4‰LEA‡\1FHSPB,A0Š>..A0�=�address�of�\1�FHS�parm�block.‰MOVE.W„#$0004,(A0)‰>..Build�FHS�WRITE�command#‰TRAP†#3’>..Issue�the�CLOSE�command SPC 1‰ENDM   ISIT…MACRO ‰IFC‡'\0',''2‰MOVE.W„\1,D0�>..D0�=�Data�to�be�compared�(ARG#�1)‰CMP.W…\2,D0�>..ARG#2�vs�ARG#1‰ENDC ‰IFNC†'\0',''3‰MOVE.\0ƒ\1,D0�>..D0�=�Data�to�be�compared�(ARG#�1)‰CMP.\0„\2,D0�>..ARG#2�vs�ARG#1‰ENDC SPC 1‰ENDM   XFER…MACRO‰IFNC†'\3','D0'4‰MOVE.L„\3-1,D0�>..D0�=�The�number�of�".\0"�to�move.‰ENDC‰IFNC†'\1','(A0)'!‰LEA‡\1,A0�>..A0�=�"FROM"�address‰ENDC‰IFNC†'\2','(A1)'‰LEA‡\2,A1�>..A1�=�"TO"ƒaddress‰ENDC ‰IFC‡'\0',''*XFER\@ƒMOVE.W„(A0)+,(A1)+‰>..Move�one�".W"‰ENDC ‰IFNC†'\0','',XFER\@ƒMOVE.\0ƒ(A0)+,(A1)+‰>..Move�one�".\0"‰ENDC‰DBRA†D0,XFER\@‹>..Done? SPC 1‰ENDM    PASSLU6‚MACRO1‰LEA‡LU6\@,A0Œ>..Load�register�A0�with�PB�address%‰TRAP†#3’>.."Receive"�logical�unit�#6&‰BRA‡CON\@�>..Branch�around�parm�block SPC 1,LU6\@„DSˆ0“>..Logical�unit�modify�parm�block)‰DC.W†$0110,$8001,$0006,$0600,'SYMB','\1' SPC 2CON\@„DSˆ0“>..Continue‰ENDM  TAB†MACRO ‰IFC‡'\0','0' * LS-Nibble=* .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F . MS-Nibble*‰ENDC7* \1 \2 \3 \4 \5 \6 \7 \8 \9 \A \B \C \D \E \F \G . .\0‰NOLIST0‰DC.L†$\1\2\3\4,$\5\6\7\8,$\9\A\B\C,$\D\E\F\Gƒ\0‰LIST ‰IFC‡'\0','F'*=* .0 .1 .2 .3 .4 .5 .6 .7 .8 .9 .A .B .C .D .E .F . MS-Nibble * LS-Nibble‰ENDC‰ENDM  ‰LISTéééééééŠPAGE1************************************************* *�&.USM.EQ¦*1************************************************** *ˆ**�EQUATES* ŠOFFSET�0STTTID„DS.Lƒ1’TERMINAL�I.D.STTSES„DS.Lƒ1’SESSION�NO.%STTINC„EQU„*-STTTID‹LENGTH�OF�ENTRIE S ŠOFFSET�0BATSTATƒDS.Wƒ1‰STATUSBATUSRNO‚DS.Wƒ1‰USER�NO.BATSES„DS.Lƒ1‰SESSION�NUMBER**‚DEFAULT�VALUES*$SYSVOL„EQU„'„'„SYSTEM�VOLUME�DEFAULT!DFLTUNOƒEQU„0‰DEFAULT�USER�NUMBER DFLTCAT1‚EQU„'„'„DEFAULT�CATALOG DFLTCAT2‚EQU„'„'„DEFAULT�CATALOG*)EETPNAMƒEQU„'&EET'„EET�TASK�AND�PSCT�NAME(EETDNAMƒEQU„'.EET'„EET�DATA�SEGMENT�NAME)SCTPNAMƒEQU„'&SCT'„SCT�TASK�AND�PSCT�NAME(SCTDNAMƒEQU„'.SCT'„SCT�DATA�SEGMENT�NAME-BCTPNAMƒEQU„'&BCT'„BATCH�CONTROL�SESSION�TASK)EETSESNO‚EQU„2‰SESSION�NUMBER�OF�EET�TASK"STKLEN„EQU„96ˆEET/SCT�STACK�LENGTH0TIBASG„EQU„25ˆTERMINAL�ASSIGNED�(FHS�EQUATE)�BITCENTURYƒEQU„1900IYEAR…EQU„80ˆINITIAL�YEAR*'SCTINBLƒEQU„160‡CDF�INPUT�BUFFER�LENGTH4SCTLUN„EQU„0‰LUN�FOR�SCT�INTERACTIVE�TERMINAL�DIALOG'$,048"<@DH1MAXTSKNO‚EQU„8‰MAX�NO.�ASQ�ENTRIES�QUEUED�FOR�SCT-MAXVNTLN‚EQU„26ˆMAX�LENGTH�OF�SCT'S�ASQ�ENTRY+XOFF†EQU„$5E‡UP�ARROW�(HALT�TERMINAL�INPUT)'NOSUB…EQU„$7E‡NO�SUBSTITUTION�CHARACTER)IPRISCTƒEQU„128‡INITIAL�PRIORITY�SCT�TASK'LPRISCTƒEQU„255‡LIMIT�PRIORITY�SCT�TASK(IPRIBCTƒEQU„64ˆINITIAL�PRIORITY�BCT�TASK'LPRIBCTƒEQU„127‡LIMIT�PRIORITY�BCT�TASK**ˆSESSION�OPTION�BITS�(D7)*?BTCDFILE‚EQU„31ˆ1=>CMD�FILE�0=>CMD�DEVICE�(PROMPT/INPUT�SCTLUN)%BTLDFILE‚EQU„30ˆ1=>LDF�FILE�0=>DEVICE*BTREAD5ƒEQU„29ˆ1=READ�LUN�5,�0=>READ�LUN�0;BTSUBPOS‚EQU„28ˆ1=>POSITIONAL�ARGUMENT�SUBSTITUTION,�0=>TAG'BTDTIMEƒEQU„27ˆ1=>REQUEST�DATE�AND�TIME:BTREREAD‚EQU„26ˆ1=>RE-READ�THE�CURRENT�RECORD,0=>READ�NEXTUNSOLICITED�BREAK�SINCE�LAST�COMMAND�INPUTBTBATCHƒEQU„24ˆ1=>BATCH�MODE3BTBATACK‚EQU„23ˆ1=>RESPONSE�TO�QUEUE�BATCH�RECEIVED#BTBATNAK‚EQU„22ˆ1=>BATCH�QUEUE�FULL&BTCMDABT‚EQU„21ˆ1=>CHAIN�ABORT�COMMAND%BTSUBSER‚EQU„20ˆ1=>SUBSTITUTION�ERROR+BTENDSKP‚EQU„19ˆ1=>�READ�UNTIL�/ENDIF�FOUNDABTFORSKP‚EQU„18ˆ1=>�READ�UNTIL�/ENDFOR�FOUND�(USED�WITH�BTENDSKP)&BTARGNOE‚EQU„17ˆ1=>�TOO�MANY�ARGUMENTS*‰EQU„16ˆNOT�ASSIGNED* *ˆ**�SYSTEM�OPTION�BITS�(SYSOPT)*ASOSYSMSG‚EQU„1‰1=>INVOKE�PRIV.UPSYSTEM.NW�CHAIN�FILE�ON�SESSION�1/SOBATOLY‚EQU„0‰1=>BATCH�MODE�ONLY�LIST�IN�FORCE2********* FOLLOWING CLEARED EACH COMMAND *********ABTSLASHƒEQU„7‰1=CHAIN�CONDTIONAL�(INHIBIT�SUBSITUTION�ERROR�MSGS)BTEOF…EQU„6‰1=>EOF�ENCOUNTERD%BTCHNABT‚EQU„5‰1=>ABORT�IF�CHAIN�MODESUBSTITUTION�PERFORMED,�0=>NO�SUBSTITUTION'BTMSGI„EQU„3‰1=>INHIBIT�TRAP�1�MESSAGES5BTLODGOƒEQU„2‰1=>LOAD�ONLY�(NO�START)�0=>LOAD�&�STARTBTATSIGN‚EQU„1‰1=>"@"�COMMAND(BTECHO„EQU„0‰1=>�INPUT�WAS�ECHOED�TO�LDF*O******************************************************************************* *ˆSHAREOPT:�OPTIONS�A-O�BIT�MASK3*ˆ.ARG�SEGMENT�(LOCALLY/SESSION�SHARED�SEGMENT)+$FEO*******************************************************************************2********* FOLLOWING SET BY 'OPT' COMMAND *********5BTCHNOVR‚EQU„15ˆO:1=>�OVERIDE�BTCHNABT�(IGNORE�ERROR)ABTNOECHO‚EQU„14ˆN:1=>NO�ECHO�OF�CDF,�OR�RESULTS�OF�ARG,DEF,OR�OPT9BTPRTSKP‚EQU„13ˆM:1=>PRINT�CHAIN�CONDITIONALS�DURING�SKIP5BTPRTIFƒEQU„12ˆL:1=>�PRINT�CHAIN�CONDITIONAL�COMMANDSDBTNOLOHI‚EQU„11ˆK:1=>INHIBIT�TRANSLATING�LOWER�TO�UPPER�CASE�ON�READ?BTOPTJ„EQU„10ˆJ:1=>�INHIBIT�SBARG�ECHO�INPUT�LINE�IN�CHAIN�MODE)BTABTDMP‚EQU„9‰I:1=>�ABORT�DUMP�REQUESTED9BTBRKSTP‚EQU„8‰H:1=>STOP�ALL�TASKS�ON�BREAK,�0=>TERMINATEBTOPTG„EQU„7‰G:NOT�ASSIGNEDBTOPTF„EQU„6‰F:NOT�ASSIGNEDBTOPTE„EQU„5‰E:NOT�ASSIGNED@BTOPTD„EQU„4‰D:1=>�ONLY�DEFAULT�TASK�TERMINATED/STOPPED�ON�BREAKBTOPTC„EQU„3‰C:NOT�ASSIGNED&BTBELL„EQU„2‰B:1=>�RING�BELL�ON�PROMPT,BTOPTA„EQU„1‰A:1=>�ABORT�CHAIN�FILE�IF�RA<>0O********************************************************************************(LDRDIR„EQU„1’TRAP�4�-�FUNCTION�1:�LOADER*+*‚LOADER�RETURN�CONDITIONS�TO�WAITING�TASK:#*‚Z�=�1,�D0�=�0�=>�LOAD�SUCCESSFULL #*†0,�D0�=�ERROR�CODE�=>�LOAD�FAILED7*‚A0�->�PARAMETER�BLOCK,�TCB�NOW�AS�ALLOCATED�BY�LOADER* *‚ABORT�CODES)ABTBRK„EQU„$E0000000�DIAGNOSTIC�FOR�BREAK1ABTNOBRK‚EQU„$FFFF0000�DIAGNOSTIC�ABORT�NOT�BREAK(ABRTREQƒEQU„$8006…TERMINAL�ABORT�REQUEST0AABRTREQ‚EQU„'8006'„ASCII�TERMINAL�ABORT�REQUEST"ABTNOMEM‚EQU„$8008…NO�MEMORY�SPACE"BRKABRTƒEQU„$8009…BREAK�ABORT�CODEEETDIAGN‚EQU„$FFFF0000 EETCODEƒEQU„$8002…ABORTED�BY�EET* *ˆ**�EQUATES�FOR�SECURITY�OPTION*PWVOL…EQU„'„'„PASSWORD�VOLUME PWUSR…EQU„0‰PASSWORD�USER�NUMBER"PWCAT1„EQU„'PRIV'„PASSWORD�CATALOGPWCAT2„EQU„'„'„CATALOG�2PWFIL1„EQU„'ACCO'„FILE�NAMEPWFIL2„EQU„'UNT�'„FILE�2PWEXT…EQU„'PW'†PASSWORD�EXTENT PWPROT„EQU„$00FF…OWNER�READ�ONLY!PWRECL„EQU„16ˆTOTAL�RECORD�LENGTHPWKSIZ„EQU„4‰KEY�SIZEPWFBLK„EQU„0‰FAB,BLOCK*"*ˆ**�EQUATES�FOR�ACCOUNTING�OPTION* OWRECL„EQU„64OWEXT…EQU„'OW'OWKSIZ„EQU„4‰KEY�SIZE'OWDEPTSƒEQU„4‰START�OF�DEPARTMENT�FIELD$OWDEPTCƒEQU„8‰DEPARTMENT�FIELD�COUNT"OWNAMESƒEQU„12ˆSTART�OF�NAME�FIELDOWNAMECƒEQU„20ˆNAME�FIELD�COUNT+OWLLOFFS‚EQU„32ˆSTART�OF�LAST�LOG�OFF�FIELD'OWLLOFFC‚EQU„8‰LAST�LOG�OFF�FIELD�COUNT-OWCTIMSƒEQU„40ˆSTART�OF�CUMULATIVE�TIME�FIELD)OWCTIMCƒEQU„8‰CUMULATIVE�TIME�FIELD�COUNT+OWSCNTSƒEQU„48ˆSTART�OF�SESSION�COUNT�FIELD(OWSCNTCƒEQU„4‰SESSTION�COUNT�FIELD�COUNT#OWRESTSƒEQU„52ˆSTART�OF�RESET�FIELDOWRESTCƒEQU„8‰RESET�FIELD�COUNT***<*ˆERROR�MESSGE�HANDLER�EQUATES�FOR�NON-TRAP�RELATED�MESSAGES**’AS�OF�9/1/81**'EM_STRTS‚EQU„$300†START�SESSION�MESSAGE%EM_ENDSS‚EQU„$301†END�SESSION�MESSAGEEM_BREAK‚EQU„$302†BREAK"EM_DFMSG‚EQU„$303†DEFAULTS�MESSAGE!EM_OPTMS‚EQU„$304†OPTIONS�MESSAGEEM_RETRN‚EQU„$305†LEFT�MARGIN(EM_PLUG1‚EQU„$306†DISPLAY�FROM�PLUG�POOLEM_LODED‚EQU„$307†TASK�LOADED,EM_LODEB‚EQU„$308†TASK�LOADED�BINARY�SESSIONEM_STOPƒEQU„$309†TASK�STOPPED-EM_STOPB‚EQU„$30A†TASK�STOPPED�BINARY�SESSIONEM_CONTƒEQU„$30B†TASK�CONTINUED/EM_CONTB‚EQU„$30C†TASK�CONTINUED�BINARY�SESSION!EM_TERMD‚EQU„$30D†TASK�TERMINATED0EM_FINIB‚EQU„$30E†TASK�TERMINATED�BINARY�SESSION!EM_TERMT‚EQU„$30F†TASK�TERMINATED-EM_TERMB‚EQU„$310†TASK�ABORTED�BINARY�SESSIONEM_REJCT‚EQU„$311†LOGON�REJECT$EM_ARGXƒEQU„$312†"<"NOT�EQUAL�TO�">"!EM_CTION‚EQU„$313†CAUTION:USER=�0&EM_PRIVƒEQU„$314†PRIVELEGED�USER�ERROR"EM_CMDXƒEQU„$315†COMMAND�NOT�FOUND!EM_VOLXƒEQU„$316†VOLUME�NOT�FOUND$EM_ARGNO‚EQU„$317†TOO�MANY�ARGUMENTS EM_NTASK‚EQU„$318†TASK�NOT�FOUND+EM_NONOƒEQU„$319†TASKNAME�INVALID/PROTECTED"EM_LUNER‚EQU„$31A†LUN�NOT�ASSIGNED*EM_NCONT‚EQU„$31B†TASK�CAN�NOT�BE�CONINUED$EM_ALSTR‚EQU„$31C†START�INDIVIDUALLY$EM_NESTƒEQU„$31D†NESTING�LEVEL�ERROR*EM_NROOM‚EQU„$31E†RETURN�STACK�SPACE�ERROR)EM_NDEVƒEQU„$31F†DEVICE�NOT�ALLOWED�ERROR*EM_IFLEV‚EQU„$320†IF�LEVEL�EXECEEDED�ERROR!EM_ENDIF‚EQU„$321†TOO�MANY�ENDIFS&EM_SYNTX‚EQU„$322†CHAIN�COMMAND�SYNTAX)EM_REGXƒEQU„$323†DISPLAY�PSUEDO�REGISTERS#EM_NOBAT‚EQU„$324†BATCH�NOT�ALLOWED"EM_NSELF‚EQU„$325†SELF�NOT�ALLOWED%EM_BASER‚EQU„$326†BATCH�SESSION�ERROR)EM_BASES‚EQU„$327†BATCH�SESSION�NOT�FOUND$EM_BANUM‚EQU„$328†USER�NO.�NOT�FOUND+EM_NOTBA‚EQU„$329†NOT�ALLOWED�IN�BATCH�MODE*EM_QBATC‚EQU„$32A†BATCH�JOB�QUEUED�MESSAGE"EM_QRUNƒEQU„$32B†BATCH�JOB�RUNNING EM_QDONE‚EQU„$32C†BATCH�JOB�DONE"EM_QFULL‚EQU„$32D†BATCH�QUEUE�FULL%EM_BABRT‚EQU„$32E†BATCH�JOB�CANCELLED"EM_NOREC‚EQU„$32F†RECORD�NOT�FOUND$EM_NONUM‚EQU„$330†USER�NO.�NOT�FOUND"EM_NUSER‚EQU„$331†INVALID�USER�NO.#EM_NCHAN‚EQU„$332†NOT�IN�CHAIN�MODE"EM_VSIZE‚EQU„$333†VALUE�SIZE�ERROR!EM_FILNA‚EQU„$334†FILE�DESCRIPTOREM_NOCHG‚EQU„$335†NO�CHANGE EM_DFLTV‚EQU„$336†DEFAULT�VOLUMEEM_OPTER‚EQU„$337†OPTION%EM_BONLY‚EQU„$338†NOT�ALLOWED�ON�LINEEM_INVLU‚EQU„$339†INVALID�LUN%EM_FDMIS‚EQU„$33A†FILE/DEVICE�MISSING#EM_PRMIT‚EQU„$33B†ACCESS�PERMISSION!EM_RVRSE‚EQU„$33C†VALUES�REVERSED EM_PTASK‚EQU„$33D†PROTECTED�TASK EM_CMDER‚EQU„$33E†COMMAND�SYNTAX%EM_FLDSZ‚EQU„$33F†FIELD�SIZE�EXCEEDED'EM_NFILE‚EQU„$340†FILE�WAS�NOT�ASSIGNED ,EM_NOCVT‚EQU„$341†NUMERICAL�CONVERSION�ERROR*ééé‰PAGE1************************************************* *�&.UST.EQ¦*1***************************************************ˆUSER�SEMAPHORE�TABLE* ‰OFFSET�0UST†DS.L„1†!UST„DEBUG�TOOL)USTNEXT‚DS.L„1†LINK�TO�NEXT�TABLE�SEGMENT*USTNSEG‚DS.W„1†NUMBER�OF�SEGMENTS�IN�TABLE.USTNPAGE�DS.W„1†NUMBER�OF�PAGES�-�THIS�SEGMENT$USTMENT‚DS.W„1†MAX�NUMBER�OF�ENTRIES(USTCENT‚DS.W„1†CURRENT�NUMBER�OF�ENTRIES%USTFENT‚DS.L„1†ADDRESS�OF�FIRST�ENTRY$USTENTRY�EQU…*†OFFSET�TO�FIRST�ENTRY**ˆUST�ENTRY�DEFINITION* ‰OFFSET�0&USTTNAME�DS.L„1†ORIGINATOR'S�TASK�NAME+USTSESSN�DS.L„1†ORIGINATOR'S�SESSION�NUMBERUSTSNAME�DS.L„1†SEMAPHORE�NAME:USTUCNT‚DS.W„1†#�USERS�OF�SEMAPHORE�OR�-1�IF�POINTER�ENTRY:USTXCNT‚DS.B„1…INITIAL�COUNT�OR�COUNT�OF�WAITS�AND�SIGNALS(USTTYPE‚DS.B„1…SEMAPHORE�TYPE�(1,2�OR�3)USTSEMƒDS.W„3†SEMAPHORE ‰OFFSET�*-6*USTSPTR‚DS.L„1†POINTER�TO�ACTUAL�SEMAPHORE‰DS.W„1†UNUSEDUSTEL„EQU…*†ENTRY�LENGTHééééLO*******************************************************************************O**********************************************************************************É***/***�UTILITY.MC�--�MACROS�OF�GENERAL�UTILITY’******É***5***†ENVIRONMENT:‚In�68000�assembly�language�code.•******É***@***†FUNCTION:‚These�macros�are�of�a�general�nature.‚They�are‰***A***‰intended�to�be�a�collection�of�tools�useful�in�any�appli-‡******‰cation.¹******É******†NOTES:½******É***O*******************************************************************************O******************************************************************************* *,*‚Revision�history�(add�new�changes�to�top).*…Date†Author‰ChangesG*…--------‚-------------‚----------- -----------------------------------'*†1/�6/83‚Steve�FranckƒInitial�writing.*ŠPAGE*.*‚Macros�to�push�and�pop�using�the�stack�(A7).*‚e.g.,„PUSH.B�#'*'ƒorƒPOP.L�D0* PUSH†MACROŠMOVE.\0�\1,-(A7)ŠENDM POP‡MACROŠMOVE.\0�(A7)+,\1ŠENDM *A*‚Macros�to�save�and�restore�registers�using�the�stack,�as�at�theG*‚beginning�of�a�subroutine.‚Valid�sizes�are�.L�and�.W;�defaults�to�.L.'*‚SAVE�pushes�registers�onto�the�stack.I*‚RENEW�gets�registers�from�the�stack�without�changing�the�stack�pointer.'*‚RESTORE�pops�registers�off�the�stack.%*‚e.g.,„SAVE�D0-D3/A1…RESTORE.W�D3-D5* SAVE†MACRO ŠIFC„'\0',''ŠMOVEM.L�\1,-(A7)ŠMEXITŠENDCŠMOVEM.\0�\1,-(A7)ŠENDM RENEW…MACRO ŠIFC„'\0',''ŠMOVEM.L�(A7),\1ŠMEXITŠENDCŠMOVEM.\0�(A7),\1ŠENDM RESTOREƒMACRO ŠIFC„'\0',''ŠMOVEM.L�(A7)+,\1ŠMEXITŠENDCŠMOVEM.\0�(A7)+,\1ŠENDM *A*‚Macro�to�reserve�storage�in�an�offset�block.‚Invoke�as�follows:*ŒRESERVE.<#�of�bytes>‚