IMD 1.17: 11/11/2014 12:51:22 82VKXBVERDOS B* VERSADOS/RMS68K OBJECT 4.3 SN=39358 (EQUATES) 6 OF 11  BT0682VKXBVERDOS 0420¿-*…THISEQUATETABLECONTAINSALLINFORMATIONPERTAININGTOTHE?*ƒGPIBI/ODRIVERFORTHEVERSADOS4.0ANDABOVEI/OSCHEME.IT>*ƒCONTAINSINTERNALHARDWAREEQUATES,CCBSTORAGEALLOCATIONS,>*ƒANDENTRIESSPECIFICTOTHEOPERATIONANDMAINTENANCEOFTHE*ƒIEEE-488BUS.*E********************************************************************* *žHISTORYž*E**********************************************************************(*…24JAN83…STEVEFEITELSON/CHRISMARRINC*ƒINITIALEQUATEFILE.EQUATESAREBROKENOUTFROMTHEMAINSOURCE.@*ƒALLGENERALSYSTEMEQUATESFORTHEDRIVERDEFINEDTHUSFARARE *ƒPRESENT.* PAGEE**********************************************************************E**********************************************************************@*‚THEFOLLOWINGDEFINESTHEQUEUINGSTRUCTUREANDTHEASSOCIATED;*‚POINTERSFORHANDLINGCOMMANDFLOWFORTHISCHANNEL.ONLYB*‚ONEQUEUEENTRYPERDEVICECONNECTEDTOTHISCHANNELISALLOWED.?*‚THEREFORETHEMAXIMUMNUMBEROFQUEUEDENTRIESIS15(ONEFORD*‚EACHDEVICE).THEQHEADPOINTERISAPOINTERTOTHENEXTAVAILABLE<*‚QUEUEENTRYLOCATIONANDQTAILISAPOINTERTOTHECURRENT*‚OPERATIONBEINGEXECUTED.*%*ˆEACHENTRYCONSISTSOFSEVENITEMS:**Œ(1)COMMANDSTATUS*Œ(2)DCBPOINTER*Œ(3)IOSPBPOINTER%*Œ(4)PRIMARYBUFFERPHYSICALADDRESS5*Œ(5)SECONDARY/CONFIGURATIONBUFFER‚PHYSICALADDRESS*Œ(6)PRIMARYBUFFERLENGTH*Œ(7)SECONDARYBUFFERLENGTH*3*ˆIFQTAILANDQHEADAREEQUAL,THEQUEUEISEMPTY.*E********************************************************************* * *‚OFFSETSWITHINA'GPIBQ'ENTRY* OFFSET 06CSTQOFSTDS.W1‡FIRST‚ENTRYISCOMMANDSTATUSOFENTRY+DCBQOFSTDS.L1‡SECONDENTRYISDCBPOINTER,IPBQOFSTDS.L1‡THIRD‚ENTRYISIOSPBPOINTER7(20>8=@<HGP:X9`4h/p1xL€" ***************************************************************3*ˆTHEFOLLOWINGAREEQUATESTHATBREAKDOWNSOMEOF9*„THECONFIGURATIONPARAMETERSINTOTHEIRINDIVIDUALBYTE*„ORWORDMEANINGS.*@**************************************************************** *@*‚BREAKDOWNEQUATESOF'IOSEORR'-ENDOFRECORDCHARACTERISTICS*'WEORFMTEQUIOSEORR„WRITEEORFORMATTED%WEORIMGEQUIOSEORR+1‚WRITEEORIMAGE(REORFMTEQUIOSEORR+2‚READEORFORMATTED$REORIMGEQUIOSEORR+3‚READEORIMAGE*;*‚BREADOWNEQUATESFOR'IOSEOSC'-ENDOFSTRINGCHARACTERS*,IOSEOSWEQUIOSEOSC„ENDOFSTRINGWRITECHAR-IOSEOSREQUIOSEOSC+1‚ENDOFSTRINGREADCHAR*5*‚BREAKDOWNEQUATESFORFIXEDTRANSFERLENGTH-WRITE*2IOSFBWFEQUIOSFBWX„FIXEDLENGTHWRITE-FORMATTED0IOSFBWIEQUIOSFBWX+2‚FIXEDLENGTHWRITE-IMAGE*4*‚BREAKDOWNEQUATESFORFIXEDTRANSFERLENGTH-READ*1IOSFBRFEQUIOSFBRX„FIXEDLENGTHREAD-FORMATTED/IOSFBRIEQUIOSFBRX+2‚FIXEDLENGTHREAD-IMAGE 2MAXDEVNMEQU14‚MAXIMUMDEVICENUMBERONACHANNEL‰PAGEF************************************************************************”MVME-300REGISTERDEFINITION*F***********************************************************************H*‚THEFOLLOWINGARETHERELATIVEOFFSETSOFTHE32WORDGPIBCREGISTERS.B*‚THEEQUATESARESETUPSUCHTHATTHEYACCESSTHEODDBYTEOFTHE*‚THEWORDOFFSET.*#MARLSBƒEQU1ˆLSBOFMEMORYADDRREG&MARISBƒEQU3ˆINTERMEDIATEMEMADDRREGMARMSBƒEQU5ˆMSBMEMADDRREG)BCNTLSB‚EQU7ˆDMATRANSFERBYTECOUNTLSB)BCNTMSB‚EQU9ˆDMATRANSFERBYTECOUNTMSB%GPIBRSETEQU11‡RESETGPIBCINTERFACE!ADDRMOD‚EQU13‡ADDRMODEREGISTER)CNTRSTATEQU15‡INTERFACESTATUSREGISTER*#RELCNTƒEQU17‡BUSRELEASECOUNTREG!EOSCOMP‚EQU19‡EOSCOMPCHARACTER&UNICMDƒEQU21‡UNILINECOMMANDREGISTERFIFODAT‚EQU23‡FIFODATAREG* INTR0„EQU33‡TMS9914AINTRREG0 INTR1„EQU35‡TMS9914AINTRREG1ADDRSTATEQU37‡ADDRSTATUSREG$BUSSTAT‚EQU39‡BUSSTATUSREG(READ)+AUXCMDƒEQU39‡AUXILIARYCOMMANDREG(WRITE)ADDRREG‚EQU41‡ADDRSWITCHREGSERLPOLLEQU43‡SERIALPOLLREG,CMDPTHRUEQU45‡COMMANDPASSTHRUREG(READ))PARLPOLLEQU45‡PARALLELPOLLREG(WRITE)DATAIOƒEQU47‡DATAI/OREG*-CONTREG0EQU49‡VBIMCONTROLREG0(TMS9914A)1CONTREG1EQU51‡VBIMCONTROLREG1(I/OCOMPLETE).CONTREG2EQU53‡VBIMCONTROLREG2(BUSERROR)-CONTREG3EQU55‡VBIMCONTROLREG3(NOTUSED)VECTREG0EQU57‡INTRVECTOR1VECTREG1EQU59‡INTRVECTOR2VECTREG2EQU61‡INTRVECTOR3VECTREG3EQU63‡INTRVECTOR4 PAGE*5*„EQUATESFORTHEMVME-300STATUS'CNTRSTAT'REGISTER*FIEMPEQU0ŒFIFOEMPTY8EODONEEQU1‹EOI/EOSHASBEENDETECTEDUPONI/OCOMPLETEFIFULEQU2ŒFIFOFULL$BCRDNEQU3ŒBYTECOUNTREGISTERDONE%GPIBFAILEQU4‰GPIBFAILURELEDISON&BUSDMAEREQU5‰GPIBDMAERROROCCURRED*<*„EQUATESFORTHEMVME-300UNILINE'UNICMD'COMMANDREGISTER*"DMAWRITEEQU0ŠDMAWRITEOPERATIONEOSBITƒEQU1ŠEOSBITENABLE DMAREAD‚EQU2ŠDMAREADOPERATIONEOIBITƒEQU3ŠEOIBITENABLE)FAILONƒEQU4ŠLITEFAILLEDONFRONTPANEL$RSTDMAƒEQU5ŠHALTDMAIFINPROGRESS*2*‚BITEQUATESFORTHETMS-9914'ADDRSTAT'REGISTER*#TADS_BEQU1‡TALKERADDRESSEDSTATE%LADS_BEQU2‡LISTENERADDRESSEDSTATE6TPAS_BEQU3‡TALKERPRIMARYADDRESSEDSTATE(SECADDR)8LPAS_BEQU4‡LISTENERPRIMARYADDRESSEDSTATE(SECADDR)ATN_B‚EQU5‡ATTENTIONLINE LLO_B‚EQU6‡LOCALLOCKOUTSTATEREM_B‚EQU7‡REMOTESTATE**‚EQUATESWITHIN'BUSSTAT'*BUSRENEQU0‡REMOTEENABLELINE!BUSIFCEQU1‡INTERFACECLEARLINE!BUSSRQEQU2‡SERVICEREQUESTLINE!BUSEOIEQU3‡ENDORIDENTIFYLINE%BUSNRFDEQU4†NOTREADYFORDATALINE$BUSNDACEQU5†NOTDATAACCEPTEDLINEBUSDAVEQU6‡DATAVALIDLINEBUSATNEQU7‡ATTENTIONLINE PAGE*!*†TMS9914AINTERRUPTMASKEQUATES@*†THESEBITSCORRESPONDTO`INTR0'AND'INTR1'TMS9914REGISTERS*-INT0BITEQU15ƒINTERRRUPTMASKREGISTER0BIT-INT1BITEQU14ƒINTERRRUPTMASKREGISTER1BIT"BIBITƒEQU13ƒBYTEININTERRUPTBITBOBITƒEQU12ƒBYTEOUTBITENDBIT‚EQU11ƒENDBIT+SPASBITEQU10ƒSERIALPOLLACTIVESTATEBIT$RLCBIT‚EQU9„REMOTE/LOCALCHANGEBIT"MACBIT‚EQU8„MYADDRESSCHANGEBIT"GETBIT‚EQU7„GROUPEXECUTETRIGGERERRBIT‚EQU6„ERRORBIT+UCGBIT‚EQU5„UNRECOGNIZEDCOMMANDGROUPBIT"APTBIT‚EQU4„ADDRESSPASSTHRUBIT+DCASBITEQU3„DEVICECLEARACTIVESTATEBITMABITƒEQU2„MYADDRESSBIT SRQBIT‚EQU1„SERVICEREQUESTBIT IFCBIT‚EQU0„INTERFACECLEARBIT *5*‚EQUATESFOR'CONTREG0-CONTREG4'INTERRUPTENABLES*)VBIMENABEQU4ENABLEBITFOREACHVECTOR*3TMSINTEQUVBIMENAB+24…ENABLEBITFORTMS9914AINTR7IOCINTEQUVBIMENAB+16…ENABLEBITFORI/OCOMPLETEINTR5BUSERINTEQUVBIMENAB+8„ENABLEBITFORBUSERRORINTR %CREQU$0DƒCARRIAGERETURNTERMINATORLFEQU$0AƒLINEFEEDTERMINATOR,MAXFIFOEQU1024‚MAXIMUMSIZEOFFIFOBUFFER  PAGE*+*ˆGPIBASYNCHRONOUSINTERRUPTEVENTMESSAGE* ‰OFFSET0AILEN„DS.B†1‰EVENTLENGTHAIEC…DS.B†1‰EVENTCODEAIDVIDƒDS.L†1‰DEVICEI.D.&AIEVTYP‚DS.B†1‰ASYNCHRONOUSEVENTTYPE)AIEVSTATDS.B†1‰ASYNCHRONOUSEVENTSTATUSAILNG„EQU‡*‰EVENTLENGTH* *‚EVENTCODES*!IOEVCDEQU1ƒNORMALEVENTSTOIOS,AIEVCDEQU9ƒASYNCHRONOUSEVENTCODETOTASK*+*‚ASYNCHRONOUSINTERRUPTEVENTTYPEEQUATES**SRQTYPEEQU$01‚SERVICEREQUESTDCLTYPEEQU$02‚DEVICECLEAR#RLCTYPEEQU$03‚REMOTE/LOCALCHANGETCTTYPEEQU$04‚TAKECONTROL%GETTYPEEQU$05‚GROUPEXECUTETRIGGERIFCTYPEEQU$06‚INTERFACECLEAR'IOPTYPEEQU$07‚INTRPLEVELI/OPENDING* PAGE*;*‚GPIBCODE/FUNCTIONEQUATESFORALLLEVEL40GPIBCOMMANDS*%IOCODOEQU$4010…COMMANDOUT/DATAOUT$IOCODIEQU$4011…COMMANDOUT/DATAINIOCMDOEQU$4012…COMMANDOUTIORSECEQU$4020…READSECONDARY IOWSECEQU$4021…WRITESECONDARY)IOPPU‚EQU$4030…PARALLELPOLLUNCONFIGURE'IOPPC‚EQU$4031…PARALLELPOLLCONFIGURE&IOPPOLEQU$4032…CONDUCTPARALLELPOLL)IOSPPSEQU$4033…SETPARALLELPOLLSTATUS'IOSSPSEQU$4034…SETSERIALPOLLSTATUS$IOSPOLEQU$4035…CONDUCTSERIALPOLL%IOPPD‚EQU$4036…PARALLELPOLLDISABLE IOSIFCEQU$4040…INTERFACECLEARIOSRENEQU$4041…REMOTEENABLEIOCRENEQU$4042…REMOTEDISABLE"IOSDCLEQU$4044…CLEARALLDEVICES,IOSSDCEQU$4045…CLEARALLLISTENINGDEVICESIOSLLOEQU$4046…LOCALLOCKOUTIOPCTLEQU$4047…PASSCONTROL&IOSGTLEQU$4048…LISTENERSGOTOLOCAL"IOSGETEQU$4049…LISTENERSTRIGGER+IOABT1EQU$404A…INTERFACEANDDEVICECLEAR$IOABT2EQU$404B…UNTALKANDUNLISTENIOTCTLEQU$404C…TAKECONTROL IORQCLEQU$404D…REQUESTCONTROL IORLCLEQU$404E…RELEASECONTROLIOGTS‚EQU$404F…GOTOSTANDBY'IODSDCEQU$4050…SPECIFIEDCLEARDEVICE(IODREMEQU$4051…SPECIFIEDREMOTEDEVICE)IODGETEQU$4052…SPECIFIEDTRIGGERDEVICE&IODGTLEQU$4053…SPECIFIEDGOTOLOCAL, TTL GPIB DRIVER - GPIB EQUATES (MENU ITEMS)‰PAGEA******************************************************************"*ŒGPIBCMENUITEMFUNCTIONEQUATES*/*†THESEEQUATESAREUSEDTOINDEXINTOTHEMENU6*†ROUTINEPROCESSORTABLE(MENUCTBL).ATTHATINDEXIN3*†THETABLEISTHEADDRESSOFTHEROUTINETHATWILL0*†PERFORMTHEFUNCTIONORSETOFFUNCTIONS.NOTE-*†THATTHESEEQUATESARENOTTHEVALUEOFTHE*†ACTUALGPIBCCOMMANDS*A******************************************************************7*ˆCLASSIMENUITEMS:‚GENERATEINTERRUPTSWHENEXECUTED*2ENDEQU0ŠENDOFMENUCODE(SPECIALCASEFUNCTION) UNTEQU1ŠUNTALKCODEUNLEQU2ŠUNLISTENCODE LAGEQU3ŠPRIMARYLISTENADDRESSOTAEQU4ŠPRIMARYTALKADDRESSOSAEQU5ŠSECONDARYR/WADDRESS#PPUEQU6ŠPARALLELPOLLUNCONFIGURE!PPCEQU7ŠPARALLELPOLLCONFIGUREPPEEQU8ŠPARALLELPOLLENABLEPPDEQU9ŠPARALLELPOLLDISABLESPEEQU10‰SERIALPOLLENABLESPDEQU11‰SERIALPOLLDISABLEDCLEQU12‰DEVICECLEARLLOEQU13‰LOCALLOCKOUTTCTEQU14‰TAKECONTROL!SDCEQU15‰SELECTIVEDEVICECLEARGTLEQU16‰GOTOLOCAL GETEQU17‰GROUPEXECUTETRIGGER(AUXEQU18‰SENDAUXILIARYCOMMANDSTRING)IN‚EQU19‰INITIATEDMAWRITE(INPUTDATA)*OUTEQU20‰INITIATEDMAREAD(OUTPUTDATA)6TERMEQU21ˆSENDTERMINATIONCHARACTERS(IFNECESSARY)#SPBEQU22ŠRECEIVESERIALPOLLBYTE#SEOIEQU23ˆSENDEOIWITHLASTBYTE*;*ˆNOTE:…ALLMENUITEMSGREATERINVALUETHAN'AUXTYPE'WILL5*’CAUSETHEMENUITEMFOLLOWINGTOBEEXECUTEDIMMED-7*’IATELYSINCETHESEDONOTCAUSEAHARDWAREINTERRUPT.*:*ˆCLASSIIMENUITEMS:AUXILIARYCOMMANDSTOTHETMS-9914A2*œ(NOINTERRUPTSAREEXPECTEDFROMTHESECOMMANDS)*-AUXTYPEEQU24…GENERALAUXILIARYCOMMANDCODE9*’(TMS9914AAUXILLIARYCOMMANDFOLLOWS'AUXTYPE'INMENU)*<*ˆCLASSIIIMENUITEMS:FUNCTIONCOMMANDS-THESEPROCESSORS2*EXECUTETOCOMPLETIONANDGENERATENOINTERRUPT.*)FSIC…EQU25„SENDINTERFACECLEARFUNCTION*FRPP…EQU26„REQUESTPARALLELPOLLFUNCTION.FRELCTL‚EQU27„RELEASECONTROLOFBUSFUNCTION+FTAKCTL‚EQU28„TAKECONTROLOFBUSFUNCTION.FREQCTL‚EQU29„REQUESTCONTROLOFBUSFUNCTION.FREQSTATEQU30„REQUESTDEVICESTATUSFUNCTION)FCNFGDEVEQU31„CONFIGUREDEVICEFUNCTION5FCHDEFLTEQU32„CHANGEDEFAULTCONFIGURATIONFUNCTION/FSETPPƒEQU33„SETPARALLELPOLLSTATUSFUNCTION-FSETSPƒEQU34„SETSERIALPOLLSTATUSFUNCTIONFGTS…EQU35„GOTOSTANDBY*‰PAGE*(*ƒBITEQUATESTOTESTVALUESINVALPARTB*BVALTALKEQU0‚TALKERABILITYBVALLISTEQU1‚LISTENERABILITY BVALCTL‚EQU2‚CONTROLLERABILITY(BVALSCTLEQU3‚SYSTEMCONTROLLERABILITYBVALSRQ‚EQU4‚SRQABILITYBVALPBUFEQU5‚PRIMARYBUFFERBVALSBUFEQU6‚SECONDARYBUFFER#BVALCBUFEQU7‚CONFIGURATIONBUFFER*BVALTMODEQU8‚TALKERMODEBVALLMODEQU9‚LISTENERMODEBVALCMOD EQU 10 CONTROLLER MODE,BVALBTLM EQU 11 IF BUS THEN MUST BE T/L MODE$BVALBDEV EQU 12 BUSSABLE DEVICE ONLYBVALBUS‚EQU13CONTROLBUS!BVALSADR EQU 14 SECONDARY ADDRESS BVALBCHG EQU 15 IN CHARGE OF BUS*#*ƒEQUATESFORENTRIESIN'VALPARTB'*6VALTALKEQU1<VALBDEVEQU1<FHSNLNEQU*LENGTHOFPARM.BLOCKFORSHAREDSEGMENTREQUEST‹*Ç*FHSCMDEQUATES(16BITS)¢*Ç(FHALLOƒEQU$80ALLOCATE(CREATEAFILE)ŸFHASGNƒEQU$40ASSIGN(OPEN)ª(FHCHNGƒEQU$20CHANGEACCESSPERMISSIONŸFHRENMƒEQU$10RENAME±FHPROTƒEQU$8PROTECT±FHCLOSƒEQU$4CLOSE³FHDELTƒEQU$2DELETE²FHCKPTƒEQU$1CHECKPOINT®$FHRATTƒEQU$180RETRIEVEATTRIBUTES£&FHFDENƒEQU$140FETCHDIRECTORYENTRY¡'FHFDMNƒEQU$120FETCHDEVICEMNEMONICS %FHCHLUƒEQU$110CHANGELUASSIGNMENT¢#FHFDV„EQU$108FETCHDEFAULTVOLUMESPLCANC EQU $280 CANCEL SPOOLERSPLCONT EQU $240 CONTINUESPLFORM EQU $220 FORMSSPLPRNT EQU $210 PRINTSPLCOPY EQU $208 COPIESSPLQUE‚EQU$204DISPLAYQUEUE#FHDVOL‚EQU$8001SETDEFAULTVOLUME*Ç*ˆEQUATESFORLUASSIGNMENTS¥*Ç!CDFLUNƒEQU…5“CMDDEVICE/FILELUN!LDFLUNƒEQU…6“LOGDEVICE/FIELLUN*Ç*FHSOPTEQUATES(16BITS)¢$*ACCESSPERMISSIONFIELD(BITS0-2)¥*Ç*FAPBITEQU$7BITSFORACCESSPERM.FIELDŸFOPPR„EQU0PUBLICREAD®FOPER„EQU1EXCLUSIVEREAD«FOPPW„EQU2PUBLICWRITE­FOPEW„EQU3EXCLUSIVEWRITEª FOPPRPW‚EQU4PUBLICREAD-WRITE¨+FOPPREW‚EQU5PUBLICREAD,EXCLUSIVEWRITE+FOPERPW‚EQU6EXCLUSIVEREAD,PUBLICWRITE#FOPEREW‚EQU7EXCLUSIVEREAD-WRITE¥*Ç*OVERWRITEFIELD(BIT3)°FOPOVRT‚EQU8OVERWRITEFILE«*Ç*TRUNCATEFIELD(BIT4)±+FOPTRNƒEQU$10TRUNCATEFILEATCLOSETIMEœ*Ç%*ALLOCATEDATABUFFERFIELD(BIT5)¤+FOPABFEQU$20ALLOCATESHAREDDATABUFFERž*Ç*POSITIONFIELD(BIT6)±+FOPBEGEQU0POSITIONATBEGINNINGOFFILEž'FOPENDEQU$40POSITIONATENDOFFILE¢"*RESERVEDFIELD(BITS7NOTUSED)§*Ç*FILETYPEFIELD(BITS8-10)¬#FFTBITEQU$700BITSFORFILETYPE¦FOPCON‚EQU0CONTIGUOUS°%FOPSEQƒEQU$100SEQUENTIAL(FRL/VRL)¢DFOPISKƒEQU$200KEYEDRECORD,INDEXEDSEQUENTIAL,NODUPLICATEKEYSƒ-FOPISDƒEQU$300",",DUPLICATEKEYSALLOWEDš*;FOPADRƒEQU‡$800†RETURNPHY.ADRFORSHAREDDATABUFFERREQ.*Ç$*USERATTRIBUTESFIELD(BITS15-12)¥*FUSBITƒEQU$F000BITSFORUSERATTRIBUTES*Ç*CHANGELUOPTIONSµFOPSLUƒEQU0SENDLU²FOPRLUƒEQU1RECEIVELU¯!FOPKEPƒEQU$8000KEEPASSIGNMENT¦*Ç%*SET AND FETCH DEFAULT VOLUME OPTIONS#FOPDSYEQU0SYSTEMVOLUMEDEFAULT¦FOPDTMEQU1TEMPORARY²FOPDSPEQU2SPOOLER´FOPDUSEQU3USER·*Ç*FETCH DEVICE MNEMONICS OPTIONS(FOPFRAEQU4FETCHRANDOMACCESDEVICES¡&FOPFINEQU5FETCHINTERATCIEDEVICES£#FOPFPREQU6FETCHPRINTERDEVICES¦*Ç*FHSSTAEQUATES(8BITS)£*ÇFSTAOKƒEQU$0NOERROR°*Ç#*ERRORCODE1ISRESERVEDFOREXEC¦*(SERVERDOESNOTEXIST)°*ÇFSTAIFEQU$2INVALIDCOMMAND«$FSTAILU‚EQU$3INVALIDLOGICALUNIT¤FSTAVOL‚EQU$4VOLUMEERROR¬#FSTADNM‚EQU$5DUPLICATEFILENAME¥$FSTAFDƒEQU$6FILEDESCRIPTORERROR£!FSTAPCƒEQU$7PROTECTCODEERROR¦"FSTARLƒEQU$8RECORDLENGTHERROR¥#FSTASEEQU$9SHAREDSEGMENTERROR¦+FSTADSƒEQU$AINSUFFICIENTDIRECTORYSPACEœ&FSTAAPƒEQU$BACCESSPERMISSIONERROR¡(FSTASSƒEQU$CINSUFFICIENTSYSTEMSPACEŸ!FSTAASƒEQU$DINVALIDASSIGNMENT¦"FSTADTƒEQU$EINVALIDDEVICETYPE¥FSTABOEQU$FBUFFEROVERFLOW«!FSTATNƒEQU$10INVALIDTASKNAME¦'FSTAADD‚EQU$11IN VALIDBUFFERADDRESS¡!FSTAFTƒEQU$12INVALIDFILETYPE¦"FSTAIEƒEQU$13INTERNALFHSERROR¥+FSTAIPƒEQU$14INVALIDPARAMBLOCKADDRESSœ'FSTADLEQU$15DATABLOCKLENGTHERROR¢FSTASZƒEQU$16SIZEERROR­'FSTANNM‚EQU$17NON-EXISTENTFILENAME¡!FSTAEODEQU$18ENDOFDIRECTORY¨ FSTAKYEQU$19KEYLENGTHERROR© FSTAFLEQU$1AFABLENGTHERROR©*FSTANDV EQU $1B DEFAULT VOLUME NOT DEFINED2FSTAWS‚EQU‚$1CWRONGSTATEFORSPOOLSTARTCOMMAND6FSTAIU‚EQU‚$1DSPOOLCOMMANDS-INVALIDUSER#SPECIFIED*Ç&*FETCHDIRECTORYENTRYRETURNEDINFO.£*Ç!OFFSET0STARTWITHZEROOFFSET«FDUSNDS.W1USERNUMBER°FDCLGDS.L2CATALOG´FDFILDS.L2FILENAME²FDEXTDS.W1EXTENSION²DS.W1RESERVED¸FDFSDS.L1FILESTARTINGPSN«FDFEDS.L1FILEENDINGPSN­/FDEOFDS.L1ENDOFFILELOGICALSECTORNUMBERš/FDEORDS.L1ENDOFFILELOGICALRECORDNUMBERšFDWCDDS.B1WRITEACCESSCODEªFDRCDDS.B1READACCESSSCODEªFDATTDS.B1ATTRIBUTES±?FDLBZDS.B1LASTDATABLOCKSIZE(FILETRUNCATEDIF<>FDDAT)Š7FDLRLDS.W1RECORDSIZE(0=>VARIABLERECORDLENGTH)’DS.B1RESERVED¸%FDKEYDS.B1KEYSIZE(0=>NOKEYS)¤FDFABDS.B1FABSIZE³FDDATDS.B1DATABLOCKSIZE¬ FDDTECDS.W1DATEFILECREATED©&FDDTEADS.W1DATEFILELASTASSIGNED£DS.B8RESERVED¸$FDLENEQU*FETCHDIR.ENTRYLENGTH¥*Ç'*FETCHDEVICEMNEMONICSRETURNEDINFO.¢*Ç OFFSET0ÂFDVDEVDS.L1DEVICEMNEMONIC«FDVVOLDS.L1VOLUMEID±FDVVALDS.B1RESERVED²FDVSTSDS.B1DEVICESTATUS­*FDVLENEQU*FETCHDEVICEMNEOMICSLENGTHŸ‰PAGE»*Ç *IOSPARAMETERBLOCKSTRUCTURE*Ç!‰OFFSET0STARTWITHZEROOFFSET£IOSFCTƒDS.W1FUNCTION°IOSOPTƒDS.W1OPTIONS±IOSSTAƒDS.B1STATUS²"IOSLUNƒDS.B1LOGICALUNITNUMBER¥0IOSSRVƒEQU…*“SERVICEADDRESSFORATTENTIONEVENT‰DS.B1RESERVED°.IOSPKLDS.B1RESERVEDFORPARTIALKEYLENGTH›/IOSRRNDS.L1RANDOMRECORDNUMBER:LRNORLSNš#IOSSADƒDS.L1STARTBUFFERADDRESS¤!IOSEADƒDS.L1ENDBUFFERADDRESS¦!IOSLENƒDS.L1LENGTHOFTRANSFER¦!IOSCADƒDS.L1COMPLETIONADDRESS¦#IOSBLNƒEQU*LENGTHOFPARAMBLOCK¤** IOS PARAMETER BLOCK STRUCTURE$*ˆFORCONFIGUREANDSTATUSCOMMANDS.*‰OFFSETIOSRRN IOSDBPƒDS.Lƒ1ŒDATABLOCKPOINTERIOSCSLƒEQU„*ŒLENGTHOFPB *A*‚IOSConfigurationBlockstructureforCONFIGURE,CHANGEDEFAULT+*‚CONFIGURATION,&REQUESTSTATUScommands.*‚Device-independentportion:* ‰OFFSET0IOSDSTƒDS.Bƒ1ŒDEVICESTATUS?IOSCECƒEQU„IOSDST‡CONFIGURATIONERRORCODE(returnedinlieuof(*§devicestatusifISTACNFerrorstatus)IOSCTPƒDS.Bƒ1ŒCHANNELTYPEIOSDTPƒDS.Bƒ1ŒDEVICETYPEIOSDRCƒDS.Bƒ1ŒDRIVERCODEIOSATMƒDS.Wƒ1ŒATTRIBUTESMASKIOSPRMƒDS.Wƒ1ŒPARAMETERSMASKIOSATWƒDS.Wƒ1ŒATTRIBUTESWORDIOSRECƒDS.Wƒ1ŒRECORDLENGTHIOSRSZƒDS.Lƒ1ŒDEVICESIZEIOSWTOƒDS.Lƒ1ŒWRITETIMEOUTIOSRTOƒDS.Lƒ1ŒREADTIMEOUT+IOSDDCƒEQU„*ŒDEVICEDEPENDENTCONFIGURATION *F*‚BitequatesforIOSPRMfordevice-independentpartofconfiguration.*/IOSRECB‚EQU‡0‰Parameter#forIOSRECparameter.IOSRSZB‚EQU‡1‰etc. IOSWTOB‚EQU‡2 IOSRTOB‚EQU‡3 *@*‚Device-dependentportionofconfigurationblockforterminals:*‰OFFSETIOSDDCIOSXOFƒDS.Bƒ1ŒX-OFFCHARACTERIOSXONƒDS.Bƒ1ŒX-ON‚CHARACTER(IOSBRCƒDS.Bƒ1ŒBREAKEQUIVALENTCHARACTER&IOSDOPƒDS.Bƒ1ŒDISCARDOUTPUTCHARACTER$IOSRLNƒDS.Bƒ1ŒREPRINTLINECHARACTER#IOSCLCƒDS.Bƒ1ŒCANCELLINECHARACTERIOSRTVƒDS.Lƒ1ŒREADTERMINATORS IOSEOLƒDS.Lƒ1ŒENDOFLINESTRINGIOSBRTƒDS.Bƒ1ŒBAUDRATECODE IOSNLSƒDS.Bƒ1ŒNULLPADDINGCOUNTIOSTRCƒDS.Bƒ1ŒTERMINATORCLASS/IOSTCDƒDS.Bƒ1ŒTERMINALCODE(SEEEQUATESBELOW):IOSTTMƒDS.Bƒ10‹DONOTUSE!‚RESERVEDFORINTERNALUSEONLY!‰DS.Bƒ6ŒRESERVED6IOSTLNƒEQU„*ŒLENGTHOFDATABLOCKFORTERMINALDEVICES *6*ˆCONFIGURATIONPARAMETERSSPECIFICTOPRINTERDEVICES*‰OFFSETIOSDDCAIOSLRLƒDS.Wƒ1‹LOGICALRECORDLENGTH<=IOSREC(PHYSICALREC.LEN.)7IOSELCƒDS.Bƒ1‹ENDOFLINECHARACTER(WITHAUTOLFONLY)‰DS.Bƒ15ŠRESERVED5IOSPLNƒEQU„*‹LENGTHOFDATABLOCKFORPRINTERDEVICES*N*‚Bitequa tesforIOSDST(devicestatus);alsoforXRPDSTinchannelcommands.J*‚Note:‚thevariousbitsaremeaningfulonlywithcertaindrivers/devices.*3XDSBRKƒEQU…0“BREAKCONDITION(onlyusedinternally)0XDSDCDƒEQU…1“StateofDCDlineattheconnector.0XDSABRƒEQU…2“1=Doingautobaudratedetection. XDSWPBƒEQU…5“WRITE-PROTECTEDBIT!XDSNRBƒEQU…7“DEVICENOTREADYBIT*+*ˆEquatesforIOSDSTspecifictomagtapes./*ˆBits2,1,0ofIOSDSTreturnthetapedensity.*XDSBLANKEQU‡7“BlanktapeXDSD800‚EQU‡1“800bpiXDSD1600EQU‡0“1600bpi*2XDSCGBƒEQU‡4“1=Transportdensitysoftwareselect&*’.“0=Transportdensitypanelselect*0*‚EquatesforIOSCEC(configurationerrorcode).&*‚$01-$3F‚errorscommontoalldrivers0*‚$40-$7F‚errorsspecifictoaparticulardriver*‚$80-$FF‚reserved*CECTIMƒEQU…$41‹Modemoperationandsomeincompatibleparameter*Ÿorattributewerespecified.>CECTBRƒEQU…$42‹Thedevicecannotbesoftware-configuredtothe*Ÿspecifiedbaudrate.* *ÆIEEE4886*…(IOSCECequatesspecifictoIEEE488devices)•IEEE488 *ÆIEEE488>CECBPO‚EQU$40ŽTryingtoconfigureaparameterthatisƒIEEE488!*œonlyvalidfortheBUS.“IEEE4889CECSCE‚EQU$41ŽTryingtoconfigureBUSforsystemˆIEEE488+*œcontrollercapabilityandhardwar‰IEEE488*œswitchisnotset.˜IEEE488.CECIPA‚EQU$42ŽInvalidprimaryaddress“IEEE488=CECVARLEQU$43ŽVariableconfigurationareaparameter…IEEE488*œerror.¤IEEE4888CECSADREQU$44ŽInvalidsec.addr.configurationŠIEEE488*.*…(IOSCECequatesspecifictoprinterdevices)*3CECPNIƒEQU…$40‹NULLisinvalidforanEOLcharacter=CECPRLZƒEQU„$41‹Logicaland/orphysicalrecordlengthiszero>CECPLGPƒEQU„$42‹Logicalrecordlength>physicalrecordlength*/*…(IOSCECequatesspecifictomagtapedevices)*8CECREQƒEQU‡$40‰Thetapedriveisnotconfiguredforuser* densityrequests.*)CECDENƒEQU‡$41‰Unknowndensityrequested.**I*‚Equates forIOSCTP(channeltype);alsoforXIOCTPinchannelcommands.*XTACIAƒEQU…1“ACIADEVICEXTPIAAƒEQU…2“PIAA-SIDEDEVICEXTPIABƒEQU…3“PIAB-SIDEDEVICEXTCRTCƒEQU…4“CRTCDEVICEXTSSDAƒEQU…5“SSDADEVICEXTADLCƒEQU…6“ADLCDEVICEXTDIPCƒEQU…$10‘DISKIPCXTMIPCƒEQU…$11‘MCCMIPC#XTVM22ƒEQU…$12‘VM22DISKCONTROLLER"XTDSASƒEQU…$20‘SASIONI/OCHANNEL(XTDWINƒEQU…$21‘WINCHESTERONI/OCHANNEL$XTDFLPƒEQU…$22‘FLOPPYONI/OCHANNEL%XTD315ƒEQU…$23‘VME315DISKCONTROLLERé)XTM435ƒEQU…$24‘MVME435(MAGTAPEADAPTER)XTEPCIƒEQU…$30‘2661DEVICEéééééééXTVM31„EQU„$81‘VM31CHANNEL*¨PRINTERPORTS:$50-$5FXTPEXMƒEQU…$50‘PIAEXORMACSXTPVM1ƒEQU…$51‘VM01PARALLELXTPRTLƒEQU…$52‘RTTLIOPARALLEL*¨SERIALPORTS:$60-$6F"XTS7A2ƒEQU…$60‘7201A-SIDEONVM02"XTS7B2ƒEQU…$61‘7201B-SIDEONVM02"XTS7A8ƒEQU…$62‘7201A-SIDEONVM80"XTS7B8ƒEQU…$63‘7201B-SIDEONVM80"XTS7ARƒEQU…$64‘7201A-SIDEONRSIO"XTS7BRƒEQU…$65‘7201B-SIDEONRSIO,XTSEXSƒEQU…$6F‘KEYBOARD/SCREENONEXORMACS/S*#XTGBUSƒEQU…$4A‘IEEE488BUS”IEEE488**H*‚EquatesforIOSDTP(devicetype);alsoforXRPDTPinchannelcommands.*XDSFDKƒEQU…1“FLOPPYDISKXDSRDKƒEQU…2“RIGIDDISKXDSACIA‚EQU…3“TERMINALXDSPRTƒEQU…4“PRINTERXDSTAPE‚EQU…5“MAGNETICTAPE*$XDSGBUS‚EQU…$4A‘IEEE488BUS”IEEE4880XDSGDEV‚EQU…$4B‘IEEE488BUSSABLEDEVICEˆIEEE488*#*‚EquatesforIOSDRC(drivercode).*3IODMPSCƒEQU„1’Asyncterminaldriverfor7201ports.4IODLPRTƒEQU„2’DriverforlocalCentronicsprinteron+*£EXORmacsDEBUGorMVME410onI/Ochannel.3IODSASIƒEQU„3’DriverforSASIdisksonI/Ochannel.8IODWIN„EQU„4’DriverforWinchesterdisksonI/Ochannel.4IODFLP„EQU„5’DriverforFloppydisksonI/Ochannel..IOD315„EQU„6’DriverfordisksonMVME315board/IODMTA„EQU„7’DRIVERFORMAGTAPEONI/OCHANNEL ééé3IODEPCIƒEQU„8’Asyncterminaldriverfor2661ports.9IODTERMƒEQU„$11Driverforscreen/keyboardonEXORMACS/S.IODIPC„EQU„$20IPCdriver./IODVM22ƒEQU„$21DRIVERFORVM22DISKCONTROLLER,IODGPIBƒEQU„$4AIEEE488busdriver.IEEE488*2*‚BitequatesforIOSATMandIOSATWforterminals.*IOAHCPY‚EQU‡0‰HARDCOPYIOAXCTL‚EQU‡1‰XON/XOFFIOABITS‚EQU‡2‰7BIT/8BITIOASTPB‚EQU‡3‰STOPBITSIOAUSEP‚EQU‡4‰PARITYIOAPRTY‚EQU‡5‰ODD/EVENPARITYIOAECHO‚EQU‡6‰HALF/FULLDUPLEXIOATAHD‚EQU‡7‰TYPEAHEAD#IOATFUL‚EQU‡8‰FULLBUFFERTERMINATEIOAPNUL‚EQU‡9‰PASSNULLS#IOAMODM‚EQU‡10ˆMODEM/DIRECTCONNECTIOAOFFH‚EQU‡11ˆMODEMOFFHOOK5IOADCDƒEQU‡12ˆNOTIFYBREAKCLAIMEROFDCDTRANSITIONS=IOAAUTO‚EQU‡13ˆDOAUTOBAUDRATEDETECTIONONDCDTRANSITIONSééééé9IOATRMƒEQU‡15ˆDONOTUSE!‚RESERVEDFORINTERNALUSEONLY!*'*‚BitequatesforIOSPRMforterminals.*/IOSXOFB‚EQU‡4‰Parameter#forIOSXOFparameter.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*;*ˆCONFIGURATIONPARAMETERSSPECIFICTOMAGNETICTAPEDRIVES***‰OFFSETƒIOSDDC/IOSDENƒDS.B†1“Densityforwritefromloadpoint.*.IOSRDTƒDS.B†1“Readtriesbeforeerrormessage.*)IOSWRTƒDS.B†1“Writetriesbeforeerasure.*,IOSERTƒDS.B†1“Erasuresbeforeerrormessage.*0IOSMTSV‚DS.B†8“Reservinganareaforfutureuse.*/IOSMLNƒEQU†*”Lengthofdatablockformagtape.*,*‚BitequatesforIOSPRMformagnetictapes.*4IOSDENB‚EQU‡4‰ParameternumberforIOSDENparameter,IOSRDTB‚EQU‡5‰etc. IOSWRTB‚EQU‡6 IOSERTB‚EQU‡7*,*‚BitequatesforIOSATWformagnetictapes.*8IOSELBƒEQU‡0‰Transportdensityselectable/notselectable*2IOSREQB‚EQU‡1‰Userdoes/doesnotrequesta‚density***$*‚EquatesforIOSTCD(terminalcode)*‚$00-$7F‚reserved*‚$80-$FF‚user-defined*TCDX155‚EQU‡0‰EXORterm155.*&*‚BitequatesforIOSATWforprinters.*IOALNFD‚EQU‡0‰AUTOLINEFEED,IOASNFF‚EQU‡1‰SUPR ESSFORMFEEDAFTERASSIGN3IOATPLL‚EQU‡2‰TRUNCATEPRINTATLOGICALLINELENGTH*%*‚BitequatesforIOSPRMforprinters*9IOSLRLBƒEQU„4‹Parameternumberforlogicalrecordlength.=IOSELCBƒEQU„5‹Parameternumberfortheend-of-linecharacter.** IOS DATA BLOCK STRUCTURE FOR%*‰DISKCONFIGUREANDSTATUSCOMMANDS.*‰OFFSETIOSDDC1IOSSPTƒDS.Bƒ1ŒPHYSICALSECTORSPERTRACKONMEDIA#IOSHDSƒDS.Bƒ1ŒNO.OFHEADSONDRIVE'IOSTRKƒDS.Wƒ1ŒNO.OFCYLINDERSONMEDIA(IOSILVƒDS.Bƒ1ŒINTERLEAVEFACTORONMEDIA$IOSSOFƒDS.Bƒ1ŒSPIRALOFFSETONMEDIA+IOSPSMƒDS.Wƒ1ŒPHYSICALSECTORSIZEOFMEDIA+IOSSHDƒDS.Wƒ1ŒSTARTINGHEADNUMBERONDRIVE+IOSTRKD‚DS.Wƒ1ŒNUMBEROFCYLINDERSONDRIVE@IOSPCOM‚DS.Wƒ1ŒPRECOMPENSATIONCYLINDER#(usually.5totalcyl)2IOSSPTD‚DS.Bƒ1ŒPHYSICALSECTORSPERTRACKONDRIVEIOSSR:IOSSRTD‚DS.Bƒ1ŒSTEPPINGRATEIOSRWCC:4IOSEWCC‚DS.Wƒ1ŒREDUCEDWRITECURRENTCYLINDERNUMBER#IOSECCƒDS.Wƒ1ŒECCDATABURSTLENGTHIOSDRSV‚DS.Bƒ2ŒRESERVED+*œTHEABOVERESERVEDBYTESISFORANOFFSET*œTOANOTHERPARAMETERBLOCK)!IOSDLNƒEQU„*ŒLENGTHOFDATABLOCK*4*‚BitequatesforIOSATMandIOSATWfordiskdevices*.IOADDENƒEQU„$0‘MFM/FMencodingmethodonmedia/IOATDENƒEQU„$1‘96/48TPItrackdensityonmedia,IOADSIDE‚EQU„$2‘double/singleSideddiskette-IOAFRMTƒEQU„$3‘MediaFormat(IBMorMotorola),IOARDISC‚EQU„$4‘Rigid/Floppydisk(ordrive)0IOADDEND‚EQU„$5‘MFM/FMdriveencodingcapability0IOATDEND‚EQU„$6‘96/48TPItrackdensityofdrive5IOARIBSƒEQU„$7‘Seekrequiredw/headchangeSMDdrive4IOADPCOM‚EQU„$8‘Postread/pre-writepre-compensation(*¦cylindernumber(ifapre-compensation)*¦cylindernumberissupplied-thisflag&*¦indicatesisitispost-readorpre-"*¦write.Thedefaultispre-write)!IOASIZEƒEQU„$9‘8"/51/4"diskette*)*‚BitequatesforIOSPRMfordiskdevices*.IOSSPTBƒEQU„$4‘Physicalsectors/trackonmedia$IOSHDSBƒEQU„$5‘No.ofheadsondrive(IOSTRKBƒEQU„$6‘No.ofcylindersonmedia)IOSILVBƒEQU„$7‘Interleavefactoronmedia%IOSSOFBƒEQU„$8‘Spiraloffsetonmedia,IOSPSMBƒEQU„$9‘Physicalsectorsizeofmedia,IOSSHDBƒEQU„$A‘Startingheadnumberondrive,IOSTRKDB‚EQU„$B‘Numberofcylindersondrive*IOSPCOMB‚EQU„$C‘precompensationcylinder#/IOSSPTDB‚EQU„$D‘Physicalsectors/trackondriveIOSSRB„EQU„$E‘steppingrate5IOSRWCCB‚EQU„$F‘reducedwritecurrentcylindernumber(*£andEECdataburstlength(eitherboth*£orneitheraredefined)*Ç *ÆIEEE488/*IEEE488BUSCONFIGURATIONPARAMETERS IEEE488 *ÆIEEE488OFFSETIOSDDC¹IEEE4881IOSEORR‚DS.Lƒ1ŒENDOFRECORDREQUIREMENTSIEEE4886IOSEOSC‚DS.Wƒ1ŒENDOFSTRINGCHAR-WRITE/READ‹IEEE488;IOSPOLC‚DS.Bƒ1ŒPARALLELPOLLCONFIGURATIONREGISTER†IEEE488-IOSPRMA‚DS.Bƒ1ŒDEVICEPRIMARYADDRESS”IEEE488@IOSFBWX‚DS.Lƒ1Œ#OFBYTESFORFIXEDLENGTHWRITE,FMT/IMGIEEE488?IOSFBRX‚DS.Lƒ1Œ#OFBYTESFORFIXEDLENGTHREAD,FMT/IMG‚IEEE4882IOSSAMR‚DS.Lƒ1ŒREADSECONDARYADDRESSMASKIEEE4883IOSSAMW‚DS.Lƒ1ŒWRITESECONDARYADDRESSMASKŽIEEE488-IOSRSVD‚DS.Lƒ2ŒRESERVED‚FORLATERUSE“IEEE488¤&IOPCUREQU$2000CURRENTPOSITION/=£(IOPPRVƒEQU$4000PREVIOUS(BACKWARD)/<Ÿ3IOPRANƒEQU$6000RANDOM(LRNORLSNGIVEN)/>OR=”"IOPTSKƒEQU$8000TASKIDSUPPLIED¥1IOPMNTƒEQU$0„MOUNTDISK(CONFIGUREREQUESTONLY)8IOPDMNT‚EQU$100  0DISMOUNTDISK(CONFIGUREREQUESTONLY)ISTAROEQU$CBRECORDOVERFLOW/TOOMANYRECORDSINDATABLOCK‹+ISTAKYEQU$CCKEYERROR,FABKEYCONFLICTž(ISTAIDSEQU$CDINSUFFICIENTDISCSPACE¡(ISTAUFEQU$CEUNRECOVERABLEFILEERROR¡ISTAIRPIEQU$DDINVALIDREQUESTFORPENDINGINTERRUPT†IEEE4880ISTAIVCBEQU$DEINVALIDCOMMANDFORBUS”IEEE4888ISTADXABEQU$DFDATAXFERABORTEDBYCONTROLLERŒIEEE488 *»IEEE488* ISTANRƒEQU$E1DEVICENOTREADY§ISTADBƒEQU$E2DEVICEBUSY¬ISTACRC‚EQU$E3DATACRCERROR©&ISTAWPƒEQU$E4WRITEPROTECTEDDEVICE¡+ISTADDM‚EQU$E5DELETEDDATAMARKDETECTEDISTATOƒEQU$E6TIMEOUT°&ISTASAƒEQU$E7INVALIDSECTORADDRESS¡ISTACSM‚EQU$E8CHECKSUMERROR©#ISTARES‚EQU$E9DISCRESTOREERROR¥ISTADOƒEQU$EADATAOVERRUN«%ISTASCEQU$EBDEVICESTATUSCHANGED¤*ISTADMEEQU$ECTRACK/SECTORIDNOTFOUNDŸ%ISTAMRKEQU$EDADDR.MARKCRCERROR¤ISTASEK‚EQU$EESEEKERROR­ISTABDS‚EQU$EFBADSECTOR­*Ç*ˆCHANNELERRORS±*ÇISTACHN‚EQU…$F1’CHANNELBUSY–"ISTADMA‚EQU…$F2’CHANNELDMAERROR‘,ISTACDN‚EQU…$F3UNRECOVERABLECHANNELERROR‰!ISTACNT‚EQU…$F4CONTROLLERERROR£+ISTACFGEQU„$F5DEVICECONFIGURATIONERROR›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/OMACROSµ*Ç*…CALLINGSEQUENCE²!*ˆXXXCALL(ADDR.OFPARAMBLOCK)¡*Ç ‰OFFSET0ºFHSCALL‚MACROº ‰IFNC'\1',''‰IFNC'\1','(A0)'&‰LEA\1,A0LOADADDRESSOFPARAMBLOCK‰ENDC‰ENDC‰TRAP#3CALLEXECDIRECTIVE¥‰ENDM»*Ç*ÇIOSCALL‚MACROº ‰IFNC'\1',''‰IFNC'\1','(A0)''‰LEA\1,A0LOADADDRESSOFPARAMBLOCKš‰ENDC‰ENDC‰TRAP#2CALLEXECDIRECTIVE¥‰ENDM»*Ç*ˆIOSPARAMETERBLOCKMACRO¦*ŠCALLINGSEQUENCE­!*XXX(LABEL,PARAM1...,PARAMN)œ*Ç 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“PARTIALKEYLENGTH‰ENDC» ‰IFNC„'\4',''‰DFC.B„\4’PART  IALKEYLENGTH‰ENDC» ‰IFC…'\5',''"‰DFC.L„0’RECORDNO.-KEYPOINTER‹‰ENDC» ‰IFNC„'\5',''#‰DFC.L„\5”RECORDNO.-KEYPOINTERˆ‰ENDC» ‰IFC…'\6',''‰DFC.L„0’BUFFERSTARTADDRESS‰ENDC» ‰IFNC„'\6',''‰DFC.L„\6“BUFFERSTARTADDRESS‰ENDC» ‰IFC…'\7',''‰DFC.L„0“BUFFERENDADDRESS‰ENDC» ‰IFNC„'\7',''‰DFC.L„\7“BUFFERENDADDRESS‰ENDC»‰DFC.L„0“LENGTHOFTRANSFER ‰IFC…'\8',''‰DFC.L„0’COMPLETIONADDRESS‘‰ENDC» ‰IFNC„'\8',''‰DFC.L„\8’COMPLETIONADDRESS‰ENDC»‰ENDM»*Ç*ˆFHSPARAMETERBLOCKMACRO¦*Ç 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-DEVICEID‘‰ENDC» ‰IFNC„'\4',''‰DFC.L„\4’VOLUME-DEVICEID’‰ENDC»‰DFC.W„0“USERNUMBER—‰DFC.L„$20202020‹CATALOG›‰DFC.L„$20202020­‰DFC.L„$20202020‹FILENAMEš‰DFC.L„$20202020­‰DFC.W„$2020EXTENSION™‰DFC.W„0“RESERVEDš ‰IFC…'\5',''‰DFC.B„0“WRITECODE˜‰ENDC» ‰IFNC„'\5',''‰DFC.B„\5“WRITECODE—‰ENDC» ‰IFC…'\6',''‰DFC.B„0’READCODEš‰ENDC» ‰IFNC„'\6',''‰DFC.B„\6’READCODE™‰ENDC» ‰IFC…'\7',''‰DFC.W„0’RECORDLENGTH–‰ENDC» ‰IFNC„'\7',''‰DFC.W„\7”RECORDLENGTH“‰ENDC» ‰IFC…'\8',''‰DFC.L„0“SIZE/POINTER–‰ENDC» ‰IFNC„'\8',''‰DFC.L„\8“SIZE/POINTER•‰ENDC»‰ENDM»*Ç*ˆOUTPUTCONSTANTMACROª*Ç DFC†MACROº ‰DC.\0ƒ\1µ‰ENDM»éééé‡PAGE1************************************************* *&.IOV.EQ¦*1**************************************************%*‡TABLEOFTASKSCLAIMINGI/OVECTORS* ˆOFFSET‚0IOVHDR‚DS.L„1†!IOV"IOVEND‚DS.L„1†ENDOFTABLEADDRESS#IOVENTREQU…*†OFFSETOFFIRSTENTRY* ˆOFFSET‚0IOVJSR‚DS.W„3†JSRCOMNISR ˆOFFSET‚0IOVVECTDS.W„1†VECTORNUMBERIOVTCB‚DS.L„1†TCBADDRESSIOVADR‚DS.L„1†ISRADDRESS$IOVARG‚DS.L„1†ARGUMENTPASSEDTOISRIOVESZ‚EQU…*+6„SIZEOFENTRY**„CISRPARAMETERBLOCK* ˆOFFSET‚0CISTSK‚DS.L„1†TASKNAMECISSES‚DS.L„1†SESSIONCISOPT‚DS.W„1†OPTIONSCISVCT‚DS.W„1†VECTORNUMBERCISISR‚DS.L„1†ISRADDRESS$CISARG‚DS.L„1†ARGUMENTPASSEDTOISRéé  ééé3‰PAGE»1************************************************* *&.LV5.EQ¦*1*************************************************ééééééé<EDMFUA]BI************************************************************************** *—*********** *—*4/16/82* *—************K*****************************************************************************4*ˆDATASTRUCTURESANDEQUATESFOREXEC(CHANNEL)I/O**%*ˆEXECI/OPARAMETERBLOCKSTRUCTURES* ‰OFFSET…0“STARTWITHZEROOFFSETXIOCODƒDS.B„1“COMMANDCODEXIOSCDƒDS.B„1“COMMANDSUB-CODE&‰DS.B„1“--UPPERBYTEOFOPTIONSWORD!,XIOOPTƒDS.B„1“--LOWERBYTEOFOPTIONSWORD!XIOCIDƒDS.L„1“CHANNELMNEMONICXIOPRMƒEQU…*“STARTPARAMETERS*$*ˆALLOCATEPARAMETERBLOCKSTRUCTURE*+‰OFFSET…XIOPRMŽSTARTWITHPARAMETERSOFFSETXIOCTPƒDS.B„1„CHANNELTYPE?XIOMICƒDS.B„1„MASKEDINTERRUPTINSTRUCTIONCOUNT(USEDBYCHPI)0XIOSVAƒDS.L„  1„I/OHANDLERSERVICEVECTORADDRESSAXIOSUPƒDS.L„1„SUPERVISORCHANNELMNEMONIC(useonlyifoptionbit(*§XOPSUBisset--otherwiseleavethis0)XIOADDƒDS.L„1„DEVICEADDRESSXIOMLNƒDS.W„1„#OFBYTESACROXIOVNOƒDS.B„1“VECTORNUMBERXIOPPRƒDS.B„1“POLLINGPRIORITYXIOSPRƒDS.B„1“SOFTWAREPRIORITY!XIOPFCƒDS.B„1“POLLINGFIELDCOUNTXIOALNƒEQU…*“LENGTH**ˆINTERRUPTSEGMENTS* ‰OFFSET…0!XIOPOFƒDS.W„1“POLLINGBYTEOFFSETXIOMSKƒDS.B„1“POLLINGMASK XIOTSTƒDS.B„1“POLLINGTESTVALUEXIOROFƒDS.W„1“RESETOFFSETXIOREVƒDS.B„1“RESETVALUE‰DS.B„1“RESERVEDXIOXLNƒEQU…*“LENGTH*(*ˆEQUATESFOR'XIOOPT'(8BITS)ALLOCATE*7XOPSHRƒEQU…0…Onlysystemtasksmayattachthischannel.%XOPEXCƒEQU…1…Reserved(usedbyCHPI).!XOPDIRƒEQU…4…Exclusivevectoring.@XOPSUB„EQU„8…Thischannelistobesubordinatetothesupervisor*§whosemnemonicisinCCBSUP.:XOPSUP„EQU„$10ƒThischannelistobeasupervisorchannel.;XOPINH„EQU„$20ƒForinternaluseonly--donotuse(4.3SJF).*"*ˆATTACHPARAMETERBLOCKSTRUCTURE*+‰OFFSET…XIOPRMŽSTARTWITHPARAMETERSOFFSET XIOKEYƒDS.B„1“USERGENERATEDKEY%XIOSLNƒDS.B„1“LENGTHOFSTATUSRETURNXIOVADƒDS.L„1“VECTORADDRESSXIOTOCƒDS.W„1“TIMEOUTCOUNTXIORETƒDS.W„1“RETRYCOUNT*&*ˆEQUATESFOR'XIOOPT'(8BITS)ATTACH*XOPWUPƒEQU…0“ISSUEWAKE-UP XOPASQƒEQU…1“ISSUEASQINTERRUPTXOPPROƒEQU…0“I/OANDPROCEEDXOPWATƒEQU…2“I/OANDWAIT$XOPSRVƒEQU…3“SERVICEVECTORSUPPLIED*&*ˆEQUATESFOR'XIOOPT'(8BITS)DETACH*$XOPONEƒEQU…0“DETACHONLYONECHANNEL XOPALLƒEQU…1“DETACHALLCHANNELS*(*ˆINITIATEI/OPARAMETERBLOCKSTRUCTURE*+‰OFFSET…XIOPRMŽSTARTWITHPARAMETERSOFFSETXIOTSKƒDS.L„1“TASKID!XIOSESƒDS.L„1“TASKSESSIONNUMBER XIOCHNƒEQU…*$*ˆNON-STANDARDCHANNELUNIQUEFIELDS"XIOSADƒDS.L„1“STARTBUFFERADDRESSXIOBLNƒDS.L„1“LENGTHOFBUFFER'XIOBOFƒDS.L„1“ADDRESSOFBUFFERPOINTER&XIOCADƒDS.L„1“COMMANDSEQUENCEADDRESS(XIOCLNƒDS.W„1“LENGTHOFCOMMANDSEQUENCEXIOCOFƒDS.W„1“COMMANDOFFSET%XIOTADƒDS.L„1“TRANSIENTSPACEADDRESS'XIOTLNƒDS.W„1“LENGTHOFTRANSIENTSPACE#XIORTNƒDS.L„1“RETURNSTATUSPOINTERXIOILNƒEQU…*“LENGTH *ˆSTANDARDCHANNELUNIQUEFIELDS‰OFFSET‚XIOCHN,XIOUIDƒDS.L„1“USERSUPPLIEDID(DCBPOINTER)*XIOCPKƒDS.L„1“STARTCOMMANDPACKETADDRESSXIOPLNƒDS.W„1“PACKETLENGTHXIONLNƒEQU…*“PBLENGTH*,*ˆEQUATESFOR'XIOOPT'(8BITS)INITIATEI/O*"XOPDCPƒEQU…0“DRIVERCOMMANDPACKET%XOPRCPƒEQU…1“REQUESTORCOMMANDPACKET** CMR TRAP 1 EXEC ERROR CODES*%XSTMNOƒEQU‡$0B‘CHANNELMNEMONICERROR**ˆINIT.I/OSUBCODES*XDSCMDƒEQU…0“INITIATEI/OXDRESTƒEQU…1“RESETXDHALTƒEQU…2“HALTIOXDRESBƒEQU…3“RESUBMITSEQUENCE*+*ˆEQUATESFORRETURNSTATUS(D0ANDXRSSTA)*-XSTNATƒEQU…$81‘CHANNELNOTATTACHEDTOCALLER/XSTAATƒEQU…$82‘CHANNELATTACHEDTOANOTHERTASKXSTOFFƒEQU…$83‘CHANNELOFF-LINEXSTBSYƒEQU…$84‘CHANNELBUSY1XSTINVƒEQU…$85‘INVALIDCALLFORTHISCHANNELTYPE**XSTCPSƒEQU…$91‘COMMANDPACKETSTRUC.ERROR#XSTCMEƒEQU…$92‘CHANNELMARKEDERROR"XSTADSƒEQU…$93‘BUFFERLENGTHERROR!XSTADBƒEQU…$94’BASEADDRESSERROR*)XSTSMBƒEQU…$A1‘SHAREDMEMORYBUSY(FATAL)!XSTUANƒEQU…$A2‘UNEXPECTEDACK/NAKXSTMANƒEQU…$A3‘MISSINGACK/NAK%XSTSYNƒEQU…$A4‘IPCACK/NAKSYNCERROR%XSTBCMƒEQU…$A5‘BADCMDCOUNTEXCEEDED"XSTSHMƒEQU…$A7‘SHAREDMEMORYERROR*+XSTRNGƒEQU…$B1‘COMMANDSEQUENCERANGEERROR&XSTIBBƒEQU…$B2‘ILLEGALBACKWARDBRANCH&XSTIOPƒEQU…$B3‘ILLEGALCOMMANDOP-CODE(XSTHLTƒEQU…$B4‘I/OCOMMANDSEQUENCEHALT0XSTSDAƒEQU…$B5‘SOURCEFIELDDEVICEADDRESSERROR0XSTSBAƒEQU…$B6‘SOURCEFIELDBUFFERADDRESSERROR2XSTSTAƒEQU…$B7‘SOURCEFIELDTRANSIENTADDRESSERRO/XSTDDAƒEQU…$B8‘DEST.FIELDDEVICEADDRESSERROR/XSTDBAƒEQU…$B9‘DEST.FIELDBUFFERADDRESSERROR2XSTDTAƒEQU…$BA‘DEST.FIELDTRANSIENTADDRESSERROR*XSTSESƒEQU‡$C6‡BADSESSIONCODE!XSTBUFƒEQU‡$C7‡BADBUFFERADDRESS XSTBLNƒEQU‡$C8‡BADBUFFERLENGTH!XSTCADƒEQU‡$C9‡CHANNELADR.ERROR*.*ˆDATASTRUCTUREFORNON-STANDARDRETURNEVENT*"‰OFFSET‚0“STAR  TWITHVARIABLEDATA‰DS.B„1“EVENTLENGTH‰DS.B„1“EVENTCODEXRSSTAƒDS.B„1“STATUSCODEXRSKEYƒDS.B„1“CHANNELKEY!XRSPTRƒDS.W„1“LASTCOMMANDNUMBERXRSLENƒEQU…*“LENGTH*1*ˆDATASTRUCTUREFORTYPE(70,71,FF)RETURNEVENT*"‰OFFSET‚0“STARTWITHVARIABLEDATA‰DS.B„1“EVENTLENGTH‰DS.B„1“EVENTCODEXRPSTAƒDS.B„1“EVENTTYPEXRPKEYƒDS.B„1“CHANNELKEY(XRPUIDƒDS.L„1“USERSUPPLIEDID(DCBPTR)XRPSTVƒDS.W„1“STATUSVALUEXRPPRMƒEQU…*“STATUSPARAMETERS**ˆEQUATESFOR'XRPSTA'(8BITS)*XPSNRMƒEQU…$70‘NORMALRETURNXPSHLTƒEQU…$71‘HALT/ABORT'XPSUNSƒEQU…$80‘UNSOLICITEDDEVICEEVENT(XPSUNRƒEQU…$FF‘UNSOLICITEDCHANNELEVENT**ˆEQUATESFOR'XRPSTV'**XSTVABT‚EQU‡0“INVALITHALTCOMMAND(ABORT)XSTVDST‚EQU‡0“DEVICESTATUS)XSTVNID‚EQU‡1“DEVICESTATUS(NOIDGIVEN)XSTVRSETEQU‡0“CHANNELRESETXSTVDWN‚EQU‡$FF‘CHANNELDOWN*G*‚RemainderofeventifXRPSTA=$80andXRPSTV=0.‚ThisistheformatforH*‚anunsolicitedeventifINITIATEI/Ocommandshavebeendoneandhence*‚thedeviceIDisknown.*+‰OFFSET…XRPPRMŽSTARTWITHPACKETPARAMETERSXRPDSTƒDS.B„1“DEVICESTATUSXRPDTPƒDS.B„1“DEVICETYPEXRPLENƒEQU…*“LENGTH*C*‚RemainderofeventifXRPSTA=$80andXRPSTV=1.‚ThisistheformatJ*‚foranunsolicitedeventifnoINITIATEI/Ocommandshavebeendoneyet.*‰OFFSETXRPLENXRPDNOƒDS.B„1’DEVICENUMBER‰DS.B„1’RESERVEDXRP1LEN‚EQU…*’LENGTH*!*ˆCHANNELCOMMANDDIRECTIVECODES*XDCALLƒEQU…1“ALLOCATEXDDELTƒEQU…2“DELETEXDATCHƒEQU…3“ATTACHXDDTCHƒEQU…4“DETACHXDONLNƒEQU…5“MARKONLINEXDOFLNƒEQU…6“MARKOFFLINEXDINITƒEQU…7“INITIATEI/O*"*ˆDIRECTIVENUMBERFORCHANNELI/O*XCAIO„EQU…60’ARBITRARYI/OCODE$XCCMR„EQU…60’CHANNELMANAGEMENTCODE*-*ˆDATASTRUCTUREFORCHANNELDATABLOCK(CDB)* ‰OFFSET…0XCDBPTR‚DS.L„1“NEXTPOINTER2XCDBOPT‚DS.W„1“OPTIONSTOUSEINALLOCATECOMMAND.XCDBAID‚DS.L„1“ASCIIIDENTIFIER%XCDBPRM‚DS.B„XIOALN-XIOPRM†PARAMETERS*'*ˆDRIVERTRANSIENTSPACEDATASTRUCTURE* ‰OFFSET…0“STARTWITHZEROOFFSETZSTAT„DS.L„1“DEVICESTATUSZOPT…DS.L„1“I/OOPTIONSZDOPT„DS.L„1“DRIVEROPTIONS!ZRLEN„DS.L…1‘DEVICERECORDLENGTHZBCNT„DS.L„1“BUFFERCOUNTER$ZBPTR„DS.L„1“BUFFERRELATIVEPOINTERZEOLC„DS.L„1“ENDOFLINECHAR.ZCRNULƒDS.L„1“CRNULLCOUNT%ZSBITSƒDS.L„1“PROGRAMBYTEFORDEVICE!ZBAL…DS.L„1“BRANCHANDLINKVALUEZNCNT„DS.L„1“NULLPADCOUNTER ZBUF…DS.L„1“TEMP.STORAGEBUFFER"ZMODE1ƒDS.L„1“2661MODEREGISTER1"ZMODE2ƒDS.L„1“2661MODEREGISTER2 TSPACEƒEQU„**,*ˆDRIVERCHANNELCONTROLAREADATASTRUCTURE* ‰OFFSET…0“STARTWITHZEROOFFSETZCID…DS.L„1“CHANNELMNEMONICZSTW…DS.W„1“STATEWORDZKEY…DS.B„1“CHANNELKEYZRSET„DS.B„1“RESETFLAG!ZBSAD„DS.L„1“STARTBUFFERADDRESS$ZTSAD„DS.L„1“TRANSIENTSPACEADDRESSZPTR…DS.L„1“POINTERZLEN…EQU…*“LENGTH**ˆZSTW(STATEWORD)VALUES*$*’-1=TERMINATION(NOTHINGPENDING)*“0=NOTACTIVE*“1=I/OINPROGRESSéŠPAGE1************************************************* *&.MAP.EQ¦*1**************************************************(*†MAPBEGINSYSPARAREAPOINTSTOMEMMAP*;*‡MEMMAPENTRY--EACHENTRYDESCRIBESONEMEMORYPARTITION* ‰OFFSET‚0,MAPMTYP‚DS.B„1†MEMORYTYPE,BITS7-4(3-0=0)1MAPPART‚DS.B„1†PARTITIONNUMBER,BITS3-0(7-4)=08MAPSTRA‚DS.L„1†STARTOFAVAILABLEMEMORY,THISPARTITION0MAPFMLP‚DS.L„1†POINTERTOFMLHEADERINFORMATION2MAPENDA‚EQU…MAPFMLPƒENDOFAVAILABLEMEMORY--ROMMAPENTSZEQU…*†SIZEOFENTRY*%*‡FREEMEMORYLISTHEADERINFORMATION* ‰OFFSET‚04LOWFREE‚DS.L„1†POINTERTO1STFREEMEMORYLISTENTRY:STRAVAILDS.L„1†STARTOFAVAILABLEMEMORY-THISPARTITION8ENDAVAILDS.L„1†ENDOFAVAILABLEMEMORY-THISPAR  TITION/MEMTYPE‚DS.B„1†MEMORYTYPEANDPARTITIONNUMBER‰DS.B„1†UNUSED*SEMFRMEMDS.W„3†FREEMEMORYLISTSEMAPHORE)SEMWTMEMDS.W„3†WAITFORMEMORYSEMAPHORE FMLHDSZ‚EQU…**"*„LINKEDLISTOFFREEMEMORYSPACE* ‰OFFSET‚02FMLFP„DS.L„1†FORWARDPOINTERTONEXTENTRYINLIST/FMLBP„DS.L„1†BACKWARDPOINTERTOPREVIOUSENTRY/FMLFREE‚DS.L„1†FREEPAGESAVAILABLETOALLOCATE%FMLUSED‚DS.L„1†ALLOCATED(USED)PAGESééée$‰TTL‡NEC7201CHIPDESCRIPTION ‰OFFSET„0*>*‚Arrangementofregistersoffmemory-mappedI/Obaseaddress.*CREG…EQU‡0‰Controlregister.SREG…EQU‡0‰Statusregister.DREG…EQU‡-4ˆDataregister. L****************************************************************************#NCR0BRK‚EQU%10000000‡BREAK/ABORT}6NCR0TXU‚EQU%01000000‡TxUNDERRUN}USEDWITHEXTERNALRxB>TxA>TxB/RxA>TxA>RxB>TxB*Œ%XXXXXX11‡FIELDDEFINITION!NCW2UD1‚EQU%00000011‡UNDEFINED}0NCW2BDM‚EQU%00000010‡BOTHCHANNELSDMA‡}SYSTEM:NCW2ADM‚EQU%00000001‡CH.ADMA,CH.BINT„}CONFIGURATION/NCW2BIN‚EQU%00000000‡BOTHCHANNELSINTERRUPT}*L*****************************************************************************Œ%11XXXXXX‡FIELDDEFINITION)NCW3BT8‚EQU%11000000‡Rx8BITS/CHARACTER)NCW3BT6‚EQU%10000000‡Rx6BITS/CHARACTER)NCW3BT7‚EQU%01000000‡Rx7BITS/CHARACTER)NCW3BT5‚EQU%00000000‡Rx5BITS/CHARACTER*"NCW3AUE‚EQU%00100000‡AUTOENABLES&NCW3EHU‚EQU%00010000‡ENTERHUNTPHASE#NCW3CRC‚EQU%00001000‡RxCRCENABLE0NCW3ADS‚EQU%00000100‡ADDRESSSEARCHMODE(SDLC)1NCW3SYN‚EQU%00000010‡SYNCCHARACTERLOADINHIBITNCW3RXE‚EQU%00000001‡RxENABLE*L*****************************************************************************Œ%11XXXXXX‡FIELDDEFINITION8NCW4CLK‚EQU%11000000‡MASKFORISOLATINGTHECLOCKFIELD$NCW4C64‚EQU%11000000‡X64CLOCKMODE$NCW4C32‚EQU%10000000‡X32CLOCKMODE$NCW4C16‚EQU%01000000‡X16CLOCKMODE#NCW4C01‚EQU%00000000‡X1‚CLOCKMODE*Œ%XX11XXXX‡FIELDDEFINITION(NCW4EXS‚EQU%00110000‡EXTERNALSYNCMODE/NCW4SDL‚EQU%00100000‡SDLCMODE(01111110FLAG)+NCW4B16‚EQU%00010000‡16BITSYNCCHARACTER+NCW4B08‚EQU%00000000‡08BITSYNCCHARACTER*Œ%XXXX11XX‡FIELDDEFINITION+NCW4SB2‚EQU%00001100‡2STOPBITS/CHARACTER/NCW4SBH‚EQU%00001000‡11/2STOPBITS/CHARACTER+NCW4SB1‚EQU%00000100‡1STOPBITS/CHARACTER&NCW4SME‚EQU%00000000‡SYNCMODEENABLE*%NCW4PEO‚EQU%00000010‡PARITYEVEN/ODD#NCW4PEE‚EQU%00000001‡PARITYENABLE*L****************************************************************************/NCW5DTR‚EQU%10000000‡DataTerminalReady(DTR)*Œ%X11XXXXX‡FIELDDEFINITION)NCW5TX8‚EQU%01100000‡Tx8BITS/CHARACTER)NCW5TX6‚EQU%01000000‡Tx6BITS/CHARACTER)NCW5TX7‚EQU%00100000‡Tx7BITS/CHARACTER)NCW5TX5‚EQU%00000000‡Tx5BITS/CHARACTER* NCW5BRK‚EQU%00010000‡SENDBREAKNCW5TXE‚EQU%00001000‡TxENABLE"NCW5CRC‚EQU%00000100‡CRC-16/CCITT+NCW5RTS‚EQU%00000010‡RequestToSend(RTS)#NCW5TCE‚EQU%00000001‡TxCRCENABLE*L****************************************************************************8NCW6SYN‚EQU%11111111‡SYNCBITS7-0‡}SDLCADDRESSFIELD*L****************************************************************************9NCW7SYN‚EQU%11111111‡SYNCBITS15-8†}01111110SDLCFLAGSDLCFLAGEQU‡$7EŠPAGE1************************************************* *&.NIO.EQ¦*1*************************************************  ééééééé‡4˜L >¨M°A¸* ‰LLEN120·O*******************************************************************************O********************************************************************************.*ˆDATASTRUCTURESANDEQUATESFORINTERNALI/O**ˆMODIFICATIONHISTORY8*‰9/02/83‚AddedmagtapedevicedependentportionofDCB:*ˆ11/09/82‚AddedTNTTASKIDforHDS-400networkterminals=*‰6/15/82‚ModifiedDCBsothatdefaultconfigurationislast.6*‰4/13/82‚Initialupdatetomakeallsystemsthesame.B*‰2/23/82‚AdditionofstructuresusedinCONFIGURE,CHANGEDEFAULT-*’CONFIGURATION,andREQUESTSTATUScommands.<*‰9/14/81‚Revision2.0--AdditionalDCBfieldequates.‚R.V. *‰8/12/80*O*******************************************************************************O******************************************************************************* (IOSTINƒEQU2†IOSTRAPINSTRUCTIONNUMBER(FHSTINƒEQU3†FHSTRAPINSTRUCTIONNUMBER0FHSID„EQU'.FHS'FILEHANDLINGSERVICESTASKID–2FMSID„EQU'.FMS'FILEMANAGEMENTSERVICESTASKID”/IOSID„EQU'.IOS'INPUT/OUTPUTSERVICESTASKID—(IODID„EQU'.IOD'I/OCOMPLETIONTASKIDž)TTYID„EQU'.TTY'TERMINALDRIVERTASKIDDEVICEINDEFAULTCONFIGURATION2*1-->DEVICEMAYNOTBEINDEFAULTCONFIGURATIONDCBBCTƒDS.B1BREAKCOUNT+DCBBRKƒDS.L1ADDRESSOFBREAKSERVICELUTœ$DCBSRVƒDS.L1BREAKSERVICEADDRESS£7DCBTSKƒDS.L1„EVENTCLAIMER-->TASKNAME7/6/83IEE488SESSIONNUMBERˆ7/6/83IEE488@DCBSUPƒDS.L1„ADDRESSOFSUPERVISORDCBORSESSION„7/6/83IEE4880*’NUMBERIFTHISISSUPERVISORDCBˆ7/6/83IEE488ADCBSOPƒDS.L1„SUPERVISOR/SUBORDINATEDCBOPENCOUNTƒ7/6/83IEE488-*—FOREVERYSUBORDINATEDEVICE†9/13/83IEE488  .*—THATISOPENED,THISCOUNTIS…9/13/83IEE488!*—INCREMENTEDBY1’9/13/83IEE488 DCBRSVƒDS.L†1‰DS.L†1‰DS.L†1‰DS.L†1.*œRESERVEDBUFFEROF16BYTESFORFUTUREUSAGE+*œBETWEENTHEDEVICEINDEPENDENTANDDEVICE*œDEPENDENTINFORMATION**‚DEVICEDEPENDENTPORTION*+DCBDEVƒEQU‡*“STARTDEVICEDEPENDENTPORTION&DCBLENƒEQU‡DCBDEV+IOSREC‡RECORDLENGTH%DCBSECƒEQU‡DCBDEV+IOSRSZ‡DISKSECTORS)DCBSIZƒEQU‡DCBDEV+IOSRSZ‡SCREEN/PAGESIZE&DCBTMWƒEQU‡DCBDEV+IOSWTO‡WRITETIMEOUT%DCBTMRƒEQU‡DCBDEV+IOSRTO‡READTIMEOUT*E* DEVICE DEPENDENT PORTION FOR TTY COMPATABILITY THAT WAS THROWN AWAY * ORIGINALLY*)DCBSBS‚EQUˆDCBDEV+IOSBRC‡PROGRAMMINGINFO)DCBHBS‚EQUˆDCBDEV+IOSRTV‡PROGRAMMINGINFOOFFLINE„1-->ONLINEDFLGWPƒEQU1WRITEPROTECT¬"DFLGSCƒEQU2DEVICESTATUSCHANGE¥+DFLGINƒEQU3DEVICEBUSYFORINITIALIZATION*DFLGCFƒEQU4DEVICEBUSYFORCONFIGURATION(DFLGCTƒEQU5CANCELTIMER0-->NO‚1-->YES7DFLGITƒEQU6SET-->IGNORETIMEREVENTFORTHISDEVICE*Ç*‚DCBATTBITEQUATES(16BITS)*ÇDATRED‚EQU0SUPPORTSREAD­DATWRT‚EQU1SUPPORTSWRITE¬DATBIN‚EQU2SUPPORTSBINARY«DATRANEQU3SUPPORTSRANDOM¬DATIMG‚EQU4SUPPORTSIMAGE¬DATHIO‚EQU5SUPPORTSHALTI/O©&DATPOS‚EQU6SUPPORTSPOSITIONRECORD¢DATFMK‚EQU7SUPPORTSFILEMARK© DATIND‚EQU8INTERACTIVEDEVICE¨DATPRT‚EQU9PRINTERDEVICE¬DATSPL EQU 10 SUPPORTS SPOOLING+DATWRC EQU 11 SUPPORTS WRITE WITH CRC CHECK4DATSPD EQU 12 SUPPORTS SPECIAL PURPOSE DEVICE DRIVER,DATSHREQU13DEVICEISNOTSHARABLE¡IEEE488%DATBDVEQU14BUSSABLEDEVICE¨IEEE488 *ÄIEEE488*‹B13+B14==>†00=NONEŸIEEE488$*œ01=NON-SHAREDBUSDEVICEŽIEEE488%*œ10=SHAREDBUSSABLEDEVICEIEEE488)*œ11=NON-SHAREDBUSSABLEDEVICE‰IEEE488 *Ç*‚DCBTMOVALUES(16BITS)*Ç *ˆ0=NOTACTIVE(ORTIMEDOUT)¢$*ˆ+=ACTIVEINDATATRANSFERPHASEž"*ˆ-=ACTIVEINTERMINATIONPHASE *ljPAGE» *À***********3*‚SYSTEMVALUETABLE(SVT)DATASTRUCTURE—*‚SVT‚* *À*********** ‰OFFSET‚0STARTWITHZEROOFFSET!SVTSOPƒDS.L1I/OSYSTEMOPTIONS¦5SVTQSTƒDS.L1STARTOFDEVICECONNECTIONQUEUESPACE’0SVTQNDƒDS.L1ENDOFDEVICECONNECTQUEUESPACE—SVTQUEƒDS.L1FIRSTDCQ¯0SVTLSTƒDS.L1STARTOFLOGICALUNITTABLESPACE—.SVTLNDƒDS.L1ENDOFLOGICALUNITTABLESPACE™ SVTLUTƒDS.L1FIRSTTABLEENTRY§'SVTDSTƒDS.L1STARTOFDCBTABLESPACE %SVTDNDƒDS.L1ENDOFDCBTABLESPACE¢ SVTDCBƒDS.L1FIRSTTABLEENTRY§SVTSDCB‚DS.B1DCBSEMAPHORESVTSLUT‚DS.B1LUTSEMAPHORE«SVTSDCQ‚DS.B1DCQSEMAPHORE«SVTSFCB‚DS.B1FCBSEMAPHORE«0SVTSIDƒDS.L4I/OSYSTEMIDANDREVISIONNUMBER—*SVTBRKƒDS.L2TASK-IDOFUNCLAIMEDBREAKS7SVTBSAƒDS.L1SERVICEADDRESSFORUNCLAIMEDBREAKTASK *Ç*‚EQUATESFORSVTSOP(32BITS)*ÇSVOPMUƒEQU0MULTIPLEUSER¬SVOPFMƒEQU1FMSPRESENT® *À***********3*‚LOGICALUNITTABLE(LUT)DATASTRUCTURE—*‚LUT‚* *À*********** ‰OFFSET‚0STARTWITHZEROOFFSET $LUTPTRƒDS.L1POINTERTONEXTTABLE£LUTTIDƒDS.L1TASK-ID±"LUTSESƒDS.L1TASKSESSIONNUMBER¥%LUTMLUƒDS.B1MAXIMUMNUMBEROFLUNS¢"LUTCASƒDS.B1CURRENTASSIGNMENTS¥LUTUNMƒDS.W1USERNUMBER­LUTBEGƒEQU*BEGINLUENTRIES©*Ç ‰OFFSET‚0STARTWITHZEROOFFSET(LUTCAPƒDS.B1CURRENTACCESSPERMISSIONŸ"LUTCSFƒDS.B1CURRENTSTATUSFLAG¥(LUTATTƒDS.W1ATTRIBUTESOFDEVICE/FILEŸ!LUTDCBƒDS.L1ADDRESSOFDCB/FCB¦"LUTSEGƒEQU*LENGTHOFEACHENTRY¥ *Ç*‚LUTCSFBITEQUATES(8BITS)*ÇLUSFAC‚EQU0ACTIVE´LUSFIO‚EQU1I/OPENDING¯LUSFCP‚EQU2CLOSEPENDING­LUSFAS‚EQU3ASSIGNPENDING¬LUSFCW‚EQU4CONNECTIONWAIT*LUSEVC‚EQU5DRIVEREVENTSCLAIMED¢IEEE488LUSFDV‚EQU7DEVICEASSIGNMENT *À***********5*‚DEVICECONNECTQUEUE(DCQ)DATASTRUCTURE•*‚DCQ‚* *À*********** ‰OFFSET‚0STARTWITHZEROOFFSET$DCQPTRƒDS.L1POINTERTONEXTTABLE£(DCQNXTƒDS.L1POINTERTONEXTDCBENTRYŸDCQDCBƒDS.L1ADDRESSOFDCBªDCQLUTƒDS.L1ADDRESSOFLUTª#DCQLUEDS.L1ADDRESSOFLUNENTRY¦&DCQLADƒDS.L1LOGICALADDRESSOFIOCB¡DCQTINDS.B1TRAPINDICATOR¬DCQRESDS.B1RESERVEDBYTE­%DCQPLNDS.B1PARAMETERBLOCKLENGTH¤DCQPRIƒDS.B1PRIORITY° DCQLENƒEQU*º‰PAGE»ééé PAGE1**************************************************&.PANAL.EQ¤*1***************************************************ˆFRONTPANELEQUATES* ‰OFFSET00FPDMPTST DS.W 1 MEMORY DUMP, ENABLE, SYSTEM TESTFPTTO„DS.W1TESTTIME-OUTFPLEDST‚DS.W1LEDSTATUSéééééé À ŠPAGE1************************************************* *&.PAT.EQ¦*1***************************************************ˆPERIODICACTIVATIONTABLE*!‰OFFSET„0‰THISISANOFFSETTABLEPAT†DS.L†1‰!PAT„DEBUGTOOL0PATFHDR‚DS.L†1‰ADDRESSOF1STENTRYINFREELIST0PATTHDR‚DS.L†1‰ADDRESSOF1STENTRYINTASKLIST0PATEHDR‚DS.L†1‰ADDRESSOF1STENTRYINEXECLIST(PATTSIZ‚DS.L†1‰LENGTH(INBYTES)OFTABLE$PATENTRYEQU‡*‰OFFSETTOFIRSTENTRY**ˆPATENTRYDEFINITION*&‰OFFSET„0‰OFFSETISFROMENTRYPOINTER,PATNEXT‚DS.L†1‰POINTERTONEXTENTRYINLISTPATOCMSKEQU‡$0202…MASKFORBOTHPATOCANCANDPATOFINLOPTION.ééÉ+K*==========================================================================**ˆEQUATEFILEFORRAD1TABLE*K*==========================================================================*'*ˆTheRAD1tableconsistsof4parts--8*’(1)‚The"header",whichcontainsvariousconstantsand'*œpointerstootherpartsofthetable.9*’(2)‚RAUSRLST,whichisatableofuser-RADcombinations2*œforkeepingtrackofwhichusersareusingwhich*œRADsandviceversa.6*’(3)‚RARADLST,whichisatableofRADsshowingwhich)*œchannelsareassigned,RADstatus,etc.@*and‚(4)‚RATEMP,whichisasectionofmemorytobeusedbythe**œdriverfortemporaryorworkingstorage.*K*==========================================================================**ƒHeaderareaequates...*4RARADTBLEQU‡0“Startoftablearea,setto"!RAD"as*°an"eye-catcher".FRARADLADEQU‡RARADTBL+4„OffsettostartofRARADLSTintheRAD1table.6RARADUSDEQU‡RARADLAD+2Š#ofRADsinRARADLSTalready.9RANUMRADEQU‡RARADUSD+1Š#ofRADsdefinedinthissystem.RAUSRLSTEQU‡RAHDRLNGŒRAUSRLSTalwaysstartsimmediatelyafter*¦theheaderarea./RAUUSRNOEQU‡0“Offsetintotableentryfortask*¦name/session#.;RAURADIDE QU‡RAUUSRNO+8ŠOffsetintotableentryforRAD-ID.8RAUSTAT‚EQU‡RAURADID+4ŠOffsetintotableentryfor"RAD-&*¦aborted/restarted"flag.‚(Usedtobe(*¦sureallusersofaRADare"informed"*¦ofabortorrestart.)7RAUEROPTEQU‡RAUSTAT+2‹Error-notificationoptionsflag.;RAUERSTOEQU‡RAUEROPT+2ŠError-notificationstorageaddrfor *¦errorcode.;RAUERSUBEQU‡RAUERSTO+4ŠError-notificationsubroutineaddr.5RAULNGƒEQU‡RAUERSUB+4ŠLengthofanentryinRAUSRLST.**ƒRARADLSTequates...*Ò3Û)RARADLIDEQU‡0“OffsetinentrytoRAD-ID.>RARDSTATEQU‡RARADLID+4ŠOffsetintotableentryforRADstatus*¦flag.*‚Arrangementofregistersoffmemory-mappedI/Obaseaddress.*CREG…EQU‡6‰Commandregister.SREG…EQU‡2‰Statusregister.DREG…EQU‡0‰Dataregister.MREG1„EQU‡4‰Moderegister1MREG2„EQU‡4‰Moderegister2 L*****************************************************************************(*‚Statusregisterbitdefinitionsƒ(SREG)*TXRDY…EQU„0’transmitterreadyRXRDY…EQU„1’receiverreadyDNR‡EQU„2’devicenotreadyPEˆEQU„3’parityerrorDOVR†EQU„4’dataoverrunFEˆEQU„5’framingerrororbreak(*£framingerrorifdatainreadregister*£breakifreadregisteris0DCD‡EQU„6’datacarrierdetectDSRB†EQU„7’datasetready**K******************************************************** ********************éééé4)*‚Commandregisterbitdefinitions‚(CREG)*TXEN†EQU„0’enabletransmitter!DTR‡EQU„1’setdataterminalreadyRXEN†EQU„2’enablereceiverFBˆEQU„3’forcebreak1ERRSET„EQU„4’reseterrorflagsinstatusregisterRTS‡EQU„5’requesttosendAAˆEQU„6’async:autoechomodeASˆEQU„7’asycnmode**N*******************************************************************************)*‚Moderegister2bitdefinitions(MREG2)*-*ˆbaudratebitsdefinedelsewhere(bits0-3)**„%1111xxxxfielddefinition*4ITCX16„EQU„%01110000Šinternalclocks,x16clockrate**O*********************************************************************************)*‚Moderegister1bitdefinitions‚(MREG1)*:*„%XXXXXX11‚fielddefinitionformodeandbaudratefactor**ASY16X„EQU„%00000010Šasynchronous16xrate*1*„%xxxx11xx‚fielddefinitionforcharacterlength*'BIT5†EQU„%00000000Š5bitspercharacter'BIT6†EQU„%00000100Š6bitspercharacter'BIT7†EQU„%00001000Š7bitspercharacter'BIT8†EQU„%00001100Š8bitspercharacter*'*…%xx11xxxx‚fielddefinition‚forparity*!PENBL…EQU„%00010000Šparityenable(PTYPE…EQU„%00100000Šparitytypeeven/odd*/*‰%11xxxxxxfielddefinitionfor#ofstopbits*SB1‡EQU„%01000000Š1stopbit SB15†EQU„%10000000Š1.5stopbitsSB2‡EQU„%11000000Š2stopbits**J**************************************************************************éé PAGE1**************************************************&.SMLOAD.EQ£*1*************************************************O**********************************************************************************OFFSETSTOM6840PROGRAMMABLETIMERCHIP*O*******************************************************************************  ‰OFFSET0‰DS.B‚1ˆSKIPALLEVENBYTES/CR13…DS.B‚2ˆCONTROLREGISTERFORTIMERS1AND3=CR2SR„DS.B‚2ˆCONTROLREGISTERFORTIMER2ANDSTATUSREGISTER, MSBT1„DS.B‚2ˆMOSTSIGNIFICANTBYTE-TIMER1-T1LSB„DS.B‚2ˆLEASTSIGNIFICANTBYTE-TIMER1,MSBT2„DS.B‚2ˆMOSTSIGNIFICANTBYTE-TIMER2-T2LSB„DS.B‚2ˆLEASTSIGNIFICANTBYTE-TIMER2,MSBT3„DS.B‚2ˆMOSTSIGNIFICANTBYTE-TIMER3-T3LSB„DS.B‚1ˆLEASTSIGNIFICANTBYTE-TIMER3éééé PAGE1************************************************* *&.SPL.EQ¦*1*************************************************ééééééé(I088E@MH *4*‚***************************************************‚SPOOLEREQUATEFILE-*‚CONTAINSMACROSFORFMSINTANDALLINTERNAL*‚SPOOLEREQUATES5*******************************************************ŠMACROSFORSPLFMS(FMSINT)** SFHSCO PARAMETERS: * 1. COMMAND * 2. OPTIONS0*3.ADDRESSREGISTER(->‚FHSPARAMETERBLOCK)*>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**‚SPOOLERQUEUEENTRYSTRUCTURE* OFFSET 0"QDEVICEDS.L1DEVICENAME(ASCII)/QFORMSDS.L1FORMSIDDEFAULT='STND'ƒ(ASCII)QVOLDS.L1VOLUMENAME“(ASCII)"QUSERNDS.W1USERNUMBER‘(BINARY)"QCATLGDS.L2CATALOGNAME(ASCII)QFILENDS.L2FILENAME”(ASCII)QEXTDS.W1EXTENSION•(ASCII)QTASKNDS.L1TASKNAME“(ASCII)#QSESSDS.L1SESSIONNUMBER(ASCII)!QJOBIDDS.L1JOBNUMBER’(BINARY)"QPRIDS.B1TASKPRIORITY‘(BINARY)#QLUNDS.B1LUNFOROUTPUT(BINARY)QDATEDS.L1DATE™(BINARY)QTIMEDS.L1TIME™(BINARY)-QSIZEDS.L1FILESIZE-#OFBLOCKS†(BINARY)QSTATDS.B1STATUS—(BINARY).QCOPYSDS.B1#OFCOPIESDEFAULT=1…(BINARY) QLNG EQU ***‚QSTATBITDEFINITIONS*+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)*?*‚ENTRYSTRUCTUREOFRESERVEDRECORDSINTHESPOOLERQUEUEFILE3*ˆ(RECORDS0-8)(RECORD9CONTAINSLASTJOBNUMBER)* OFFSET 0RDEVDS.L1DEVICENAME…(ASCII)RFRM‚DS.L1FORMSID‡(ASCII)HRSTATDS.L1STATUS‚0=OKTOOUTPUT‚-1=FORMSWASISSUED,WAITFORCONTINUERLNG EQU * ENTRY LENGTH-RREC EQU QLNG/12 NUMBER OF ENTRIES PER RECORD**‚MISCEQUATES*USER0EQU0ƒUSERNUMBER0FOUTEQU3„LUNFOROUTPUTFILE DOUTEQU4„LUNFOROUTPUTDEVICE3BLANK EQU $20202020 BLANKS-USE FOR PARAMETER BLOCKS0ENTRYLNG EQU FHSNLN+EVTLEN LENGTH OF 1 ASQ ENTRYCR EQU $0D CARRIAGE RETURN CODELF EQU $0A LINE FEED CODESPOOLFEQU‚$40‰'@'&MYSES EQU 1 .SPL SESSION NUMBER NUMBER?BUFADREQU$20000‚SEGMENTSTARTADDRESSFORNON-SPOOLERFILEIO@BUFLNGEQU$A00„SEGMENTLENGTH(CHANGESBYSUBTASKIFTOOSMALL)?REGOFFEQU50†OFFSETTOREGISTERSINSTARTTASKPARAMETERBLOCK&FOURƒEQU‚4…OFFSETOF4FORREGISTERA1**‚SPLFLGBITDEFINITIONS*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ƒEQU3PROCEEDIOINPROGRESS-IOERRF EQU 4 IO ERROR FOUND DURING PROCEED IO$RDYERR EQU 5 OUTPUT DEVICE NOT READY*1*‚SPLFLG1BITDEFINITIONS-USEDBYQUEUECOMMAND*$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**‚BITDEFINITIONSFORSUBTRERR*'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-TASKEVENTSTRUCTUREFORSENDINGIOERROREVENTSTOMONITOR* OFFSET 0 IOERLNGDS.B1EVENTLENGTHƒ(12)IOERCDEDS.B1EVENTCODE„(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#SUBTECDEEQU32ƒSUB-TASKEVENTCODE*SPLECDEEQU33‚.SPLEVENTCODETOSUB-TASK*.*ˆERRORMESSAGEHANDLERPARAMETRBLOCKOFFSETS* ‰OFFSET0#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.B1QUERYRETURNCHARACTEREM_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*%*‚SPLOOLERQUEUEENTRYRECORDEQUATES*+LINEBL EQU QLNG RECORD'S LINE BUFFER LENGTHKEYSIZ EQU 0 NULL KEYS#VRLFIL EQU QLNG FIXED RECORD LENGTH'MXRECLEQULINEBL‚MAXIMUMRECORDLENGTH**‚FILENAMEEQUATES*4FILNML EQU 24 FULLY QUALIFIED FILE NAME FIELD LENGTH**‚DATABLOCKEQUATES*BDEFSIZ EQU $108 1 SECTOR FAB/8 SECTOR DATA BLK(DEFAULT ALLOCATION)$DBMAX EQU 20 MAXIMUM DATA BLOCK SIZE*:*‚FMSLOGICALADDRESSESFORSEGMENTSTOBEUSEDASBUFFERS*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**‚DEFINEDATALAYOUTS*:*‚********************************************************;*‚FMSINTPARAMETERBLOCK(USEDBETWEENFMSINTANDSPOOLER)::*‚*********************************************************1OFFSET0‚POINTEDTOBYA3(A0ONCALLTOFMSINT)*FMSTAT DS.B 1 STATUSFMSCMD DS.B 1 COMMANDFMSRECDS.L1…LRN7FMSBUFDS.L1…FWAOFLINEBUFFER,POINTERTOFILENAMES$FMSRECNDS.W1‡#OFRECORDSAFFECTED*FMSEFSDS.B1‡FILESTATUS*=EFSCHGEQU1‚FILESTATUSCHANGED(EDITFILE.NE.OUTPUTFILE)* FMSOFSDS.B1‡OUTPUTFILESTATUS*&OFSDEL EQU 1 OUTPUT FILE STATUS DELETE**!*‚********************************‚FILENAMEPARAMETERS!*‚********************************)OFFSET„0„POINTEDTOBYFMSBUFINOPENCMD*FLNM1 DS.B FILNML FULLY QUALIFIED FILENAME DS.W 1 RESERVED DS.W 1 READ/WRITE CODES:OFSTATDS.B1OUTPUTFILESTATUS„0=FILENAME1ISFOROUTPUT‚DS.W1READ/WRITECODES‚PAGE**‚***************************‚MAPFORFMSINTSCRATCHPAD*‚***************************(OFFSET0ƒPOINTEDTOBYA6DURINGFMSINT**‚MAPFORUNINITIALIZEDDATA*EOFLRNDS.L1‚FILE'SLASTLRNEFLUNDS.B1ƒFILELUNEFFLGDS.B1‚FILEFLAG'* 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*?DATASGLEQU*‚ENDOFUNINITIALIZEDDATA(ZEROEDOUTBYOPENCMD)**‚MAPFORINITIALIZEDDATA*.SRCDBS DS.L 1 SOURCE FILE LOGICAL BUFFER START*;LRECRDƒDS.L1LRNOFLASTRECORDREAD(-1IFNONEAVAILABLE)*5STKPTR DS.L 1 STACK POINTER FOR ABORT FROM SUBROUTINE****‡FMSINTCOMMANDEQUATES*#OPENCMD‚EQU‚1ˆFMS-OPENFILECOMMAND#RDCMD‚EQU‚2ˆFMS-READRECORDCOMMAND&DELCMD‚EQU‚3‰FMS-DELETERECORDCOMMAND(INSRTCMD‚EQU4†FMS-INSERTRECORDCOMMAND(REPLCMD‚EQU‚5ˆFMS-REPLACERECORDCOMMAND PAGE*.*ˆOFFSETSUSEDBYASPAWNEDSUB-TASKDOINGTHE*ˆACTUALSPOOLEROUTPUT* ‰OFFSET0 DATAST EQU *SCRATCHSDS.B154‚SCRATCHAREA‰DS.B200‚STACK STACK EQU *&FHSPBSDS.BFHSNLN‚FHSPARAMETERBLOCK&IOSPBSDS.BIOSBLN‚IOSPARAMETERBLOCK#SPLQNSDS.L2‡TASKNAMEANDSESSIONSPLFLGSDS.B2†FLAGSSUBTERRDS.W1†ERRORFLAGSCURRECSDS.L1†CURRENTRECORD)QEVTSDS.BENTRYLNG‚EVENTPARAMETERBLOCK(QBUFSDS.BQLNG†QUEUEENRTYBEINGOUTPUT BUFENDDS.L1ˆBUFFERENDADDRESS)SBUFSADS.L1ˆSHAREDBUFFERSTARTADDRESS'SBUFEADS.L1ˆSHAREDBUFFERENDADDRESS /CURPTDS.L1‰CURRENTPOINTERINTOSHAREDBUFFERSAVLNGDS.L1ˆBUFFERSIZEFOPTDS.W1ŠOUTPUTFILETYPE1BUFSTRTDS.L1‡NON-SPOOLERFILEDATAAREAADDRESS DATALNG EQU * PAGEéééééééŠPAGE1************************************************* *&.SRVR.EQ¥*1***************************************************‰SERVEREQUATES*!*‰TYPE7MESSAGE(SERVERREQUEST)* ‰OFFSET0TYP7SIZE‚DS.B‚1…MESSAGELENGTH'TYP7CODE‚DS.B‚1…MESSAGETYPECODE($07)ATYP7TRAP‚DS.B‚1…TRAPNUMBER(BIT7=SYSTSK;6=TERMMSG;5=LASTTSK)TYP7PRIO‚DS.B‚1…PRIORITYTYP7TASK‚DS.L‚1…TASKNAMETYP7SESS‚DS.L‚1…SESSIONTYP7USER‚DS.W‚1…USERNUMBERTYP7D0„DS.L‚1‡REQUESTOR'SD0TYP7A0„DS.L‚1‡REQUESTOR'SA0&TYP7PBST‚DS.B‚1…PARAMETERBLOCKSTATUS$TYP7PBSZ‚DS.B‚1…PARAMETERBLOCKSIZE'TYP7PBLK‚EQUƒ*…STARTOFPARAMETERBLOCK**ˆPARAMETERBLOCKSTATUSCODES**T7STPMOVƒEQUƒ0†TOTALPARAMETERBLOCKMOVED,T7STPARTƒEQUƒ1†PARTOFPARAMETERBLOCKMOVED*T7STPADRƒEQUƒ2†BADPARAMETERBLOCKADDRESS,T7STNORQƒEQUƒ3†PARAMETERBLOCKNOTREQUESTED**…BITSSETINTYP7TRAPFIELD*2TYP7TSYSEQUƒ7ˆTASKSENDINGMESSAGEISSYSTEMTASK-TYP7TTRMEQUƒ6ˆMESSAGEISTERMINATIONMESSAGE+TYP7TLSTEQUƒ5ˆTASKISLASTTASKINSESSION*"*OPTIONSAVAILABLEONACKNOWLEDGE*-TACKOSCCEQU‚14ˆSETCONDITIONCODESONRETURN TACKOSD0EQU‚13ˆDETD0ONRETURN TACKOSA0EQU‚12ˆSETA0ONRETURNTACKORDYEQU‚11ˆREADYTHETASK%TACKOWT‚EQU‚10ˆPUTTASKINWAITSTATETACKOSPDEQU‚9‰SUSPENDTHETASK,TACKOTRMEQU‚8‰SPECRESPONSETOTERMREQUESTéé P- ‰LLEN120ŠPAGE1************************************************* *&.STR.EQ¦*1***************************************************†GENERALEQUATES*"TRMODE„EQU15…TRACEMODEBITINSR'SRMODE„EQU13…SUPERVISERMODEBITINSRBMULTPROC‚EQU‚0„CONDASSEMBLYFLAG(MULTIPLEPROCESSORS)1=ON0=OFFASHARMEMƒEQU‚1„CONDASSEMBLYFLAG(MEMORYSHAREDBYMULTIPLEPROC)CWAITMEMƒEQU‚1„CONDASSEMBLYFLAG(WAITFORMEMORYOPTIONAVAILABLE):EXECPRIO‚EQU‚240ƒPRIORITYSETWHENEXECROUTINESRESTARTED6HIBIT…EQU‚15„HIGHORDERBITNUMBER-USEDINBITTESTS**ŠSECTIONNUMBERSFORLEVELS* LVLBASE„EQU‚2LEVEL00„EQU‚LVLBASE+0LEVEL01„EQU‚LVLBASE+1LEVEL02„EQU‚LVLBASE+2LEVEL03„EQU‚LVLBASE+3LEVEL04„EQU‚LVLBASE+4LEVEL05„EQU‚LVLBASE+5PATCHES„EQU‚15*(*†TRACEFLAGS-SETINTRACFLAG(SYSPAR)*#TRCFTRP1EQU‚15‰SETTOTRACETRAP1%TRCFIOƒEQU‚14‰SETTOTRACEINTERRUPTS-TRCFTIMREQU‚13‰SETTOTRACETIMERINTERRUPTS.TRCFTRAPEQU‚12‰SETTOTRACEUSERTRAPS(2-15)'TRCFEXCPEQU‚11‰SETTOTRACEEXCEPTIONS'TRCFDSPTEQU‚10‰SETTOTRACEDISPATCHES2TRCFUIO‚EQU‚9ŠSETTOTRACEUSERCLAIMEDINTERRUPTS.TRCFMMU‚EQU‚8ŠSETTOTRACERETURNFROMLOADMMU/TRCFSINTEQU‚7ŠSETTOTRACESIMULATEDINTERRUPTéééY&bj:r[z^‚T.TRCFSYSFEQU‚6ŠSETTOTRACESYSFAILINTERRUPTS‰PAGE**ˆTRAP0EQUATES*T0P†EQU‚1SEMAPHOREP(WAIT)T0V†EQU‚2SEMAPHOREV(SIGNAL) T0READY‚EQU‚3TASKTOREADYLIST%T0PAGAL‚EQU‚4ALLOCATEPHYSICALPAGES T0PGFRƒEQU‚5FREEPHYSICALPAGEST0GETTCBEQU‚6SEARCHTCBLIST'T0FNDSEGEQU‚7FINDSEGMENTNAMEINTST2T0LOGPHYEQU‚8LOGICALTOPHYSICALADDRESSCONVERT'T0FNDGSGEQU‚9FINDSEGMENTNAMEINGST"T0ASRINTEQU‚10Œ'INTERRUPT'TOASR5T0QEVNTNEQU‚11ŒPLACEEVENTINASQ-ARGISTASKNAME2T0FNDSEMEQU‚12ŒFINDENTRYINUSERSEMAPHORETABLE6T0GTXTCBEQU‚13ŒGETTCBUSINGSESSIONPROVIDEDINCALL5T0PAUSE‚EQU‚14ŒPAUSEWHILEWAITINGFORIOTOCOMPLETE;T0DSRVX‚EQU‚15ŒDEALLOCATESERVERFUNCTION-WHENTASKSTOPS6T0DSEMX‚EQU‚16ŒDEALLOCATESEMAPHORES-WHENTASKSTOPS/T0DASQX‚EQU‚17ŒDEALLOCATEASQ-WHENTASKSTOPS;T0DSEGX‚EQU‚18ŒDEALLOCATEMEMORYSEGMENTS-WHENTASKSTOPS8T0EXEQDQEQU‚19ŒSENDMESSAGETOSERVER-WHENTASKSTOPSéé éé5T0DMONX‚EQU‚20ŒDETACHTASKFROMEXMONWHENTASKSTOPS.T0EXABRTEQU‚21ŒABORTUSERTASKFROMEXECMODE*T0WAKEUPEQU‚22ŒWAKEUPTASKFROMEXECMODE7T0QEVNTTEQU‚23ŒPLACEEVENTINASQ-ARGISTCBADDRESST0SCHED‚EQU‚36ŒSCHEDULEAROUTINEFOREXECUTIONINBACKGROUND.1T0GUARD‚EQU‚37ŒCALLASUBROUTINEINGUARDEDMODE.*8*„THEFOLLOWINGEQU'SDEFINEENTRIESTOSUBROUTINESONLY0*ˆTRAP0ENTRIESFOREXTERNALCALLSDONOTEXIST*5T0RYEXT1EQU‚3READYROUTINEENTRY-FROMTRAP1EXIT0T0RYEXIREQU‚3READYROUTINEENTRY-FROMEXITIRTSKILAST‚EQU„2‡TASKISLASTTASKINSESSION(SETONLYBYTERM)TSKIABRT‚EQU„1‡TASKWASABORTED+TSKIUVCT‚EQU„0‡TASKHASCLAIMEDUSERVECTOR**‰TCBSTATEBITDEFINITIONS*TSKSDORM‚EQU„15†TASKISDORMANTTSKSBLCK‚EQU„14†TASKISBLOCKED1TSKSSMWT‚EQU„13†TASKISBLOCKEDONEXECSEMAPHORE)TSKSEVWT‚EQU„12†TASKISWAITINGFOREVENT?TSKSAKWT‚EQU„11†TASKISWAITINGFORSERVICEREQACKNOWLEDGEMENT6TSKSWTEM‚EQU„10†TASKISWAITINGFORCOMMANDFROMEXMON TSKSSUSP‚EQU„9‡TASKISSUSPENDED*+TSK2TRMP‚EQU„7‡TASKHASPENDINGTERMINATION'TSK2RTEX‚EQU„6‡TASKWILLRETURNTOEXEC%TSK2EVWK‚EQU„5‡TASKISHEADEDFORASR$TSK2NRDY‚EQU„4‡TASKISONREADYLIST&TSK2WKWT‚EQU„3‡TASKHASPENDINGWAKEUP@TSK2ACK2‚EQU„2„TERMMESSAGETOSERVERSENTWHILEACKOUTSTANDING*/TSKSWMSK‚EQU„$FF00ƒMASKOFALLTASKWAITSTATES**…TCBEMMSKBITDEFINITIONS*"TEMTRAP1‚EQU‚1‡TRAP1ISMONITORED&TEMBUSER‚EQU‚16†BUSERRORISMONITORED*TEMADDER‚EQU‚17†ADDRESSERRORISMONITORED0TEMILLEG‚EQU‚18†ILLEGALINSTRUCTIONISMONITORED'TEMZDIVƒEQU‚19†ZERODIVIDEISMONITORED*TEMCHK„EQU‚20†CHKINSTRUCTIONISMONITORED.TEMTRAPV‚EQU‚21†TRAPVINSTRUCTIONISMONITORED/TEMPRIVƒEQU‚22†PRIVILEGEVIOLATIONISMONITORED&TEML1010‚EQU‚23†LINE1010ISMONITORED&TEML1111‚EQU‚24†LINE1111ISMONITORED*-TEMMCNTƒEQU‚27†MAXINSTRUCTIONCOUNTSUPPLIED=TEMTRACƒEQU‚28†SINGLEINSTRUCTIONTRACEREQUESTED(IFVCHG=0)1TEMVEQUƒEQU‚28†VALUE=TESTREQUESTED(IFVCHG=1)*TEMVCHGƒEQU‚29†VALUECHANGETESTREQUESTEDééééé ‰PAGE1************************************************* *&.TIOT.EQ¥*1**************************************************&*„TRAPINSTRUCTIONOWNERTABLE‚--TIOT*„ENTRYDEFINITIONS* ‰OFFSET‚0/TIOTTCB‚DS.L‚1ˆSERVERTASKCONTOLBLOCKADDRESS#TIOTSESSDS.L‚1ˆSERVERSESSIONCODE(TIOTSEM‚DS.W‚3ˆASQCONTROLLINGSEMAPHORE!TIOTADDRDS.L‚1ˆINTERRUPTADDRESS2TIOTMCNTDS.W‚1ˆCOUNTOFMESSAGESNOTACKNOWLEDGEDTIOTSTATDS.B‚1ˆTIOTSTATUS$TIOTPBSZDS.B‚1ˆPARAMETERBLOCKSIZETIOTELƒEQUƒ*ˆENTRYLENGTH*$*‚TIOTSTAT--STATUSBITDEFINITIONS*&TIOTSON‚EQUƒ15‡SERVERFUNCTIONENABLED=TIOTSTRMEQUƒ14‡SERVERWANTSNOTIFICATIONOFTASKTERMINATION?TIOTSPBOEQUƒ13‡SERVERWANTSPARAMETERBLOCKMOVEDWITHMESSAGEDTIOTSMSGEQUƒ12‡MESSAGESENTTOSERVER-SINCELASTSIGNALSEMAPHORE*)*‚TRAPINSTRUCTIONASSIGNMENTTABLECODES*(TIATEXECEQU‚1ˆTRAPISRESERVEDFOREXEC)TIATUSEREQU‚2ˆTRAPISASSIGNEDTOSERVERééé鸊PAGE1************************************************* *&.TR1.EQ¦*1*************************************************éééééé éÁÊ7ÒBÚ!***ˆTRAP#1EQUATES±*ÇGTSEG„EQU‚1ALLOCATESEGMENTšDESEG„EQU‚2DEALLOCATESEGMENT˜TRSEG„EQU‚3TRANSFERSEGMENTš&ATTSEGƒEQU‚4ATTACHSHAREABLESEGMENT’)SHRSEGƒEQU‚5GRANTSHAREDSEGMENTACCESS%MOVELLƒEQU‚6MOVELOGICALTOLOGICAL“'DCLSHRƒEQU‚7DECLARESEGMENTSHAREABLE‘,SNPTRCƒEQU‚8MOVETRACETABLETOUSERBUFFER'RCVSA„EQU‚9RECEIVESEGMENTATTRIBUTESCRTCB„EQU‚11ŽCREATETCB START„EQU‚13ŽSTARTTASK ABORT„EQU‚14ŽABORTTASK(SELF)™"TERM…EQU‚15ŽTERMINATETASK(SELF)•'TERMT„EQU‚16ŽTERMINATETASK(NOTSELF)‘"SUSPNDƒEQU‚17ŽSUSPENDTASK(SELF)—$RESUMEƒEQU‚18ŽRESUMESUSPENDEDTASK•(WAIT…EQU‚19ŽTASKBECOMESBLOCKED(SELF)$WAKEUPƒEQU‚20ŽWAKEUPAWAITINGTASK•/DELAY„EQU‚21ŽDELAYSOMENUMBEROFMILLISECONDS‰!RELINQƒEQU‚22ŽRELINQUISHCONTROL˜&TSKATTR‚EQU‚23ŽRETURNTASKATTRIBUTES”#SETPRIƒEQU‚24SETCURRENTPRIORITY—STOP…EQU‚25STOPTASK¢,EXPVCTƒEQU‚26SAVEEXCEPTIONVECTORADDRESSŽ'TRPVCTƒEQU‚27SAVETRAPVECTORADDRESS“#TSKINFO‚EQU‚28RETREIVECOPYOFTCB)RQSTPAƒEQU‚29REQUESTPERIODICACTIVATIONDELAYWƒEQU‚30DELAYANDWAITGTASQ„EQU‚31ŽALLOCATEANASQ›DEASQ„EQU‚32DEALLOCATEASQSETASQƒEQU‚33SETASQSTATUS"RDEVNTƒEQU‚34ŽREADEVENTFROMASQ—/QEVNT„EQU‚35ŽPUTEVENTINSOMEONEELSE'SQUEUE‰WTEVNTƒEQU‚36ŽWAITFOREVENTœ RTEVNTƒEQU‚37ŽRETURNFROMEVENT™!ATSEM„EQU‚41ŽATTACHTOSEMAPHORE—WTSEM„EQU‚42ŽWAITONSEMAPHORE™SGSEM„EQU‚43ŽSIGNALSEMAPHOREšDESEM„EQU‚44ŽDETACHSEMAPHOREšCRSEM„EQU‚45ŽCREATESEMAPHOREš0DESEMAƒEQU‚46ŽDETACHALLSEMAPHORES(THISTASK)‰-SERVERƒEQU‚51ESTABLISHSERVERFORUSERTRAP‹*DSERVEƒEQU‚52DETACHFROMSERVERFUNCTIONŽ.DERQSTƒEQU‚53SETUSER/SERVERR‚EQUESTSTATUS‰*AKRQSTƒEQU‚54ACKNOWLEDGESERVICEREQUESTŽCDIR…EQU‚58ŽCONFIGUREDIRECTIVECMR†EQU‚60ŽREQUESTCHANNEL0CISR…EQU‚61ŽCONNECTTOINTERRUPTSERVISEROUTINE(SINT…EQU‚62ŽSIMULATEUSERI/OINNTERRUPT)EXMON„EQU‚64ŽATTACHTOEXCEPTIONMONITOR+DEMON„EQU‚65ŽDETACHFROMEXCEPTIONMONITOR)EXMMSKƒEQU‚66ŽSETEXCEPTIONMONITORMASK!RSTATEƒEQU‚67ŽRECEIVETASKSTATE˜PSTATEƒEQU‚68ŽPUTTASKSTATEœ/REXMONƒEQU‚69ŽEXECUTETASKUNDEREXMONCONTROLŠ;MOVEPLƒEQU‚72ŽMOVEFROMPHYSICALADDRESSTOLOGICALADDRESS STDTIMƒEQU‚73ŽSETDATEANDTIME™ GTDTIMƒEQU‚74ŽGETDATEANDTIME™&*„MACROERQ--CALLSTRAP#1ROUTINES¡*Ç 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**************************************************.*ˆERRORRETURNCODESUSEDBYTRAP1DIRECTIVES*5RTCDDIRN‚EQU„1’DIRECTIVENUMBERIND0ISNOTASSIGNEDBRTCDPBLK‚EQU„2ŠPARAMETERBLOCKADDRESSNOTINUSER'SADDRESSSPACE)RTCDTASK‚EQU„3’TARGETTASKDOESNOTEXIST,RTCDNTBL‚EQU„4’REQUIREDTABLEDOESNOTEXIST4RTCDTFUL‚EQU„5’TABLEISFULL-NOROOMFORNEWENTRYDRTCDDPRQ‚EQU„6ˆDUPLICATEREQUEST-FUNCTIONCANNOTBEPERFORMEDTWICE/RTCDNFND‚EQU„7’ENTRYNOTFOUNDINTABLEORLIST)RTCDNMEM‚EQU„8’MEMORYSPACENOTAVAILABLECRTCDALOW‚EQU„9‰CALLERDOESNOTHAVEPERMISSIONTOCOMPLETEFUNCTIONARTCDSTAT‚EQU„10‹STATEOFTARGETTASKNOTVALIDFORTHISDIRECTIVE=RTCDLGCF‚EQU„11REQUESTCONFLICTSWITHEXISTINGTABLEENTRIESBRTCDADR1‚EQU„12ŠADDRESSOFSOMEPARAMETERNOTINUSER'SADDRSPACEBRTCDADR2‚EQU„13ŠADDRESSOFSOMEPARAMETERNOTINUSER'SADDRSPACE'RTCDENAB‚EQU„14‘FUNCTIONISNOTENABLED;RTCDOPTƒEQU„15INVALIDOPTIONSSPECIFIEDINPARAMETERBLOCK@RTCDPCNT‚EQU„16ŒINVALIDCOUNTORLENGTHFIELDINPARAMETERBLOCK*é ééâˆPAGE1**************************************************&.TRACE.EQ¤*1************************************************** *‡TRACETABLE*$*‡TRACETABLEHEADER-FIRST8BYTES* ‰OFFSET‚0 TRCTBLƒEQUƒ*!TRCPTRƒDS.Lƒ1‡TABLEENTRYPOINTERTRCLNGƒDS.Lƒ1‡TABLELENGTHTRCENTRSDS.Lƒ1‡TRACEENTRIES**ˆTRACEENTRIESDEFINITIONS*ˆ20BYTESFOREACHENTRY%*ˆONE20BYTESETFOREACHTRACECALL* ‰OFFSET0TRCCODE‚DS.W‚1‹TRACECODETRCSR„DS.W‚1‹STATUSREGISTERTRCPC„DS.L‚1‹PROGRAMCOUNTERTRCA0„DS.L‚1‹A0TRCA6„DS.L‚1‹A6TRCD0„DS.L‚1‹D0"TRCTIME‚DS.L‚1‹TIME(INMILLISECS)TRCTIM2‚DS.W‚1‹TIME(MICROSECS)TRCENTSZEQUƒ*éééééëŠPAGE1************************************************* *&.TST.EQ¦*1****************************************************„TASKSEGMENTTABLE*ˆCONTAINS‚PREAMBLE#*’MEMORYMANAGMENTLOADINFORMATION*’SEGMENTATTRIBUTEBLOCK*)SEGMENTS‚EQU‚4‰NUMBEROFSEGMENTSALLOWED*!ŠOFFSET0‡THISISANOFFSETTABLE*TST‡DS.L1‰!TSTDEBUGTOOL"TSTNSEGS‚DS.B1‰NUMBEROFSEGMENTS5TSTCSEGS‚DS.B1‰NUMBEROFSEGMENTSCURRENTLYEXISTING*TSTLMMUƒDS.W1‰INDEXTOLASTMMULOADLINE4TSTLATTR‚DS.W1‰INDEXTOLASTSEGMENTATTRIBUTELINETSTSTATƒDS.W1‹MMUSTATUS+TSTMMU„DS.W4*SEGMENTS‚MMULOADINFORMATION/TSTATTRƒDS.W4*SEGMENTS‚SEGMENTATTRIBUTEBLOCK8TSTWTSKƒDS.L1‰NAMEOFTASKWITHWINDOWTOADDRESSSPACE%TSTLEN„EQU*ƒLENGTHOFTASKSEGTABLE**‰TSTATTRFIELDS*(TSTANAME‚EQUTSTATTR-TSTMMUƒSEGMENTNAME5TSTAATTR‚EQUTSTATTR-TSTMMU+4SEGMENTATTRIBUTEFIELD2TSTAR1„EQUTSTATTR-TSTMMU+6MEMORYTYPEDESCRIPTOR/TSTAUCNT‚EQUTSTATTR-TSTMMU+7SEGMENTUSECOUNT**‰TSTSTATFIELDS *9TSTASN„EQUTSTSTATŠADDRESSSPACENUMBERFORTASK(1BYTE)*.*‰SEGMENTATTRIBUTEBITDEFINITIONS(TSTATTRF)*$SEGAUSED‚EQU„15†SEGMENTENTRYINUSE#SEGAROMƒEQU„14†SEGMENTISREADONLY/SEGASHRƒEQU„13†SEGMENTISSHAREDWITHINSESSION!SEGAGLBL‚EQU„12†SEGMENTISGLOBAL1SEGAMMIO‚EQU„11†SEGMENTISMEMORYMAPPEDIOSPACE'SEGAPROM‚EQU„10†SEGMENTISPHYSICALROM**‰TSTMMUFIELDS*TSTLB…EQU0ŠLOGICALBEGINTSTLE…EQU2ŠLOGICALENDTSTPO…EQU4ŠPHYSICALOFFSET/TSTCTL„EQU6ŠCONTROL(NULLBYTE+CONTROLBYTE)**‰MMUCONTROLREGISTERVALUES*!RAMCTL„EQU‚$01‡READ/WRITESEGMENT ROMCTL„EQU‚$03‡READONLY‚SEGMENTéô9ŠPAGE1************************************************* *&.UDR.EQ¦*1**************************************************%*ˆUSERDEFINEDDIRECTIVETABLEHEADER*!‰OFFSET„0‰THISISANOFFSETTABLEUDR†DS.L†1‰!UDR„DEBUGTOOL(UDRCNTƒDS.W†1‰NUMBEROFENTRIESINTABLE"UDRENTRYEQU‡*‰OFFSETTO1STENTRY**ˆUDRENTRYDEFINITION*&‰OFFSET„0‰OFFSETISFROMENTRYPOINTER1UDRSESS‚DS.L†1‰SESSIONOFTASKTHATCREATEDENTRYUDROPTƒDS.B†1‰OPTIONSUDREXIT‚DS.B†1‰EXITNUMBER&UDRADDR‚DS.L†1‰DIRECTIVEENTRYADDRESSUDRESIZ‚EQU‡*‰ENTRYLENGTH**ˆUDROPTIONS-SETINUDROPT*'UDROGLBLEQU‡4‰IFSET-ENTRYISGLOBALéééééý‰NOLIST FHSPB„MACRO‰OPTƒNOCL,NOMEX<*ˆThismacrodefinesanFHSparameterblockinstorage.Some?*ˆofthemoreoftensuppliedfieldsareacceptedasparameters.*'*ˆ#1‚=PARMBLOCKPREFIX(3BYTESMAX).5*ˆ#2‚=LOGICALUNITNUMBER(5=TERMIN,6=TERMOUT,7=#PR)*ˆ#3‚=VOLUMEID*ˆ#4‚=USERID*ˆ#5‚=CATALOG*ˆ#6‚=FILENAME*ˆ#7‚=EXTENTION *ˆ#8‚=LRECL*ˆ#9‚=BLKSIZE*ˆ#A‚=OPTIONS*ˆ#B‚=SHAREDSEGMENTOPTION&*ˆ#C‚=SHAREDSEGMENTSTARTINGADDRESS ‰OPT‡MEX,NOCL SPC 2)\1FHSPB‚ DS.L†0‰"\1"-FHS-PARAMETERBLOCK\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‰Statusuponreturn ‰IFC‡'\2',''\1LU…DC.B†0‰Logicalunit‰ENDC ‰IFNC†'\2',''\1LU…DC.B†\2ˆLogicalunit‰ENDC ‰IFC‡'\3',''\1VOL„DCB.B…4,0‡VolumeID‰ENDC ‰IFNC†'\3',''\1VOL„DC.B†'\3'†VolumeID‰ENDC ‰IFC‡'\4',''\1USERƒDCB.B…2,0‡UserID‰ENDC ‰IFNC†'\4',''\1USERƒDC.W†\4ˆUserID‰ENDC ‰IFC‡'\5',''\1CAT„DCB.B…8,'ˆ'Catalog‰ENDC ‰IFNC†'\5',''\1CAT„DC.B†'\5'†Catalog‰ENDC ‰IFC‡'\6',''\1FILEƒDCB.B…8,'ˆ'Filename‰ENDC ‰IFNC†'\6',''\1FILEƒDC.B†'\6'†Filename‰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ˆWritecode\1RECDƒDC.B†$0ˆRead‚code ‰IFC‡'\8',''\1LRECL‚DCB.B…2,0‡Recordlength‰ENDC ‰IFNC†'\8',''\1LRECL‚DC.W†\8ˆRecordlength‰ENDC ‰IFC‡'\9',''\1BLKSZ‚DCB.B…4,0‡Blocksize‰ENDC ‰IFNC†'\9',''\1BLKSZ‚DC.L†\9ˆBlocksize‰ENDC‰IFC‡'\B','SS=YES'/\1SS1ST‚DC.L†\CˆSharedsegmentSTARTINGaddress,\1SSEND‚DC.L†0‰SharedsegmentENDINGƒaddress"\1SSNAM‚DC.L†0‰SharedsegmentNAME‰ENDC‰ENDM   IOSPB„MACRO‰OPTƒNOCL,NOMEX<*ˆThismacrodefinesanIOSparameterblockinstorage.Some?*ˆofthemoreoftensullpiedfieldsareacceptedasparameters.*'*ˆ#1‚=PARMBLOCKPREFIX(3BYTESMAX).*ˆ#2‚=LOGICALUNITNUMBERbcc*ˆ#3‚=OPTIONS*ˆ#4‚=RECORDNUMBER*ˆ#5‚=STARTOFBUFFER*ˆ#6‚=ENDƒOFBUFFER ‰OPT‡MEX,NOCL SPC 2)\1IOSPB‚DS.L†0‰"\1"-IOS-PARAMETERBLOCK\1IOCOD‚DCB.B…1,0‡Code\1FUNCD‚DCB.B…1,0‡Functioncode ‰IFC‡'\3',''\1IOOPT‚DCB.B…2,0‡Options‰ENDC ‰IFNC†'\3',''\1IOOPT‚DC.W†\3ˆOptions‰ENDC$\1IOSTA‚DCB.B…1,0‡Statusuponreturn ‰IFC‡'\2',''\1IOLUƒDCB.B…1,0‡Logicalunit‰ENDC ‰IFNC†'\2',''\1IOLUƒDC.B†\2ˆLogicalunit‰ENDC‰DC.W†0‰-Reserved- ‰IFC‡'\4',''\1IORNO‚DCB.B…4,0‡Recordnumber‰ENDC ‰IFNC†'\4',''\1IORNO‚DC.L†\4ˆRecordnumber‰ENDC ‰IFC‡'\5',''!\1IOSOB‚DCB.B…4,0‡Startofbuffer‰ENDC ‰IFNC†'\5',''\1IOSOB‚DC.L†\5ˆStartofbuffer‰ENDC ‰IFC‡'\6',''\1IOEOB‚DCB.B…4,0‡Endofbuffer‰ENDC ‰IFNC†'\6',''\1IOEOB‚DC.L†\6ˆEndofbuffer‰ENDC&\1IOSLL‚DC.L†0‰Lengthofdatatransfer ‰IFC‡'\7',''!\1IOCAD‚DC.L†0‰Completionaddress‰ENDC ‰IFNC†'\7',''"\1IOCAD‚DC.L†\7ˆCompletionaddress‰ENDC‰ENDM    REGS…MACRO‰OPTNOCL,NOMEX9*********************************************************5*‚ThePREFIXfortheregisterlabelsisprovidedby„*7*‚appendingtheCHARACTERtothe"REGS"macroname...‚**·*3*‚Adescriptioncanbeprovidedasaparameter...†**·* *‚Example:­**REGS.E‚Ž**·*9********************************************************* ‰OPTNOCL,MEX#\0AREAƒDS.L†0‰Registersavearea\1*‡-Dataregisters-\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*‡-Addressregisters-\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=addressof\1FHSparmblock1‰MOVE.W„#$0080,(A0)‰>..BuildFHSALLOCATEcommand&‰TRAP†#3’>..IssuetheALLOCATEcommand SPC 1‰ENDM   ASSIGNƒMACRO4‰LEA‡\1FHSPB,A0Š>..A0=addressof\1FHSparmblock/‰MOVE.W„#$0040,(A0)‰>..BuildFHSASSIGNcommand$‰TRAP†#3’>..IssuetheASSIGNcommand SPC 1‰ENDM   GET†MACRO4‰LEA‡\1IOSPB,A0Š>..A0=addressof\1IOSparmblock-‰MOVE.W„#$0001,(A0)‰>..BuildIOSREADcommand"‰TRAP†#2’>..IssuetheRE ADcommand SPC 1‰ENDM PUT†MACRO4‰LEA‡\1IOSPB,A0Š>..A0=addressof\1IOSparmblock.‰MOVE.W„#$0002,(A0)‰>..BuildIOSWRITEcommand#‰TRAP†#2’>..IssuetheWRITEcommand SPC 1‰ENDM  UPDATEƒMACRO4‰LEA‡\1IOSPB,A0Š>..A0=addressof\1IOSparmblock/‰MOVE.W„#$0008,(A0)‰>..BuildIOSUPDATEcommand$‰TRAP†#2’>..IssuetheUPDATEcommand SPC 1‰ENDM  CLOSE„MACRO4‰LEA‡\1FHSPB,A0Š>..A0=addressof\1FHSparmblock.‰MOVE.W„#$0004,(A0)‰>..BuildFHSWRITEcommand#‰TRAP†#3’>..IssuetheCLOSEcommand SPC 1‰ENDM   ISIT…MACRO ‰IFC‡'\0',''2‰MOVE.W„\1,D0>..D0=Datatobecompared(ARG#1)‰CMP.W…\2,D0>..ARG#2vsARG#1‰ENDC ‰IFNC†'\0',''3‰MOVE.\0ƒ\1,D0>..D0=Datatobecompared(ARG#1)‰CMP.\0„\2,D0>..ARG#2vsARG#1‰ENDC SPC 1‰ENDM   XFER…MACRO‰IFNC†'\3','D0'4‰MOVE.L„\3-1,D0>..D0=Thenumberof".\0"tomove.‰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)+‰>..Moveone".W"‰ENDC ‰IFNC†'\0','',XFER\@ƒMOVE.\0ƒ(A0)+,(A1)+‰>..Moveone".\0"‰ENDC‰DBRA†D0,XFER\@‹>..Done? SPC 1‰ENDM    PASSLU6‚MACRO1‰LEA‡LU6\@,A0Œ>..LoadregisterA0withPBaddress%‰TRAP†#3’>.."Receive"logicalunit#6&‰BRA‡CON\@>..Brancharoundparmblock SPC 1,LU6\@„DSˆ0“>..Logicalunitmodifyparmblock)‰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* ŠOFFSET0STTTID„DS.Lƒ1’TERMINALI.D.STTSES„DS.Lƒ1’SESSIONNO.%STTINC„EQU„*-STTTID‹LENGTHOFENTRIE S ŠOFFSET0BATSTATƒDS.Wƒ1‰STATUSBATUSRNO‚DS.Wƒ1‰USERNO.BATSES„DS.Lƒ1‰SESSIONNUMBER**‚DEFAULTVALUES*$SYSVOL„EQU„'„'„SYSTEMVOLUMEDEFAULT!DFLTUNOƒEQU„0‰DEFAULTUSERNUMBER DFLTCAT1‚EQU„'„'„DEFAULTCATALOG DFLTCAT2‚EQU„'„'„DEFAULTCATALOG*)EETPNAMƒEQU„'&EET'„EETTASKANDPSCTNAME(EETDNAMƒEQU„'.EET'„EETDATASEGMENTNAME)SCTPNAMƒEQU„'&SCT'„SCTTASKANDPSCTNAME(SCTDNAMƒEQU„'.SCT'„SCTDATASEGMENTNAME-BCTPNAMƒEQU„'&BCT'„BATCHCONTROLSESSIONTASK)EETSESNO‚EQU„2‰SESSIONNUMBEROFEETTASK"STKLEN„EQU„96ˆEET/SCTSTACKLENGTH0TIBASG„EQU„25ˆTERMINALASSIGNED(FHSEQUATE)BITCENTURYƒEQU„1900IYEAR…EQU„80ˆINITIALYEAR*'SCTINBLƒEQU„160‡CDFINPUTBUFFERLENGTH4SCTLUN„EQU„0‰LUNFORSCTINTERACTIVETERMINALDIALOG'$,048"<@DH1MAXTSKNO‚EQU„8‰MAXNO.ASQENTRIESQUEUEDFORSCT-MAXVNTLN‚EQU„26ˆMAXLENGTHOFSCT'SASQENTRY+XOFF†EQU„$5E‡UPARROW(HALTTERMINALINPUT)'NOSUB…EQU„$7E‡NOSUBSTITUTIONCHARACTER)IPRISCTƒEQU„128‡INITIALPRIORITYSCTTASK'LPRISCTƒEQU„255‡LIMITPRIORITYSCTTASK(IPRIBCTƒEQU„64ˆINITIALPRIORITYBCTTASK'LPRIBCTƒEQU„127‡LIMITPRIORITYBCTTASK**ˆSESSIONOPTIONBITS(D7)*?BTCDFILE‚EQU„31ˆ1=>CMDFILE0=>CMDDEVICE(PROMPT/INPUTSCTLUN)%BTLDFILE‚EQU„30ˆ1=>LDFFILE0=>DEVICE*BTREAD5ƒEQU„29ˆ1=READLUN5,0=>READLUN0;BTSUBPOS‚EQU„28ˆ1=>POSITIONALARGUMENTSUBSTITUTION,0=>TAG'BTDTIMEƒEQU„27ˆ1=>REQUESTDATEANDTIME:BTREREAD‚EQU„26ˆ1=>RE-READTHECURRENTRECORD,0=>READNEXTUNSOLICITEDBREAKSINCELASTCOMMANDINPUTBTBATCHƒEQU„24ˆ1=>BATCHMODE3BTBATACK‚EQU„23ˆ1=>RESPONSETOQUEUEBATCHRECEIVED#BTBATNAK‚EQU„22ˆ1=>BATCHQUEUEFULL&BTCMDABT‚EQU„21ˆ1=>CHAINABORTCOMMAND%BTSUBSER‚EQU„20ˆ1=>SUBSTITUTIONERROR+BTENDSKP‚EQU„19ˆ1=>READUNTIL/ENDIFFOUNDABTFORSKP‚EQU„18ˆ1=>READUNTIL/ENDFORFOUND(USEDWITHBTENDSKP)&BTARGNOE‚EQU„17ˆ1=>TOOMANYARGUMENTS*‰EQU„16ˆNOTASSIGNED* *ˆ**SYSTEMOPTIONBITS(SYSOPT)*ASOSYSMSG‚EQU„1‰1=>INVOKEPRIV.UPSYSTEM.NWCHAINFILEONSESSION1/SOBATOLY‚EQU„0‰1=>BATCHMODEONLYLISTINFORCE2********* FOLLOWING CLEARED EACH COMMAND *********ABTSLASHƒEQU„7‰1=CHAINCONDTIONAL(INHIBITSUBSITUTIONERRORMSGS)BTEOF…EQU„6‰1=>EOFENCOUNTERD%BTCHNABT‚EQU„5‰1=>ABORTIFCHAINMODESUBSTITUTIONPERFORMED,0=>NOSUBSTITUTION'BTMSGI„EQU„3‰1=>INHIBITTRAP1MESSAGES5BTLODGOƒEQU„2‰1=>LOADONLY(NOSTART)0=>LOAD&STARTBTATSIGN‚EQU„1‰1=>"@"COMMAND(BTECHO„EQU„0‰1=>INPUTWASECHOEDTOLDF*O******************************************************************************* *ˆSHAREOPT:OPTIONSA-OBITMASK3*ˆ.ARGSEGMENT(LOCALLY/SESSIONSHAREDSEGMENT)+$FEO*******************************************************************************2********* FOLLOWING SET BY 'OPT' COMMAND *********5BTCHNOVR‚EQU„15ˆO:1=>OVERIDEBTCHNABT(IGNOREERROR)ABTNOECHO‚EQU„14ˆN:1=>NOECHOOFCDF,ORRESULTSOFARG,DEF,OROPT9BTPRTSKP‚EQU„13ˆM:1=>PRINTCHAINCONDITIONALSDURINGSKIP5BTPRTIFƒEQU„12ˆL:1=>PRINTCHAINCONDITIONALCOMMANDSDBTNOLOHI‚EQU„11ˆK:1=>INHIBITTRANSLATINGLOWERTOUPPERCASEONREAD?BTOPTJ„EQU„10ˆJ:1=>INHIBITSBARGECHOINPUTLINEINCHAINMODE)BTABTDMP‚EQU„9‰I:1=>ABORTDUMPREQUESTED9BTBRKSTP‚EQU„8‰H:1=>STOPALLTASKSONBREAK,0=>TERMINATEBTOPTG„EQU„7‰G:NOTASSIGNEDBTOPTF„EQU„6‰F:NOTASSIGNEDBTOPTE„EQU„5‰E:NOTASSIGNED@BTOPTD„EQU„4‰D:1=>ONLYDEFAULTTASKTERMINATED/STOPPEDONBREAKBTOPTC„EQU„3‰C:NOTASSIGNED&BTBELL„EQU„2‰B:1=>RINGBELLONPROMPT,BTOPTA„EQU„1‰A:1=>ABORTCHAINFILEIFRA<>0O********************************************************************************(LDRDIR„EQU„1’TRAP4-FUNCTION1:LOADER*+*‚LOADERRETURNCONDITIONSTOWAITINGTASK:#*‚Z=1,D0=0=>LOADSUCCESSFULL #*†0,D0=ERRORCODE=>LOADFAILED7*‚A0->PARAMETERBLOCK,TCBNOWASALLOCATEDBYLOADER* *‚ABORTCODES)ABTBRK„EQU„$E0000000DIAGNOSTICFORBREAK1ABTNOBRK‚EQU„$FFFF0000DIAGNOSTICABORTNOTBREAK(ABRTREQƒEQU„$8006…TERMINALABORTREQUEST0AABRTREQ‚EQU„'8006'„ASCIITERMINALABORTREQUEST"ABTNOMEM‚EQU„$8008…NOMEMORYSPACE"BRKABRTƒEQU„$8009…BREAKABORTCODEEETDIAGN‚EQU„$FFFF0000 EETCODEƒEQU„$8002…ABORTEDBYEET* *ˆ**EQUATESFORSECURITYOPTION*PWVOL…EQU„'„'„PASSWORDVOLUME PWUSR…EQU„0‰PASSWORDUSERNUMBER"PWCAT1„EQU„'PRIV'„PASSWORDCATALOGPWCAT2„EQU„'„'„CATALOG2PWFIL1„EQU„'ACCO'„FILENAMEPWFIL2„EQU„'UNT'„FILE2PWEXT…EQU„'PW'†PASSWORDEXTENT PWPROT„EQU„$00FF…OWNERREADONLY!PWRECL„EQU„16ˆTOTALRECORDLENGTHPWKSIZ„EQU„4‰KEYSIZEPWFBLK„EQU„0‰FAB,BLOCK*"*ˆ**EQUATESFORACCOUNTINGOPTION* OWRECL„EQU„64OWEXT…EQU„'OW'OWKSIZ„EQU„4‰KEYSIZE'OWDEPTSƒEQU„4‰STARTOFDEPARTMENTFIELD$OWDEPTCƒEQU„8‰DEPARTMENTFIELDCOUNT"OWNAMESƒEQU„12ˆSTARTOFNAMEFIELDOWNAMECƒEQU„20ˆNAMEFIELDCOUNT+OWLLOFFS‚EQU„32ˆSTARTOFLASTLOGOFFFIELD'OWLLOFFC‚EQU„8‰LASTLOGOFFFIELDCOUNT-OWCTIMSƒEQU„40ˆSTARTOFCUMULATIVETIMEFIELD)OWCTIMCƒEQU„8‰CUMULATIVETIMEFIELDCOUNT+OWSCNTSƒEQU„48ˆSTARTOFSESSIONCOUNTFIELD(OWSCNTCƒEQU„4‰SESSTIONCOUNTFIELDCOUNT#OWRESTSƒEQU„52ˆSTARTOFRESETFIELDOWRESTCƒEQU„8‰RESETFIELDCOUNT***<*ˆERRORMESSGEHANDLEREQUATESFORNON-TRAPRELATEDMESSAGES**’ASOF9/1/81**'EM_STRTS‚EQU„$300†STARTSESSIONMESSAGE%EM_ENDSS‚EQU„$301†ENDSESSIONMESSAGEEM_BREAK‚EQU„$302†BREAK"EM_DFMSG‚EQU„$303†DEFAULTSMESSAGE!EM_OPTMS‚EQU„$304†OPTIONSMESSAGEEM_RETRN‚EQU„$305†LEFTMARGIN(EM_PLUG1‚EQU„$306†DISPLAYFROMPLUGPOOLEM_LODED‚EQU„$307†TASKLOADED,EM_LODEB‚EQU„$308†TASKLOADEDBINARYSESSIONEM_STOPƒEQU„$309†TASKSTOPPED-EM_STOPB‚EQU„$30A†TASKSTOPPEDBINARYSESSIONEM_CONTƒEQU„$30B†TASKCONTINUED/EM_CONTB‚EQU„$30C†TASKCONTINUEDBINARYSESSION!EM_TERMD‚EQU„$30D†TASKTERMINATED0EM_FINIB‚EQU„$30E†TASKTERMINATEDBINARYSESSION!EM_TERMT‚EQU„$30F†TASKTERMINATED-EM_TERMB‚EQU„$310†TASKABORTEDBINARYSESSIONEM_REJCT‚EQU„$311†LOGONREJECT$EM_ARGXƒEQU„$312†"<"NOTEQUALTO">"!EM_CTION‚EQU„$313†CAUTION:USER=0&EM_PRIVƒEQU„$314†PRIVELEGEDUSERERROR"EM_CMDXƒEQU„$315†COMMANDNOTFOUND!EM_VOLXƒEQU„$316†VOLUMENOTFOUND$EM_ARGNO‚EQU„$317†TOOMANYARGUMENTS EM_NTASK‚EQU„$318†TASKNOTFOUND+EM_NONOƒEQU„$319†TASKNAMEINVALID/PROTECTED"EM_LUNER‚EQU„$31A†LUNNOTASSIGNED*EM_NCONT‚EQU„$31B†TASKCANNOTBECONINUED$EM_ALSTR‚EQU„$31C†STARTINDIVIDUALLY$EM_NESTƒEQU„$31D†NESTINGLEVELERROR*EM_NROOM‚EQU„$31E†RETURNSTACKSPACEERROR)EM_NDEVƒEQU„$31F†DEVICENOTALLOWEDERROR*EM_IFLEV‚EQU„$320†IFLEVELEXECEEDEDERROR!EM_ENDIF‚EQU„$321†TOOMANYENDIFS&EM_SYNTX‚EQU„$322†CHAINCOMMANDSYNTAX)EM_REGXƒEQU„$323†DISPLAYPSUEDOREGISTERS#EM_NOBAT‚EQU„$324†BATCHNOTALLOWED"EM_NSELF‚EQU„$325†SELFNOTALLOWED%EM_BASER‚EQU„$326†BATCHSESSIONERROR)EM_BASES‚EQU„$327†BATCHSESSIONNOTFOUND$EM_BANUM‚EQU„$328†USERNO.NOTFOUND+EM_NOTBA‚EQU„$329†NOTALLOWEDINBATCHMODE*EM_QBATC‚EQU„$32A†BATCHJOBQUEUEDMESSAGE"EM_QRUNƒEQU„$32B†BATCHJOBRUNNING EM_QDONE‚EQU„$32C†BATCHJOBDONE"EM_QFULL‚EQU„$32D†BATCHQUEUEFULL%EM_BABRT‚EQU„$32E†BATCHJOBCANCELLED"EM_NOREC‚EQU„$32F†RECORDNOTFOUND$EM_NONUM‚EQU„$330†USERNO.NOTFOUND"EM_NUSER‚EQU„$331†INVALIDUSERNO.#EM_NCHAN‚EQU„$332†NOTINCHAINMODE"EM_VSIZE‚EQU„$333†VALUESIZEERROR!EM_FILNA‚EQU„$334†FILEDESCRIPTOREM_NOCHG‚EQU„$335†NOCHANGE EM_DFLTV‚EQU„$336†DEFAULTVOLUMEEM_OPTER‚EQU„$337†OPTION%EM_BONLY‚EQU„$338†NOTALLOWEDONLINEEM_INVLU‚EQU„$339†INVALIDLUN%EM_FDMIS‚EQU„$33A†FILE/DEVICEMISSING#EM_PRMIT‚EQU„$33B†ACCESSPERMISSION!EM_RVRSE‚EQU„$33C†VALUESREVERSED EM_PTASK‚EQU„$33D†PROTECTEDTASK EM_CMDER‚EQU„$33E†COMMANDSYNTAX%EM_FLDSZ‚EQU„$33F†FIELDSIZEEXCEEDED'EM_NFILE‚EQU„$340†FILEWASNOTASSIGNED ,EM_NOCVT‚EQU„$341†NUMERICALCONVERSIONERROR*ééé‰PAGE1************************************************* *&.UST.EQ¦*1***************************************************ˆUSERSEMAPHORETABLE* ‰OFFSET0UST†DS.L„1†!UST„DEBUGTOOL)USTNEXT‚DS.L„1†LINKTONEXTTABLESEGMENT*USTNSEG‚DS.W„1†NUMBEROFSEGMENTSINTABLE.USTNPAGEDS.W„1†NUMBEROFPAGES-THISSEGMENT$USTMENT‚DS.W„1†MAXNUMBEROFENTRIES(USTCENT‚DS.W„1†CURRENTNUMBEROFENTRIES%USTFENT‚DS.L„1†ADDRESSOFFIRSTENTRY$USTENTRYEQU…*†OFFSETTOFIRSTENTRY**ˆUSTENTRYDEFINITION* ‰OFFSET0&USTTNAMEDS.L„1†ORIGINATOR'STASKNAME+USTSESSNDS.L„1†ORIGINATOR'SSESSIONNUMBERUSTSNAMEDS.L„1†SEMAPHORENAME:USTUCNT‚DS.W„1†#USERSOFSEMAPHOREOR-1IFPOINTERENTRY:USTXCNT‚DS.B„1…INITIALCOUNTORCOUNTOFWAITSANDSIGNALS(USTTYPE‚DS.B„1…SEMAPHORETYPE(1,2OR3)USTSEMƒDS.W„3†SEMAPHORE ‰OFFSET*-6*USTSPTR‚DS.L„1†POINTERTOACTUALSEMAPHORE‰DS.W„1†UNUSEDUSTEL„EQU…*†ENTRYLENGTHééééLO*******************************************************************************O**********************************************************************************É***/***UTILITY.MC--MACROSOFGENERALUTILITY’******É***5***†ENVIRONMENT:‚In68000assemblylanguagecode.•******É***@***†FUNCTION:‚Thesemacrosareofageneralnature.‚Theyare‰***A***‰intendedtobeacollectionoftoolsusefulinanyappli-‡******‰cation.¹******É******†NOTES:½******É***O*******************************************************************************O******************************************************************************* *,*‚Revisionhistory(addnewchangestotop).*…Date†Author‰ChangesG*…--------‚-------------‚----------- -----------------------------------'*†1/6/83‚SteveFranckƒInitialwriting.*ŠPAGE*.*‚Macrostopushandpopusingthestack(A7).*‚e.g.,„PUSH.B#'*'ƒorƒPOP.LD0* PUSH†MACROŠMOVE.\0\1,-(A7)ŠENDM POP‡MACROŠMOVE.\0(A7)+,\1ŠENDM *A*‚Macrostosaveandrestoreregistersusingthestack,asattheG*‚beginningofasubroutine.‚Validsizesare.Land.W;defaultsto.L.'*‚SAVEpushesregistersontothestack.I*‚RENEWgetsregistersfromthestackwithoutchangingthestackpointer.'*‚RESTOREpopsregistersoffthestack.%*‚e.g.,„SAVED0-D3/A1…RESTORE.WD3-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*‚Macrotoreservestorageinanoffsetblock.‚Invokeasfollows:*ŒRESERVE.<#ofbytes>‚