IMD 1.17: 11/11/2014 11:08:28 82VKXSVRDOS B* VERSADOS/RMS68K SRC/OBJ 4.4 (NOT BOOTABLE) SN=49367 10 OF 30  SR10q82VKXSVRDOS 0420¤i-*‚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†}01111110SDLCFLAGSDLCFLAG‚EQU„$7E *************************** Ending of &.NEC7201.EQ ***************************ééééééé‰PAGE************************** Beginning of &.NIO.EQ ************************** ŠLLENƒ120O*******************************************************************************O********************************************************************************.*ˆDATASTRUCTURESANDEQUATESFORINTERNALI/O**ˆMODIFICATIONHISTORY:*ˆ10/08/84‚DeletedreferencetoIOPSMPBsecondarymapbit.8*‰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„EQU„2’IOSTRAPINSTRUCTIONNUMBER(FHSTIN„EQU„3’FHSTRAPINSTRUCTIONNUMBER/FHSID…EQU„'.FHS'FILEHANDLINGSERVICESTASKID1FMSID…EQU„'.FMS'FILEMANAGEMENTSERVICESTASKID.IOSID…EQU„'.IOS'INPUT/OUTPUTSERVICESTASKID'IODID…EQU„'.IOD'I/OCOMPLETIONTASKID(TTYID…EQU„'.TTY'TERMINALDRIVERTASKIDYMa?iBŠDS.Bƒ1’EVENTCODEŠDS.Lƒ1’SENDERTASKŠDS.Lƒ1’SENDERSESSIONEVTCOD„DS.Bƒ1’SUB-CODEŠDS.Bƒ1’RESERVEDEVTDCB„DS.Lƒ1’DCBADDRESSEVTLNG„EQU„*’EVENTLENGTH *Ç!*‚FMSI/OEVENTMESSAGESTRUCTURE*Ç ŠOFFSET0’STARTWITHTEXTOFFSETŠDS.Bƒ1’EVENTLENGTHŠDS.Bƒ1’EVENTCODEŠDS.Lƒ1’SENDERTASKŠDS.Lƒ1’SENDERSESSIONEVTKOD„DS.Bƒ1’SUB-CODEŠDS.Bƒ1’RESERVEDEVTLUE„DS.Lƒ1’LUTENTRYEVTLUT„DS.Lƒ1’LUT%EVTTIN„DS.Bƒ1’TRAPINSTRUCTIONNUMBER"EVTPRI„DS.Bƒ1’REQUESTOR'SPRIORITY#EVTTSK„DS.Lƒ1’REQUESTOR'STASKNAME(EVTSES„DS.Lƒ1’REQUESTOR'SSESSIONNUMBEREVTUNM„DS.Wƒ1’USERNUMBEREVTRD0„DS.Lƒ1’REQUESTOR'SD0"EVTRA0„DS.Lƒ1’ADDRESSOFIOCB(A0)EVTPST„DS.Bƒ1’PBSTATUSEVTPSZ„DS.Bƒ1’PBLENGTHEVTLEN„EQU„*’LENGTHOFMESSAGE *Ç#*‚FHSCOMMANDBITEQUATES(16BITS)*ÇFHALLOBƒEQU„7’ALLOCATEFHASGNBƒEQU„6’ASSIGN&FHCHNGBƒEQU„5’CHANGEACCESSPERMISSIONFHRENMBƒEQU„4’RENAMEFHPROTBƒEQU„3’PROTECTFHCLOSBƒEQU„2’CLOSEFHDELTBƒEQU„1’DELETEFHCKPTBƒEQU„0’CHECKPOINT!FHRATTBƒEQU„7’RETRIEVEATTRIBUTES#FHFDENBƒEQU„6’FETCHDIRECTORYENTRY$FHFDMNBƒEQU„5’FETCHDEVICEMNEMONICS"FHCHLUBƒEQU„4’CHANGELUASSIGNMENTFHDVOLBƒEQU„0’DEFAULTVOLUME *Ç"*‚FHSOPTIONBITEQUATES(16BITS)*ÇFOPOVRTB‚EQU„3’OVERWRITEFOPTRNBƒEQU„4’TRUNCATE$FOPABFBƒEQU„5’ALLOCATESHAREDBUFFER'FOPBEGBƒEQU„6’POSITIONATBEGINNING/END!FOPADRBƒEQU„11‘RETURNPHY.ADRBITFOPSLUBƒEQU„0’SEND/RECEIVELUFOPKEPBƒEQU„15‘KEEPASSIGNMENT **‚IOSFUNCTIONCODEEQUATES*IOSFIO„EQU„0’DATATRANSFERIOSFCM„EQU„1’COMMANDSIOSFPV„EQU„$80PRIV.COMMANDS *Ç"*‚IOSOPTIONBITEQUATES(16BITS)*ÇIOPASCBƒEQU„0’ASCII/BINARYIOPWATBƒEQU„1’WAIT/PROCEED4IOPUNPBƒEQU„2’CONDITIONALPROCEED/UNCONDITIONALPROCIOPFORBƒEQU„3’FORMATTED/IMAGE*IOPBRKBƒEQU„4’EXCLUSIVEBREAKNOTIFICATIONIOPECHBƒEQU„5’ECHO/NOECHOIOPRECBƒEQU„6’RECORD/BLOCK*IOPLRNBƒEQU„7’LOGICALRECORD/RANDOMRECORD(IOPNOKBƒEQU„8’NOKEYRETURNED/RETURNKEY0IOPNOCBƒEQU„9’NOCOMPLETIONADDR/COMPLETIONADDR!IOPINFBƒEQU„10‘INPUTFORMAT/IMAGEIOPFTRKƒEQU„12‘FORMATTRACK&IOPCTABƒEQU„12‘CLEARTYPEAHEADBUFFER(IOPCDOBƒEQU„12‘CLEARDISCARDOUTPUTMODEIOPTSKBƒEQU„15‘TASKIDSUPPLIED *Ç#*‚ATTENTIONEVENTMESSAGESTRUCTURE*Ç%ŠOFFSET0’STARTWITHPARAMETEROFFSETŠDS.Bƒ1’EVENTLENGTHŠDS.Bƒ1’EVENTCODEEVADEV„DS.Lƒ1’DEVICEMNEMONICEVASTA„DS.Wƒ1’STATUS EVALEN„EQU„* *Ç(*‚ATTENTIONSTATUSBITEQUATES(16BITS)*ÇEVATNASƒEQU„1’DEVICEASSIGNED *Ç *‚IOSPARAMETERBLOCKEXTENSIONS*Ç*ŠOFFSETIOSBLNSTARTWITHENDOFIOSBLOCK!IOSTSK„DS.Lƒ1’REQUESTOR'STASKID!IOSSES„DS.Lƒ1’REQUESTOR'SSESSIONIOSNLN„EQU„*’TOTALLENGTHŠPAGE *À***********5*‚DEVICECONTROLBLOCK(DCB)DATASTRUCTURE•*‚DCB‚* *À*********** ŠOFFSET0’STARTWITHZEROOFFSET#DCBPTR„DS.Lƒ1’POINTERTONEXTBLOCKDCBAID„DS.Lƒ1’ASCIIIDENTIFIER6DCBDCQ„DS.Lƒ1’ADDRESSOFDCQENTRY(0=NOTHINGPENDING)#DCBDID„DS.Lƒ2’DRIVERID(TASKNAME)$DCBLUT„DS.Lƒ1’ADDRESSOFCURRENTLUT2DCBATT„DS.Lƒ1’ATTRIBUTESOFDEVICE†7/6/83MOTOROLA DCBWCD„DS.Bƒ1’WRITEPROTECTCODEDCBRCD„DS.Bƒ1’READPROTECTCODEDCBTMO„DS.Wƒ1’USEFLAGDCBWNT„DS.Wƒ1’WRITECOUNTDCBRNT„DS.Wƒ1’READCOUNTDCBFLG„DS.Wƒ1’DEVICEFLAGDCBCCB„DS.Lƒ1’CHANNELID#DCBCDV„DS.Bƒ1’CHANNELDEVICENUMBER!DCBPRI„DS.Bƒ1’CONNECTIONPRIORITY#DCBCRN„DS.Lƒ1’CURRENTRECORDNUMBER8DCBIOS„DS.BƒIOSBLNROOMFORIOCB(EXCLUDINGEXTENSIONS!),DCBLBA„DS.Lƒ1’LOGICALADDRESSOFPARAMBLOCK-DCBCCF„DS.Bƒ1’CONFIGURATIONCOORDINATIONFLAG'*0-->DEVICEINDEFAULTCONFIGURATION2*1-->DEVICEMAYNOTBEINDEFAULTCONFIGURATIONDCBBCT„DS.Bƒ1’BREAKCOUNT*DCBBRK„DS.Lƒ1’ADDRESSOFBREAKSERVICELUT#DCBSRV„DS.Lƒ1’BREAKSERVICEADDRESS7DCBTSK„DS.Lƒ1ˆEVENTCLAIMER-->TASKNAME7/6/83IEE488SESSIONNUMBERˆ7/6/83IEE488@DCBSUP„DS.Lƒ1ˆADDRESSOFSUPERVISORDCBORSESSION„7/6/83IEE4880*™NUMBERIFTHISISSUPERVISORDCBˆ7/6/83IEE488ADCBSOP„DS.Lƒ1ˆSUPERVISOR/SUBORDINATEDCBOPENCOUNTƒ7/6/83IEE488-*™FOREVERYSUBORDINATEDEVICE†9/13/83IEE488.*™THATISOPENED,THISCOUNTIS…9/13/83IEE488!*™INCREMENTEDBY1’9/13/83IEE488DCBRSV„DS.Lƒ1‹4BYTESŠDS.Lƒ1‹4BYTESŠDS.Lƒ1‹4BYTESŠDS.Lƒ1‹4BYTES*.*œ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„EQU„1„WRITEPROTECT¬"DFLGSC„EQU„2„DEVICESTATUSCHANGE¥+DFLGIN„EQU„3’DEVICEBUSYFORINITIALIZATION*DFLGCF„EQU„4’DEVICEBUSYFORCONFIGURATION(DFLGCT„EQU„5’CANCELTIMER0-->NO‚1-->YES7DFLGIT„EQU„6’SET-->IGNORETIMEREVENTFORTHISDEVICE#DFLIOEOTEQU…7’0-->TASKISACTIVE#*£1-->EOTTERMINATIONINPROGRESS*Ç*‚DCBATTBITEQUATES(16BITS)*ÇDATRED„EQU„0’SUPPORTSREADDATWRT„EQU„1’SUPPORTSWRITEDATBIN„EQU„2’SUPPORTSBINARYDATRAN„EQU„3’SUPPORTSRANDOMDATIMG„EQU„4’SUPPORTSIMAGEDATHIO„EQU„5’SUPPORTSHALTI/O%DATPOS„EQU„6’SUPPORTSPOSITIONRECORDDATFMK„EQU„7’SUPPORTSFILEMARKDATIND„EQU„8’INTERACTIVEDEVICEDATPRT„EQU„9’PRINTERDEVICEDATSPL„EQU„10‘SUPPORTSSPOOLING+DATWRC„EQU„11‘SUPPORTSWRITEWITHCRCCHECK4DATSPD„EQU„12‘SUPPORTSSPECIALPURPOSEDEVICEDRIVER,DATSHR„EQU13DEVICEISNOTSHARABLE¡IEEE488%DATBDV„EQU14BUSSABLEDEVICE¨IEEE488 *ÄIEEE488*‹B13+B14==>†00=NONEŸIEEE488$*œ01=NON-SHAREDBUSDEVICEŽIEEE488%*œ10=SHAREDBUSSABLEDEVICEIEEE488)*œ11=NON-SHAREDBUSSABLEDEVICE‰IEEE488 *Ç*‚DCBTMOVALUES(16BITS)*Ç *ˆ0=NOTACTIVE(ORTIMEDOUT)¢$*ˆ+=ACTIVEINDATATRANSFERPHASEž"*ˆ-=ACTIVEINTERMINATIONPHASE *ÇŠPAGE *À***********3*‚SYSTEMVALUETABLE(SVT)DATASTRUCTURE—*‚SVT‚* *À*********** ŠOFFSET0’STARTWITHZEROOFFSET SVTSOP„DS.Lƒ1’I/OSYSTEMOPTIONS4SVTQST„DS.Lƒ1’STARTOFDEVICECONNECTIONQUEUESPACE/SVTQND„DS.Lƒ1’ENDOFDEVICECONNECTQUEUESPACESVTQUE„DS.Lƒ1’FIRSTDCQ/SVTLST„DS.Lƒ1’STARTOFLOGICALUNITTABLESPACE-SVTLND„DS.Lƒ1’ENDOFLOGICALUNITTABLESPACESVTLUT„DS.Lƒ1’FIRSTTABLEENTRY&SVTDST„DS.Lƒ1’STARTOFDCBTABLESPACE$SVTDND„DS.Lƒ1’ENDOFDCBTABLESPACESVTDCB„DS.Lƒ1’FIRSTTABLEENTRYSVTSDCBƒDS.Bƒ1’DCBSEMAPHORESVTSLUTƒDS.Bƒ1’LUTSEMAPHORESVTSDCQƒDS.Bƒ1’DCQSEMAPHORESVTSFCBƒDS.Bƒ1’FCBSEMAPHOREO*>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*0*SVTSID„DS.Lƒ4’I/OSYSTEMIDANDREVISIONNUMBER*SVTSTCFƒDS.Bƒ1*œSYSTEMTASKCORDINATIONFLAG *œBIT‡MEANING%*ž0‡0-->IOSINITIALIZATIONNOTDONE*¦1-->IOSINITIALIZATION…DONE%*ž1‡0-->FHSINITIALIZATIONNOTDONE*¦1-->FHSINITIALIZATION…DONE%*ž2‡0-->FMSINITIALIZATIONNOTDONE*¦1-->FMSINITIALIZATION…DONESVTFUTUƒDS.Bƒ15#*œREMAINING15BYTESFORFUTUREUSE*O*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<)SVTBRK„DS.Lƒ2’TASK-IDOFUNCLAIMEDBREAKS6SVTBSA„DS.Lƒ1’SERVICEADDRESSFORUNCLAIMEDBREAKTASK *Ç*‚EQUATESFORSVTSOP(32BITS)*ÇSVOPMU„EQU„0’MULTIPLEUSERSVOPFM„EQU„1’FMSPRESENT *À***********3*‚LOGICALUNITTABLE(LUT)DATASTRUCTURE—*‚LUT‚* *À*********** ŠOFFSET0’STARTWITHZEROOFFSET#LUTPTR„DS.Lƒ1’POINTERTONEXTTABLELUTTID„DS.Lƒ1’TASK-ID!LUTSES„DS.Lƒ1’TASKSESSIONNUMBER$LUTMLU„DS.Bƒ1’MAXIMUMNUMBEROFLUNS!LUTCAS„DS.Bƒ1’CURRENTASSIGNMENTSLUTUNM„DS.Wƒ1’USERNUMBERLUTBEG„EQU„*’BEGINLUENTRIES*Ç ŠOFFSET0’STARTWITHZEROOFFSET'LUTCAP„DS.Bƒ1’CURRENTACCESSPERMISSION!LUTCSF„DS.Bƒ1’CURRENTSTATUSFLAG'LUTATT„DS.Wƒ1’ATTRIBUTESOFDEVICE/FILE LUTDCB„DS.Lƒ1’ADDRESSOFDCB/FCB!LUTSEG„EQU„*’LENGTHOFEACHENTRY *Ç*‚LUTCSFBITEQUATES(8BITS)*ÇLUSFAC„EQU„0’ACTIVELUSFIO„EQU„1’I/OPENDINGLUSFCP„EQU„2’CLOSEPENDINGLUSFAS„EQU„3’ASSIGNPENDINGLUSFCW„EQU„4’CONNECTIONWAIT*LUSEVC„EQU„5’DRIVEREVENTSCLAIMEDIEEE488LUSFDV„EQU„7’DEVICEASSIGNMENT *À***********5*‚DEVICECONNECTQUEUE(DCQ)DATASTRUCTURE•*‚DCQ‚* *À*********** ŠOFFSET0’STARTWITHZEROOFFSET#DCQPTR„DS.Lƒ1’POINTERTONEXTTABLE'DCQNXT„DS.Lƒ1’POINTERTONEXTDCBENTRYDCQDCB„DS.Lƒ1’ADDRESSOFDCBDCQLUT„DS.Lƒ1’ADDRESSOFLUT"DCQLUE„DS.Lƒ1’ADDRESSOFLUNENTRY%DCQLAD„DS.Lƒ1’LOGICALADDRESSOFIOCBDCQTIN„DS.Bƒ1’TRAPINDICATORDCQRES„DS.Bƒ1’RESERVEDBYTE$DCQPLN„DS.Bƒ1’PARAMETERBLOCKLENGTHDCQPRI„DS.Bƒ1’PRIORITY DCQLEN„EQU„************************ Ending of &.NIO.EQ ***********************‰PAGE**************************** Beginning of &.PANEL.EQ ******************************‰FRONTPANELEQUATES* ŠOFFSET00FPDMPTST‚DS.Wƒ1’MEMORYDUMP,ENABLE,SYSTEMTESTFPTTO…DS.Wƒ1’TESTTIME-OUTFPLEDSTƒDS.Wƒ1’LEDSTATUS************************* Ending of &.PANEL.EQ *************************ééééé éqŠPAGE************************** Beginning of &.PAT.EQ ****************************ˆPERIODICACTIVATIONTABLE*!ŠOFFSET0’THISISANOFFSETTABLEPAT‡DS.Lƒ1’!PAT„DEBUGTOOL0PATFHDRƒDS.Lƒ1’ADDRESSOF1STENTRYINFREELIST*PATHDR„DS.Lƒ1’Addressof1stentryinlist9PATTSIZƒDS.Lƒ1’SizeofPeriodicActivationtableinbytes =PATBABTƒDS.BƒBABBLNŽSpaceforBABusedtoscheduleroutineto*¤firePATnodes $PATENTRY‚EQU„*’OFFSETTOFIRSTENTRY**ˆPATENTRYDEFINITION*&ŠOFFSET0’OFFSETISFROMENTRYPOINTER,PATNEXTƒDS.Lƒ1’POINTERTONEXTENTRYINLISTPATOCMSK‚EQU„$0202ŽMASKFORBOTHPATOCANCANDPATOFINLOPTION.*9PATBIGDELTAEQU‚$7FFFFFFFŠBigdeltavaluefordummynodes*PATDUMMYIDEQUƒ$FFFFFFFEŠIDfordummynodePATDATEIDEQU„$FFFFFFFF* Macro *Entry:‚A1…pointstoPATheader"*‰A2…pointstoentrytoberemoved>*Exit:ŠNoregistersaltered,PATnodepointedatbyA2nowin *“freequeue.*PAT_FREE_NODE MACROŠMOVE.LPATFHDR(A1),PATNEXT(A2)ŠMOVE.LA2,PATFHDR(A1)ŠENDM*********************** Ending of &.PAT.EQ ***********************zA‰PAGE************************** Beginning of &.RAD.EQ **************************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...*4RARADTBL‚EQU„0’Startoftablearea,setto"!RAD"as*£an"eye-catcher".FRARADLAD‚EQU„RARADTBL+4†OffsettostartofRARADLSTintheRAD1table.6RARADUSD‚EQU„RARADLAD+2‰#ofRADsinRARADLSTalready.9RANUMRAD‚EQU„RARADUSD+1‰#ofRADsdefinedinthissystem.RAUSRLST‚EQU„RAHDRLNG‹RAUSRLSTalwaysstartsimmediatelyafter*£theheaderarea./RAUUSRNO‚EQU„0’Offsetintotableentryfortask*£name/session#.;RAURADID‚EQU„RAUUSRNO+8‰OffsetintotableentryforRAD-ID.8RAUSTATƒEQU„RAURADID+4‰Offsetintotableentryfor"RAD-&*£aborted/restarted"flag.‚(Usedtobe(*£sureallusersofaRADare"informed"*£ofabortorrestart.)7RAUEROPT‚EQU„RAUSTAT+2ŠError-notificationoptionsflag.;RAUERSTO‚EQU„RAUEROPT+2‰Error-notificationstorageaddrfor *£errorcode.;RAUERSUB‚EQU„RAUERSTO+4‰Error-notificationsubroutineaddr.ƒ3Œ5RAULNG„EQU„RAUERSUB+4‰LengthofanentryinRAUSRLST.**ƒRARADLSTequates...*)RARADLID‚EQU„0’OffsetinentrytoRAD-ID.>RARDSTAT‚EQU„RARADLID+4‰OffsetintotableentryforRADstatus*£flag.‰PAGE****************************** Beginning of &.SCN2681.EQ ****************************** H*‚TheSigneticsSCN2681DualUniversalAsynchronousReceiver/TransmitterB* (DUART) is a single-chip communications device that provides twoG* independent full-duplex asynchronous receiver/transmitter channels inA*asingle-package.‚Eachchannelcanbeprogrammedindependently. G*‚ChannelAisaddressedbeginningatthebaseofthememory-mappedI/OL* space and Channel B is addressed begin ning at byte 16. The mode registers,H* status, clock select, command, Rx holding and Tx holding registers areG* duplicated for each channel. The interrupt status, interrupt mask andG*otherregisterscanbeaccessedfromjustonechannel.‚Theoffsetsto-* the individual registers are defined below. ‰OFFSET„0*=*ˆArrangementofregistersoffmemory-mappedI/Obaseaddress*MREG1„EQU0‰ModeRegister1MREG2„EQU0‰ModeRegister2!SREG…EQU2‰StatusRegister(read)(CSEL…EQU2‰ClockSelectRegister(write)CREG…EQU4‰CommandRegister0DREG…EQU6‰Receiver/TransmitterHoldingRegisterO*------------------------------------------------------------------------------5IPCR…EQU8‰InputPortChangeRegister(read)‚-Aside5ACR†EQU8‰AuxiliaryControlRegister(write)-Aside4ISR†EQU10ˆInterruptStatusRegister(read)ƒ-Aside3IMR†EQU10ˆInterruptMaskRegister(write)„-Aside7OPSR…EQU28ˆOutputPort'Set'ƒRegister(write)-Bside9OPRR…EQU30ˆOutputPort'Reset'Register(write)-Bside SPC 3*+*ˆModeRegister1fielddefinitions(MREG1)* :*ˆMREG1isaccessedwhenthechannelmoderegisterpointer-*ˆpointstoMREG1whichoccursafterareset. F* Number of data bits per character to be transmitted & received [1:0]*DTBPC5ƒEQU%00000000‡5databits/character*DTBPC6ƒEQU%00000001‡6databits/character*DTBPC7ƒEQU%00000010‡7databits/character*DTBPC8ƒEQU%00000011‡8databits/character * Parity type select [2]PARODDƒEQU%00000100‡Odd‚parity¶2¿:Ç6Ï2×) PAREVNƒEQU%00000000‡Evenparity * Parity mode select [4:3]"PARENBƒEQU%00000000‡Enableparity!PARFRCƒEQU%00001000‡Force‚parityPAROFFƒEQU%00010000‡No…parity+PARMLTƒEQU%00011000‡SpecialMulitdropMode PAGE/* Error mode for the three FIFO status bits [5]=EMBLCKƒEQU%00100000‡Statusprovidedforallcharsincereset1EMCHARƒEQU%00000000‡Statusprovidedchar-by-char * Receiver interrupt select [6]5RXIFFFƒEQU%01000000‡InterruptsuponFIFOfullstatus:RXIRDYƒEQU%00000000‡Interruptsuponreceiverreadystatus &* Receiver Request-to-send control [7]6CRXRTSƒEQU%10000000‡UseRTSANoutputforflowcontrol SPC 3*+*ˆModeRegister2fielddefinitions(MREG2)* :*ˆMREG2isaccessedwhenthechannelmoderegisterpointer9*ˆpointstoMREG2whichoccursafteranyaccesstoMREG1. 5* Stop bit length select for char lengths 6,7,8 [3:0]"SB09_16‚EQU00.563stopbits/char"SB10_16‚EQU10.625stopbits/char"SB11_16‚EQU20.688stopbits/char"SB12_16‚EQU30.750stopbits/char"SB13_16‚EQU40.813stopbits/char"SB14_16‚EQU50.875stopbits/char"SB15_16‚EQU60.938stopbits/char"SB16_16‚EQU71.000stopbits/char"SB25_16‚EQU81.563stopbits/char"SB26_16‚EQU91.625stopbits/char#SB27_16‚EQU10Ž1.688stopbits/char#SB28_16‚EQU11Ž1.750stopbits/char#SB29_16‚EQU12Ž1.813stopbits/char#SB30_16‚EQU13Ž1.875stopbits/char#SB31_16‚EQU14Ž1.938stopbits/char#SB32_16‚EQU15Ž2.000stopbits/charSB1†EQUSB16_16‰1stopbit/char SB2†EQUSB32_16‰2stopbits/char 5*ˆNOTE:Add0.5tovaluesshownfor0-7ifchannelis!*ˆprogrammedfor5bits/character * Clear-to-send control [4]9CTXCTSƒEQU%00010000‡CTSANischeckedbeforetransmitting )* Transmitter request-to-send control [5]>CTXRTSƒEQU%00100000‡RTSANdeactivatediftransmitterdisabled * Channel mode select [7:6]*TheyareclearedwhentheIPCRisread.‚Theycangeneratean#* interrupt when programmed by ACR./DELIP0ƒEQU4(1)changeofstateatIP0detected/DELIP1ƒEQU5(1)changeofstateatIP1detected/DELIP2ƒEQU6(1)changeofstateatIP2detected/DELIP3ƒEQU7(1)changeofstateatIP3detected PAGE*;*ˆInterruptStatus/MaskRegistersbitdefinitions(ISR,IMR)* >* Setting a bit in the IMR causes an interrupt output when the%* correspnding bit is set in the ISR. (CLRTBEƒEQU0BittoclearTBEinterrupt.(CLRRCAƒEQU1BittoclearRCAinterrupt.(CLRBCIƒEQU2BittoclearBCIinterrupt.(CLRIP2ƒEQU3BittoclearIP2interrupt. SPC 3*1*ˆOutputPortSetandResetRegisters(OPSR,OPRR)* 9* These fields are used to modify the RTS hardware lines.** To output a 'ready' signal, set RTS low.G* A write to OPSR sets RTS high: use OP0 for port A and OP1 for port B.F*AwritetoOPRRsetsRTSlow:‚useOP0forportAandOP1forportB.RTSAONƒEQU$01RTSBONƒEQU$02RTSAOFF‚EQU$55RTSBOFF‚EQU$AA*************************** Ending of &.SCN2681.EQ ***************************éé‰PAGE************************** Beginning of &.SEG.EQ ***************************/*ˆSEGMENTDIRECTIVEPARAMETERBLOCKDEFINITIONS*!ŠOFFSET0’THISISANOFFSETTABLE"SGPB†EQU„*’SEGMENTPARAMETERBLOCK SGPBTASK‚DS.Lƒ1’TARGETTASKNAME(SGPBSESS‚DS.Lƒ1’TARGETTASKSESSIONCODE SGPBOPTƒDS.Wƒ1’DIRECTIVEOPTIONS0SGPBATTR‚DS.Wƒ1’SEGMENTATTRIBUTES(SEETSTSTAT)SGPBNAME‚DS.Lƒ1’SEGMENTNAME%SGPBLA„DS.Lƒ1’SEGMENTLOGICALADDRESS%SGPBSL„DS.Lƒ1’SEGMENTLENGTHINBYTES,SGPBBUFF‚DS.Lƒ1’BUFFERADDRESSUSEDBYRCVSA*SGPBL…EQU„*’SEGMENTPARAMETERBLOCKLENGTH*#*„DIRECTIVEOPTIONSBITDEFINITIONS*;SGPBOATR‚EQU„15‘SEGMENTATTRIBUTESGIVENINPARAMETERBLOCK8SGPBOLAD‚EQU„14‘LOGICALADDRESSGIVENINPARAMETERBLOCK;SGPBOPAD‚EQU„13‘EXECSUPPLIESLOGICALADDRESS(=PHYSADDR)0SGPBOPRM‚EQU„12‘MAKESHAREABLESEGMENTPERMANENT:SGPBORMV‚EQU„11‘REMOVEPERMANENTSTATUSFROMSHAREABLESEG;SGPBOLNG‚EQU„10‘USESEGMENTLENGTHGIVENINPARAMETERBLOCK8SGPBOWAI‚EQU„10‘WAITIFMEMORYNOTAVAILABLENOW(GTSEG):SGPBOLES‚EQU„09‘WILLSETTLEFORLESSMEMORYTHANREQUESTED,SGPBOPHY‚EQU„08‘ALLOCATEATPHYSICALADDRESS2SGPBOTYP‚EQU„07‘MEMORYTYPEORPARTITIONSPECIFIED*********************** Ending of &.SEG.EQ ***********************éééß" ‰PAGE****************************** Beginning of &.SIG2661.EQ *******************************‰TTL„SIG2661CHIPDESCRIPTION ŠOFFSET0*>*‚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****************************************************************************)*‚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èKñ (PTYPE…EQU„%00100000Šparitytypeeven/odd*/*‰%11xxxxxxfielddefinitionfor#ofstopbits*SB1‡EQU„%01000000Š1stopbit SB15†EQU„%10000000Š1.5stopbitsSB2‡EQU„%11000000Š2stopbits**************************** Ending of &.SIG2661.EQ ***************************ééééé é‰PAGE************************** Beginning of &.SPL.EQ ***************************5******************************************************‚SPOOLEREQUATEFILE-*‚CONTAINSMACROSFORFMSINTANDALLINTERNAL*‚SPOOLEREQUATES5*******************************************************ŠMACROSFORSPLFMS(FMSINT)** SFHSCO PARAMETERS: * 1. COMMAND * 2. OPTIONS0*3.ADDRESSREGISTER(->‚FHSPARAMETERBLOCK)*>SFHSCO„MACRO‚*ŽSETSCOMMANDANDOPTIONSINFHSPARAMETERBLOCKŠMOVE.L#((\1)*$10000)+\2,(\3)ŠENDM** SIOSCO PARAMETERS: * 1. COMMAND * 2. OPTIONS0* 3. ADDRESS REGISTER ( -> IOS PARAMETER BLOCK )*>SIOSCO„MACRO‚*ŽSETSCOMMANDANDOPTIONSINIOSPARAMETERBLOCKŠ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‚*’SETSFILEATTRIBUTESFORFHSALLOCATECALLŠOR.Wƒ#\1,FHSOPT(\5)…OPTIONSŠIFNEƒ\2$MOVE.W#\2,FHSLRL(\5)…RECORDLENGTHŠENDCŠIFEQƒ\2CLR.W‚FHSLRL(\5)ŠENDC<ŠMOVE.L#(\4)*$10000+\3,FHSSIZ(\5)KEY,FAB,DATABLOCKSIZEŠENDM*ŠPAGE**‚SPOOLERQUEUEENTRYSTRUCTURE* ŠOFFSET0"QDEVICEƒDS.Lƒ1’DEVICENAME(ASCII)/QFORMS„DS.Lƒ1’FORMSIDDEFAULT='STND'ƒ(ASCII)QVOL†DS.Lƒ1’VOLUMENAME“(ASCII)"QUSERN„DS.Wƒ1’USERNUMBER‘(BINARY)"QCATLG„DS.Lƒ2’CATALOGNAME(ASCII)QFILEN„DS.Lƒ2’FILENAME”(ASCII)QEXT†DS.Wƒ1’EXTENSION•(ASCII)QTASKN„DS.Lƒ1’TASKNAME“(ASCII)#QSESS…DS.Lƒ1’SESSIONNUMBER(ASCII)!QJOBID„DS.Lƒ1’JOBNUMBER’(BINARY)"QPRI†DS.Bƒ1’TASKPRIORITY‘(BINARY)#QLUN†DS.Bƒ1’LUNFOROUTPUT(BINARY)QDATE…DS.Lƒ1’DATE™(BINARY)QTIME…DS.Lƒ1’TIME™(BINARY)-QSIZE…DS.Lƒ1’FILESIZE-#OFBLOCKS†(BINARY)QSTAT…DS.Bƒ1’STATUS—(BINARY).QCOPYS„DS.Bƒ1’#OFCOPIESDEFAULT=1…(BINARY) QLNG†EQU„***‚QSTATBITDEFINITIONS*+QSTATRDY‚EQU„0’READYTOOUTPUTSPOOLERFILEùL7 CN HQSTATACT‚EQU„1„ACTIVE-SPOOLERFILEASSIGNEDANDALLOCATEDFORUSERINPUT-QSTATOUT‚EQU„2’BEINGOUTPUTTOSPOOLERDEVICE4QSTATWAT‚EQU„3’MUSTWAITFORACONTINUETOBEISSUED1QSTATFRM‚EQU„4’CAN'TOUTPUT-NOTMATCHINGFORMSIDCQSTATIOE‚EQU„5‰IOERRORONOUTPUTFOUND,WAITFORCONTINUEORCANCEL+QSTATCAN‚EQU„6’CANCELANENTRYBEINGOUTPUT7QSTATOAA‚EQU„7’BEINGOUTPUTANDACTIVE(FILENOTCLOSED)*?*‚ENTRYSTRUCTUREOFRESERVEDRECORDSINTHESPOOLERQUEUEFILE3*ˆ(RECORDS0-8)(RECORD9CONTAINSLASTJOBNUMBER)* ŠOFFSET0RDEV†DS.Lƒ1’DEVICENAME…(ASCII)RFRM†DS.Lƒ1’FORMSID‡(ASCII)HRSTAT…DS.L‚1STATUS‚0=OKTOOUTPUT‚-1=FORMSWASISSUED,WAITFORCONTINUERLNG†EQU„*’ENTRYLENGTH-RREC†EQU„QLNG/12ŒNUMBEROFENTRIESPERRECORD**‚MISCEQUATES*USER0…EQU„0’USERNUMBER0FOUT†EQU„3’LUNFOROUTPUTFILE DOUT†EQU„4’LUNFOROUTPUTDEVICE3BLANK…EQU„$20202020ŠBLANKS-USEFORPARAMETERBLOCKS0ENTRYLNG‚EQU„FHSNLN+EVTLEN†LENGTHOF1ASQENTRYCRˆEQU„$0DCARRIAGERETURNCODELFˆEQU„$0ALINEFEEDCODESPOOLF„EQU„$40'@'&MYSES…EQU„1’.SPLSESSIONNUMBERNUMBER?BUFADR„EQU„$20000‹SEGMENTSTARTADDRESSFORNON-SPOOLERFILEIO@BUFLNG„EQU„$A00ŠSEGMENTLENGTH(CHANGESBYSUBTASKIFTOOSMALL)?REGOFF„EQU„50‹OFFSETTOREGISTERSINSTARTTASKPARAMETERBLOCK&FOUR†EQU„4’OFFSETOF4FORREGISTERA1**‚SPLFLGBITDEFINITIONS*9EOF‡EQU„0ŽFOUNDANENDOFFILEONREADSPOOLERQUEUEFILE"PRNTER„EQU„1’DOINGIOTOAPRINTER*NOTSPL„EQU„2’OUTPUTTINGANON-SPOOLERFILE!PIOF†EQU„3’PROCEEDIOIN PROGRESS-IOERRF„EQU„4’IOERRORFOUNDDURINGPROCEEDIO$RDYERR„EQU„5’OUTPUTDEVICENOTREADY*1*‚SPLFLG1BITDEFINITIONS-USEDBYQUEUECOMMAND*$OUTDEV„EQU„0’OUTPUTMATCHINGDEVICES(OUTUSN„EQU„1’OUTPUTMATCHINGUSERNUMBER+OUTSES„EQU„2’OUTPUTMATCHINGSESSIONNUMBER OUTALL„EQU„3’OUTPUTENTIREQUEUE**‚BITDEFINITIONSFORSUBTRERR*'RDERR…EQU„0’IOERRORFOUNDONFILEREAD+WRTERR„EQU„1’IOERRORFOUNDONDEVICEWRITE?HDRERR„EQU„2‹IOERRORFOUNDONDEVICEWRITE-OUTPUTTINGHEADER?TERMERRƒEQU„3ŒTERMINATETHESUB-TASKANDSETTOFILENOTOUTPUT*A*‚SUB-TASKEVENTSTRUCTUREFORSENDINGIOERROREVENTSTOMONITOR* ŠOFFSET0 IOERLNGƒDS.Bƒ1’EVENTLENGTHƒ(12)IOERCDEƒDS.Bƒ1’EVENTCODE„(32)+IOERMSGƒDS.Wƒ1’EVENTMESSAGE(SUBTERRWORD)(IOERD0„DS.Lƒ1’CONTENTSOFDOONIOERRORIOERNAMƒDS.Lƒ1’SUBTASKNAME*%SUBTELNG‚EQU„12‘SUB-TASKEVENTLENGTH#SUBTECDE‚EQU„32‘SUB-TASKEVENTCODE*SPLECDEƒEQU„33‘.SPLEVENTCODETOSUB-TASK*.*ˆERRORMESSAGEHANDLERPARAMETRBLOCKOFFSETS* ŠOFFSET0#EM_D0…DS.Lƒ1’D0IOS/FHSRETURNCODE/EM_A0…DS.Lƒ1’A0IOS/FHSPARAMETERBLOCKADDRESSEM_OPT„DS.Bƒ1’OPTIONSFLAGEM_TLUNƒDS.Bƒ1’LDFLUN$EM_QRC„DS.Bƒ1’QUERYRETURNCHARACTEREM_KLUNƒDS.Bƒ1’CDFLUN(EM_SPA„DS.Lƒ1’STARTADDRESSOFUSERTEXT&EM_EPA„DS.Lƒ1’ENDADDRESSOFUSERTEXTŠPAGE*CMNˆEQU„$FFFFFF00ƒUSEDFORMOVE.L$80-$FFTOGEN2BYTEINSTRUCTIONS*%*‚SPLOOLERQUEUEENTRYRECORDEQUATES*+LINEBL„EQU„QLNGRECORD'SLINEBUFFERLENGTHKEYSIZ„EQU„0’NULLKEYS#VRLFIL„EQU„QLNGFIXEDRECORDLENGTH'MXRECL„EQU„LINEBLMAXIMUMRECORDLENGTH**‚FILENAMEEQUATES*4FILNML„EQU„24‘FULLYQUALIFIEDFILENAMEFIELDLENGTH**‚DATABLOCKEQUATES*BDEFSIZ„EQU„$108ˆ1SECTORFAB/8SECTORDATABLK(DEFAULTALLOCATION)$DBMAX…EQU„20‘MAXIMUMDATABLOCKSIZE*:*‚FMSLOGICALADDRESSESFORSEGMENTSTOBEUSEDASBUFFERS*IFMSDBA„EQU„$10000LOGICALBUFFERSTARTFORFILEDATABLOCK(SHAREDW/FMS)NFMSSRA‚EQUFMSDBA+DBMAX*$100BUFFERSTARTFORSOURCEFILEDBOREXTRACTBUFFER**‚DEFINEDATALAYOUTS*:*‚********************************************************;*‚FMSINTPARAMETERBLOCK(USEDBETWEENFMSINTANDSPOOLER)::*‚*********************************************************1ŠOFFSET0’POINTEDTOBYA3(A0ONCALLTOFMSINT)*FMSTAT„DS.Bƒ1’STATUSFMSCMD„DS.Bƒ1’COMMANDFMSREC„DS.Lƒ1’LRN7FMSBUF„DS.Lƒ1’FWAOFLINEBUFFER,POINTERTOFILENAMES$FMSRECNƒDS.Wƒ1’#OFRECORDSAFFECTED*FMSEFS„DS.Bƒ1’FILESTATUS*=EFSCHG„EQU„1FILESTATUSCHANGED(EDITFILE.NE.OUTPUTFILE)* FMSOFS„DS.Bƒ1’OUTPUTFILESTATUS*&OFSDEL„EQU„1’OUTPUTFILESTATUSDELETE**!*‚********************************‚FILENAMEPARAMETERS!*‚********************************)ŠOFFSET0’POINTEDTOBYFMSBUFINOPENCMD*FLNM1…DS.BƒFILNMLFULLYQUALIFIEDFILENAMEŠDS.Wƒ1’RESERVEDŠDS.Wƒ1’READ/WRITECODES:OFSTAT„DS.Bƒ1ŽOUTPUTFILESTATUS„0=FILENAME1ISFOROUTPUTŠDS.Wƒ1’READ/WRITECODESŠPAGE**‚***************************‚MAPFORFMSINTSCRATCHPAD*‚***************************(ŠOFFSET0’POINTEDTOBYA6DURINGFMSINT**‚MAPFORUNINITIALIZEDDATA*EOFLRN„DS.Lƒ1’FILE'SLASTLRNEFLUN…DS.Bƒ1’FILELUNEFFLG…DS.Bƒ1’FILEFLAG'* EFFLG = 0 => 'FILENAME1' IS EDIT FILE**LRECBA„DS.Lƒ1’LASTRECORD'SBUFFERADDRESS*%OUTRCZ„DS.Wƒ1’OUTPUTFILERECORDSIZE"OUTKYZ„DS.Bƒ1’OUTPUTFILEKEYSIZE"SRCKYZ„DS.Bƒ1’SOURCEFILEKEYSIZE'SRCRCZ„DS.Wƒ1’SOURCEFILERECORDLENGTHSRCDBE„DS.Lƒ1’BUFFEREND SRCDBL„DS.Lƒ1’BUFFERLOGICALEND*?DATASGLƒEQU„*ŒENDOFUNINITIALIZEDDATA(ZEROEDOUTBYOPENCMD)**‚MAPFORINITIALIZEDDATA*.SRCDBS„DS.Lƒ1’SOURCEFILELOGICALBUFFERSTART*;LRECRD„DS.Lƒ1LRNOFLASTRECORDREAD(-1IFNONEAVAILABLE)*5STKPTR„DS.Lƒ1’STACKPOINTERFORABORTFROMSUBROUTINE****‡FMSINTCOMMANDEQUATES*#OPENCMDƒEQU„1’FMS-OPENFILECOMMAND#RDCMD…EQU„2’FMS-READRECORDCOMMAND&DELCMD„EQU„3’FMS-DELETERECORDCOMMAND(INSRTCMD‚EQU„4’FMS-INSERTRECORDCOMMAND(REPLCMDƒ  EQU„5’FMS-REPLACERECORDCOMMANDŠPAGE*.*ˆOFFSETSUSEDBYASPAWNEDSUB-TASKDOINGTHE*ˆACTUALSPOOLEROUTPUT* ŠOFFSET0 DATAST„EQU„*SCRATCHS‚DS.Bƒ154SCRATCHAREAŠDS.Bƒ200STACK STACK…EQU„*&FHSPBS„DS.BƒFHSNLNFHSPARAMETERBLOCK&IOSPBS„DS.BƒIOSBLNIOSPARAMETERBLOCK#SPLQNS„DS.Lƒ2’TASKNAMEANDSESSIONSPLFLGSƒDS.Bƒ2’FLAGSSUBTERRƒDS.Wƒ1’ERRORFLAGSCURRECSƒDS.Lƒ1’CURRENTRECORD)QEVTS…DS.BƒENTRYLNG‹EVENTPARAMETERBLOCK(QBUFS…DS.BƒQLNGQUEUEENRTYBEINGOUTPUT BUFEND„DS.Lƒ1’BUFFERENDADDRESS)SBUFSA„DS.Lƒ1’SHAREDBUFFERSTARTADDRESS'SBUFEA„DS.Lƒ1’SHAREDBUFFERENDADDRESS/CURPT…DS.Lƒ1’CURRENTPOINTERINTOSHAREDBUFFERSAVLNG„DS.Lƒ1’BUFFERSIZEFOPT†DS.Wƒ1’OUTPUTFILETYPE1BUFSTRTƒDS.Lƒ1’NON-SPOOLERFILEDATAAREAADDRESS DATALNGƒEQU„************************ Ending of &.SPL.EQ ***********************éééééé‰PAGE*************************** Beginning of &.SRVR.EQ *****************************‰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*2TYP7TSYS‚EQU„7’TASKSENDINGMESSAGEISSYSTEMTASK-TYP7TTRM‚EQU„6’MESSAGEISTERMINATIONMESSAGE+TYP7TLST‚EQU„5’TASKISLASTTASKINSESSION7TYP7TRTT‚EQU„4’TASKSENDINGMESSAGEISAREALTIMETASK*"*OPTIONSAVAILABLEONACKNOWLEDGE*-TACKOSCC‚EQU„14‘SETCONDITIONCODESONRETURN TACKOSD0‚EQU„13‘DETD0ONRETURN TACKOSA0‚EQU„12‘SETA0ONRETURNTACKORDY‚EQU„11‘READYTHETASK%TACKOWTƒEQU„10‘PUTTASKINWAITSTATETACKOSPD‚EQU„9’SUSPENDTHETASK,TACKOTRM‚EQU„8’SPECRESPONSETOTERMREQUEST************************ Ending of &.SRVR.EQ ************************  éé"1‰PAGE************************** Beginning of &.STR.EQ ************************** ŠLLENƒ120**†GENERALEQUATES*"TRMODE„EQU„15‘TRACEMODEBITINSR'SRMODE„EQU„13‘SUPERVISERMODEBITINSRBMULTPROC‚EQU„0ŠCONDASSEMBLYFLAG(MULTIPLEPROCESSORS)1=ON0=OFFASHARMEMƒEQU„1ŠCONDASSEMBLYFLAG(MEMORYSHAREDBYMULTIPLEPROC)CWAITMEMƒEQU„1ˆCONDASSEMBLYFLAG(WAITFORMEMORYOPTIONAVAILABLE):EXECPRIO‚EQU„240PRIORITYSETWHENEXECROUTINESRESTARTED6HIBIT…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)*#TRCFTRP1‚EQU„15‘SETTOTRACETRAP1%TRCFIO„EQU„14‘SETTOTRACEINTERRUPTS-TRCFTIMR‚EQU„13‘SETTOTRACETIMERINTERRUPTS.TRCFTRAP‚EQU„12‘SETTOTRACEUSERTRAPS(2-15)'TRCFEXCP‚EQU„11‘SETTOTRACEEXCEPTIONS'TRCFDSPT‚EQU„10‘SETTOTRACEDISPATCHES2TRCFUIOƒEQU„9’SETTOTRACEUSERCLAIMEDINTERRUPTS.TRCFMMUƒEQU„8’SETTOTRACERETURNFROMLOADMMU/TRCFSINT‚EQU„7’SETTOTRACESIMULATEDINTERRUPT.TRCFSYSF‚EQU„6’SETTOTRACESYSFAILINTERRUPTSŠPAGE**ˆTRAP1EQUATES*T10‡EQU„0’NODIRECTIVET1GTSEGƒEQU„1’ALLOCATESEGMENT T1DESEGƒEQU„2’DEALLOCATESEGMENTT1TRSEGƒEQU„3’TRANSFERSEGMENT'T1ATTSEG‚EQU„4’ATTACHSHAREABLESEGMENT*T1SHRSEG‚EQU„5’GRANTSHAREDSEGMENTACCESS'T1MOVELL‚EQU„6’MOVEDATABETWEENSPACES(T1DCLSHR‚EQU„7’DECLARESEGMENTSHAREABLE)T1SNAPTRACEQUƒ8’MOVETRACETABLETOUSER(T1RCVSAƒEQU„9’RECEIVESEGMENTATTRIBUTEST1GTTIDƒEQU„10‘GETTASKIDT1CRTCBƒEQU„11‘CREATETCBT1GTTNAMEEQU„12‘GETTASKNAMET1STARTƒEQU„13‘STARTTASK T1ABORTƒEQU„14‘ABORTTASK(SELF)#T1TERM„EQU„15‘TERMINATETASK(SELF)(T1TERMTƒEQU„16‘TERMINATETASK(NOTSELF)#T1SUSPND‚EQU„17‘SUSPENDTASK(SELF)%T1RESUME‚EQU„18‘RESUMESUSPENDEDTASK)T1WAIT„EQU„19‘TASKBECOMESBLOCKED(SELF)+?4@<3D™L„T-%T1WAKEUP‚EQU„20‘WAKEUPAWAITINGTASK0T1DELAYƒEQU„21‘DELAYSOMENUMBEROFMILLISECONDS$T1RELINQ‚EQU„22‘RELINQUISHEXECUTION'T1TSKATTREQU„23‘RETURNTASKATTRIBUTES$T1SETPRI‚EQU„24‘SETCURRENTPRIORITYT1STOP„EQU„25‘STOPRUNNINGTASK4T1EXPVCT‚EQU„26‘SAVETASK'SEXCEPTIONVECTORADDRESS/T1TRPVCT‚EQU„27‘SAVETASK'STRAPVECTORADDRESS)T1TSKINFOEQU„28‘MOVETASKINFOTOCALLER+T1RQSTPA‚EQU„29‘REQUESTPERIODICACTIVATION'T1DELAYW‚EQU„30‘DELAYWITHWAITOPTIONST1GTASQƒEQU„31‘ALLOCATEANASQT1DEASQƒEQU„32‘DEALLOCATEASQT1SETASQ‚EQU„33‘SETASQSTATUS#T1RDEVNT‚EQU„34‘READEVENTFROMASQ!T1QEVNTƒEQU„35‘QUEUEEVENTTOASQT1WTEVNT‚EQU„36‘WAITFOREVENT!T1RTEVNT‚EQU„37‘RETURNFROMEVENTT1GTEVNT‚EQU„38 T139†EQU„39 T140†EQU„40"T1ATSEMƒEQU„41‘ATTACHTOSEMAPHORE T1WTSEMƒEQU„42‘WAITONSEMAPHORET1SGSEMƒEQU„43‘SIGNALSEMAPHORET1DESEMƒEQU„44‘DETACHSEMAPHORET1CRSEMƒEQU„45‘CREATESEMAPHORE3T1DESEMA‚EQU„46‘DETACHALLSEMAPHORESFORTHISTASK T147†EQU„47 T148†EQU„48 T149†E  QU„49 T150†EQU„50.T1SERVER‚EQU„51‘ESTABLISHSERVERFORUSERTRAP+T1DSERVE‚EQU„52‘DETACHFROMSERVERFUNCTION.T1DERQST‚EQU„53‘SETUSER/SERVERREQUESTSTATUS+T1AKRQST‚EQU„54‘ACKNOWLEDGESERVICEREQUEST T155†EQU„55 T156†EQU„56 T157†EQU„57 T1CDIR„EQU„58 T159†EQU„59T1CMR…EQU„60‘CHANNELREQUEST1T1CISR„EQU„61‘CLAIMVECTOR-INTRRUPTSERVICERTN)T1SINT„EQU„62‘SIMULATEUSERI/OINTERRUPT T163†EQU„63*T1EXMONƒEQU„64‘ATTACHTOEXCEPTIONMONITOR-T1DEXMON‚EQU„65‘DETACHFROMEXCEPTIONMONITOR*T1EXMMSK‚EQU„66‘SETEXCEPTIONMONITORMASK"T1RSTATE‚EQU„67‘RECEIVETASKSTATET1PSTATE‚EQU„68‘PUTTASKSTATE0T1REXMON‚EQU„69‘EXECUTETASKUNDEREXMONCONTROL T170†EQU„70 T171†EQU„71T1MOVEPL‚EQU„72!T1STDTIM‚EQU„73‘SETDATEANDTIME!T1GTDTIM‚EQU„74‘GETDATEANDTIME T1FLUSHC‚EQU„75‘FLUSHUSERCACHEŠPAGE**ˆTRAP0EQUATES*T0P‡EQU„1’SEMAPHOREP(WAIT)T0V‡EQU„2’SEMAPHOREV(SIGNAL) T0READYƒEQU„3’TASKTOREADYLIST%T0PAGALƒEQU„4’ALLOCATEPHYSICALPAGES T0PGFR„EQU„5’FREEPHYSICALPAGEST0GETTCB‚EQU„6’SEARCHTCBLIST'T0FNDSEG‚EQU„7’FINDSEGMENTNAMEINTST2T0LOGPHY‚EQU„8’LOGICALTOPHYSICALADDRESSCONVERT'T0FNDGSG‚EQU„9’FINDSEGMENTNAMEINGST5T0QEVNTN‚EQU„11‘PLACEEVENTINASQ-ARGISTASKNAME2T0FNDSEM‚EQU„12‘FINDENTRYINUSERSEMAPHORETABLE6T0GTXTCB‚EQU„13‘GETTCBUSINGSESSIONPROVIDEDINCALL5T0PAUSEƒEQU„14‘PAUSEWHILEWAITINGFORIOTOCOMPLETE.T0EXABRT‚EQU„21‘ABORTUSERTASKFROMEXECMODE*T0WAKEUP‚EQU„22‘WAKEUPTASKFROMEXECMODE7T0QEVNTT‚EQU„23‘PLACEEVENTINASQ-ARGISTCBADDRESST0SCHEDƒEQU„36SCHEDULEAROUTINEFOREXECUTIONINBACKGROUND.1T0GUARDƒEQU„37‘CALLASUBROUTINEINGUARDEDMODE.*8*„THEFOLLOWINGEQU'SDEFINEENTRIESTOSUBROUTINESONLY0*ˆTRAP0ENTRIESFOREXTERNALCALLSDONOTEXIST*5T0RYEXT1‚EQU„3’READYROUTINEENTRY-FROMTRAP1EXIT0T0RYEXIR‚EQU„3’READYROUTINEENTRY-FROMEXITIR'!TCB')thendo;*thenreturn(tasknotfound);*ˆend;*GET_TARGET_TCB MACROŠMOVE.L(A4),D0 ŠBEQ.S‚TCB1\@ ŠMOVE.LD0,A5TTB_01:ŠCMP.L‚#'!TCB',(A5)TTE_01: ŠBEQ.S‚TCB2\@ ŠEXITƒRTCDTASK   TCB1\@: ŠMOVE.LA6,A5 TCB2\@:ŠENDM*********************** Ending of &.STR.EQ ***********************ééé‰PAGE*************************** Beginning of &.TACK.EQ *****************************‰SERVERACKNOWLEDGEEQUATES*"*‰OPTIONSAVAILABLEONACKNOWLEDGE*-TACKOSCC‚EQU„14‘SETCONDITIONCODESONRETURN TACKOSD0‚EQU„13‘SETD0ONRETURN TACKOSA0‚EQU„12‘SETA0ONRETURNTACKORDY‚EQU„11‘READYTHETASK%TACKOWTƒEQU„10‘PUTTASKINWAITSTATETACKOSPD‚EQU„9’SUSPENDTHETASK,TACKOTRM‚EQU„8’SPECRESPONSETOTERMREQUEST************************ Ending of &.TACK.EQ ************************ééééé\‰PAGE************************** Beginning of &.TCB.EQ ****************************ˆTASKCONTROLBLOCK**2*†USEASƒNAME(AX)‚WHEREAX=ADDRESSOFSTARTOFTCB1*‰WHERE‚AXISTHEADDRESSOFTHESTARTOFTHETCB"*‰ANDNAMEISONEOFTHEFOLLOWING*ŠOFFSET0’STARTATZERO"TCB‡DS.Lƒ1’'!TCB'‚DUMPEYECATCHER#TCBALL„DS.Lƒ1’LINKFORALLTCBLIST,TCBGROUP‚DS.Lƒ1’LINKFORTCB-THIS-GROUPLIST#TCBREADY‚DS.Lƒ1’LINKFORREADYLISTTCBNAMEƒDS.Lƒ1’4-BYTETASKNAMETCBSESSN‚DS.Lƒ1’SESSIONCODE-TCBMON„DS.Lƒ2’MONITORTASKNAME+SESSIONCODE+TCBSEM„DS.Lƒ1’LINKTONEXTSEMAPHOREWAITER$TCBCPRIƒDS.Bƒ1’CURRENTTASKPRIORITY"TCBLPRIƒDS.Bƒ1’TASKLIMITPRIORITY8TCBRPRIƒDS.Bƒ1’PRIORITYUSEDTOENTERTASKINREADYLIST'TCBIOCNT‚DS.Bƒ1’COUNT  OFPENDINGINPUTSTCBATTRƒDS.Wƒ1’TASKATTRIBUTES=TCBATTIƒEQU„TCBATTR+1Š2NDBYTEOFATTRIBUTES(INTERNALFLAGS)TCBABORT‚DS.Wƒ1’ABORTCODE"TCBSTATE‚DS.Lƒ1’CURRENTTASKSTATE.TCBSTAT2‚EQU„TCBSTATE+1‰2NDBYTEOFSTATEWORDTCBTSTSM‚DS.Wƒ3’TSTSEMAPHORE+TCBTST„DS.Lƒ1’POINTERTOTASKSEGMENTTABLETCBASQSM‚DS.Wƒ3’ASQSEMAPHORETCBASQ„DS.Lƒ1’POINTERTOASQ1TCBCHANƒDS.Lƒ1’LINKTONEXTCHANNELCONTROLBLOCK0TCBEVECT‚DS.Lƒ1’ADDRESSOFTASKEXCEPTIONVECTOR+TCBTVECT‚DS.Lƒ1’ADDRESSOFTASKTRAPVECTOR*ŠDS.Lƒ1’RESERVEDFORFUTUREUSE6TCBNAU„DS.Lƒ1’ADDRESSOFNATENTRYIFTHISTASKISNAU;TCBDLAYƒDS.Lƒ1‘ADDRESSOFDELAYENTRYINPERIODICACTTABLE(ŠDS.Wƒ1’SAVEUPPER1/2OFD0ONTRAP1'S/TCBISRSƒDS.Wƒ1’ISRERRORCODE-SAVEFORWAKEUPŠDS.Lƒ3’RESERVEDFORFUTUREUSE(TCBENTRY‚DS.Lƒ1’TASKINITIALENTRYPOINT/TCBUSERƒDS.Wƒ1’USERNUMBERASSOCIATEDWITHTASKTCBSSP„DS.Bƒ1’EXECSTACKDEPTH6TCBUTRPƒDS.Bƒ1’USERTRAPNUMBER-SETWHENTRAPOCCURS* *†SAVEAREAS*TCBXREGS‚DS.Lƒ8’EXECREGISTERSTCBXA0„DS.Lƒ1’EXEXREGISTERA0ŠDS.Lƒ6TCBSAFEƒEQU„*’EXECREGISTERS8TCBATSKƒDS.Lƒ1’TASKNAMEOFTASKTHATCAUSEDTERMINATION6TCBASESƒDS.Lƒ1’SESSIONOFTASKTHATCAUSEDTERMINATION;TCBBERRƒDS.Lƒ2‘INFOPLACEDONSTACKBYBUSORADDRESSERRORe:nBv ŠDS.Bƒ$100-*TCBSTKA6‚EQU„*-(4+2+4+2)TCBSTKSR‚EQU„*-(2+4+2)TCBSTKPC‚EQU„*-(4+2)TCBSTKVR‚EQU„*-(2)TCBROOMƒEQU„$100-TCBSAFE*TCBD0…DS.Lƒ1’USER'SD0TCBD1…DS.Lƒ7’USER'SD1THRUD7TCBA0…DS.Lƒ1’USER'SA0TCBA1…DS.Lƒ5’USER'SA1THRUA5TCBA6…DS.Lƒ1’USER'SA6TCBUSP„DS.Lƒ1’USER'SA7 #TCBSR…DS.Wƒ1’USER'SSTATUSREGISTER(TCBCC…EQU„TCBSR+1ŒUSER'SCONDITIONCODES#TCBPC…DS.Lƒ1’USER'SPROGRAMCOUNTERTCBPCLOƒEQU„TCBPC+2+TCBVOR„DS.Wƒ1’USER'SVOR(ORJUNKON68000)TCBRTCDƒDS.Wƒ1ŠDS.Wƒ1ŠDS.Lƒ1ŠDS.Lƒ4)TSTBEGIN‚EQU„*’OFFSETTOBEGINNINGOFTST ŠDS.Bƒ$200-$20-***‡EXCEPTIONMONITORPARAMETERS*)TCBEXM„DS.Lƒ1’EXCEPTIONMONITORTASKNAME(TCBEXMSƒDS.Lƒ1’EXCEPTIONMONITORSESSION&TCBEMMSK‚DS.Lƒ1’EXCEPTIONMONITORMASK,TCBEVMSK‚DS.Lƒ1’EXCEPTIONMONITORVALUEMASK0TCBEVLOC‚DS.Lƒ1’EXCEPTIONMONITORVALUELOCATION'TCBEVALU‚DS.Lƒ1’EXCEPTIONMONITORVALUE:TCBECNTƒDS.Lƒ1’EXCEPTIONMONITORMAXCOUNTOFINSTRUCTIONSŠDS.Lƒ1* **‰TCBATTRBITDEFINITIONS*TSKASYST‚EQU„15‘SYSTEMTASK'TSKAMRES‚EQU„14‘TASKISMEMORYRESIDENT@TSKACRIT‚EQU„13ŒTASKISCRITICALTOOS-CRASHSYSTEMIFABORTED,TSKADUMP‚EQU„12DUMPTASKTODISKIFABORTED=TSKARELO‚EQU„11TASKISRELOCATEABLE(NOMMU)-CONVERTENTRY.TSKIUSEM‚EQU„8’TASKHASCREATEDUSERSEMAPHORE'TSKARTIM‚EQU„7’TASKISAREALTIMETASK2TSKIEXMƒEQU„6’TASKCONTROLLEDBYEXCEPTIONMONITOR9TSKIEXMT‚EQU„5’TASKISEXCEPTIONMONITORFORANOTHERTASK,TSKIEVCT‚EQU„4’TASKHASOWNEXCEPTIONVECTOR'TSKITVCT‚EQU„3’TASKHASOWNTRAPVECTOR>TSKILAST‚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„11TASKISWAITINGFORSERVICEREQACKNOWLEDGEMENT6TSKSWTEM‚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‘ADDRESSERRORISM  ONITORED0TEMILLEG‚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*********************** Ending of &.TCB.EQ ***********************ééé‰PAGE****************************** Beginning of &.TERMCCB.EQ ******************************%*ˆ7/9/84…addedBABareaforterminals*(*‰NOTESONTHERECEIVE&TRANSMITQUEUES*@*‰ThesecircularqueuesarecontainedintheCCBattheverytop>*‰ofthedevice-dependentportion.‚ThereceivequeueisjustaA*‰type-aheadbuffer;thetransmitqueueisusedtoholdchar'sto0*‰betransmittedwhicharenotinauserbuffer.*J***************************************************************************H*‚TailorthefollowingequatestochangethesizesofthequeuesandtheF*‚thresholdsatwhichactionistakentosuspend/restoretransmissions8*‚fromthedevice.‚Thefollowinginequalitiesmusthold:*@*‰7‚<=‚TQ_MAX‚<=128„(7comesfromXON,BS,SP,BS,BS,SP,BSqueued,>*whichcanhappenifaBScausesacontrolchartobeerased)*#*‰0‚<=‚NUF_ROOM‚<‚NEAR_FUL‚<‚RQ_MAX**3*’<--------------ƒ<---queuesfill/emptythisway---*O* /-------------- ----------------- ----------------------------------- ------/+*‚device-indep.|„TRANSMIT…|ŒRECEIVE|‚rest&*ƒpartofCCB‚|…QUEUE‡|QUEUE‘|ofCCBO* /-------------- ----------------- ----------------------------------- ------/**|‘|£|9*|<---TQ_MAX---->|<-----------RQ_MAX-------------->| *|‘||…|!*¢|<-------NEAR_FUL---------->|*¢|™|ƒ|*¢|<-----NUF_ROOM-------->|*¢|™|*6TQ_MAX„EQU„16Sizeoftransmitqueueinbytes.‚Bewary#*§ofincreasingthissize,sinceit#*§couldpushRQpast$7F,makingit"*§impossibletousetheaddressing*§modeRQ(A5,Dn)..RQ_MAX„EQU„224Sizeofreceivequeueinbytes.BNEAR_FUL‚EQU„RQ_MAX-10‰Whentheadditionofacharmakesthequeue'*§thisfull,thedriverwillattemptto&*§suspendthedevice'stransmissionby*§loweringDTRorsendingXOFF.ANUF_ROOM‚EQU„RQ_MAX-20‰Whentheremovalofacharmakesthequeue$*§thisfull,thedriverreleasesthe$*§suspendeddevicebyraisingDTRor*§sendingXON.**~8‡&/—7Ÿ6§9¯3·8¿9Ç9Ï$I*‚Thetransmitqueueisonlydealtwithfromwithinthebackground,soitJ*‚iscompletelysafefromanyproblemswhichmightbecausedbythedriver3*‚takinganinterruptwhiledealingwiththequeue.I*‚Thereceivequeue,however,isaddedtofromo  utsidethebackground(inK*‚theRCAroutine).‚ThisdoesnotcauseanyproblemswiththeRECVroutine,H*‚whichtakescharactersoutofthereceivequeue,primarilybecausetheF*‚formerusesthePUTpointerandthelatterusestheGETpointer,andI*‚neithercaresabouttheotherpointer.‚ThecodethatclearsthereceiveE*‚queuecouldpotentiallycauseaproblem,though,soitisdonewithC*‚interruptsINHIBITed.‚AslongasthetwocontendersonlyrunwithB*‚interruptsINHIBITed,theycanneverinterferewithoneanother.ŠPAGE*B*‚EquatesforERR_CODEfieldinCCB.‚WeusetheIOSstatusvalues.*>PAR_FRAMEQU‡ISTACSMŠParityorframingerroronreceivedchar.=OVERRUN‚EQU‡ISTADO‹Eitherthedevice'sinternalbufferorthe *§receivequeuewasoverwritten. F*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% *ˆ7/9/84‚BWN6*ˆWearetakingthisstuffoutandreplacingitbythe@*ˆBABareaoffsetssowecanusetheexec'sbackgroundroutines.*C*‚EquatesforbitnumbersintheWORKfieldintheCCB.‚Eachbitis@*‚aflagindicatingthepresenceofworkforagivenpartoftheE*‚background.‚Ifthebitis1,thereiswork;if0,thereisnowork.*/**W_XMIT„EQU„15‘Routinetotransmitcharacters..**W_RECV„EQU„14‘Routinetoreceive‚characters.5**W_BREAKƒEQU„13‘Routinetohandleanincomingbreak.7**W_DSR…EQU„12‘RoutinetohandleaDSRlinetransition.0**W_HALT„EQU„11‘RoutinetohaltoutstandingI/O.;**W_CONFIGUREEQU‚10‘Routinetofinishaconfigurerequest.5**W_BLOCKƒEQU„9’Routinetostopusfromtransmitting.8**W_UNBLOCKEQU„8’Routinetoallowustotransmitagain.;**W_STOP_ITEQU„7’Routinetostopthedevicefromxmitting.<**W_BEG_BREAKEQU‚6’Routinetostartsendingabreaksignal.;**W_END_BREAKEQU‚5’Routinetostop‚sendingabreaksignal.)**W_EVENTƒEQU„4’Routinetosendanevent.1**W_DCD…EQU„3’RoutinetohandleaDCDtransition.8**W_INIT„EQU„2’RoutinetodoRESETandSETUP(forinit). *L*‚EquatesforbitnumbersintheSPECIALbyteintheCCB.‚EachbitisaflagN*‚indicatingthatcontrolbelongstoaparticularhigh-priorityroutinewithinM*‚thetransmitfunction.‚WhensettingoneofthesebitsyoushouldbesuretoM*‚changethetransmitstatetoSPECIAL;ifitwasn'talreadyspecialyouhaveL*‚tosavetheoldtransmitstateinOLD_XMIT_ST.‚Ifoneofthesebitsisa13*‚thenthatroutinehascontrol;if0,itdoesnot.*-SPEC_BREAK‚EQU7•Transmittingabreaksignal.*SPEC_XOFFƒEQU6•TransmittinganXOFFchar.(SPEC_XON„EQU5•TransmittinganXON‚char.+SPEC_BLOCK‚EQU4•Blockedfromtransmitting.+SPEC_NUL„EQU3•TransmittingNULcharacters.6SPEC_QUEUE‚EQU2•Transmittingfromthetransmitqueue.ŠPAGE*H*‚Equatesformenuitems.‚RecallthattheMENUfieldintheCCBhasroomH*‚for41-bytemenuitems.‚ThevalueshaveaspecialcorrespondencewithE*‚theprocessstateswhichisusedindispatching--donotdisruptit.*1M_DOWN„EQU„-4‘Channeldown(unrecoverableerror).4M_INACTƒEQU„0’Channelinactive(noI/Oinprogress). -M_IMGWRT‚EQU„4’Imagewritefromwritebuffer.1M_FRMWRT‚EQU„8’Formattedwritefromwritebuffer.0M_CANCEL‚EQU„$C‘Cancelchar'sinputfromscreen.*M_REPRNT‚EQU„$10Reprintfromreadbuffer./M_BREAKƒEQU„$14Waitforbreaktimertoexpire. ,M_IMGRDƒEQU„$34Imagereadintoreadbuffer.0M_FRMRDƒEQU„$38Formattedreadintoreadbuffer. 1M_END…EQU„$70Endofmenu--sendcompletionevent. 6MHI_XMIT‚EQU„$2FCeilingfortransmit-typemenuitems.3MLO_RECV‚EQU„$30Floorƒforreceive-type‚menuitems.5MHI_RECV‚EQU„$3FCeilingforreceive-type‚menuitems.  *D*‚Equatesforprocessstates.‚Thevaluesgobyfour'ssotheycanbeB*‚usedwithbranchtables:‚JMPTBL(PC,D0.W)whereD0isthestate.$*¤----------------------------------&*£|Processeswhichassumethestate|$*¤----------------------------------*¤Transmit‚Receive„ES‡DSR*¤________‚_______„___…_____S_IDLE„EQU„0šX‰XˆXˆ.S_IMAGEƒEQU„4šX‰Xˆ.ˆ.S_FORM„EQU„8šX‰Xˆ.ˆ.S_CANCEL‚EQU  „$C™X‰.ˆ.ˆ.S_REPRNT‚EQU„$10˜X‰.ˆ.ˆ.S_SPECIALEQU„$14˜X‰.ˆ.ˆ.S_REPORT‚EQU„$60˜.‰.ˆXˆ.S_WT4RDY‚EQU„$70˜.‰.ˆ.ˆXS_WT4UNR‚EQU„$74˜.‰.ˆ.ˆXŠPAGEJ***************************************************************************6*‰DEVICE-DEPENDENTPORTIONOFCCBFORTERMINALDRIVERS*=*‰Thisdefinesthatportionofthechannelcontrolblockthat>*‰isreservedforusebytheindividualdriver.‚TheCCBis512C*‰byteslong,andeverythingbeforeCCBDDPisdefinedinEQUCCB.SA.*A*‰Notethatvirtuallyeverywhereinthisdriver,A5ismaintained=*‰asapointertothebeginningoftheCCB.‚HencethedefinedA*‰labelsmaybeusedtoaccessfieldsintheCCBwithoutworrying4*‰aboutloadingtheaddressoftheCCB.‚Forexample,*ŒMOVE.LƒIOCB_ADR(A5),A0)*‰isvalidalmostanywhereinthedriver.*J************************************************************************** 7ŠOFFSET‚CCBDDPŒStartdefinitionatthebeginningofthe&*£device-dependentportionoftheCCB. *L*‚Firstcomethequeues.‚TheseshouldalwayscomefirstsincetheaddressingL*‚modeDISPLACEMENT(A5,Rn)isusedtogettothequeuesandDISPLACEMENTmayJ*‚neverbelargerthan$7F.‚NotethatthelabelsTQandRQarebackabyteG*‚fromtheactualqueues;thiswasdoneintentionallytoallowspeedier *‚enqueueanddequeuesequences.* TQˆEQU„*-14ŠDS.BƒTQ_MAXReservestorageforthetransmitqueue. RQˆEQU„*-13ŠDS.BƒRQ_MAXReservestorageforthereceivequeue. >RESERVE.4STAK_PTR‘Stackpointerissavedhereduringcommand&*§processingsothatprocessingcanbe(*§abortedinthemiddleofasubroutine.'*§Thatis,thecommonexitcodeforthe#*§commandservicetourrestoresthe&*§stackpointerfromherebeforeexit. =RESERVE.4IOCB_ADR‘PhysicaladdressofIOCB.‚SavedwhenIOCB#*§isreceivedsothatstatusmaybe&*§updatedwhenprocessingiscomplete. =RESERVE.4TCB_ADDR‘AddressofTCBofbufferowner.‚Ifbit15'*§ofIOCBoptionsfieldisset,thisis'*§notthesameastheIOCBowner.‚Saved)*§sothatTCBIOCNTfieldcanbeaccessed. :RESERVE.4DCB_ADDR‘AddressofDCBforthischannel.‚Taken'*§fromtheINITIATEI/Oparameterblock"*§andusedinaccessingtheDCBto)*§changethedefaultconfigurationandto&*§setconfigurationcoordinationflag. RESERVE.4CHAR_CNT‘Countofthe#ofchar'sonthescreendue%*§toaformattedread.‚Usedtodeter-&*§minethe#oftosend*§foraCANCELLINEfunc  tion. =RESERVE.4COLUMN“Countofthe#ofprintable($20-$FF)chars(*§sentduringaformattedwrite.‚Usedto&*§determinewhetherweshouldskipthe *§end-of-linestringattheend. ;RESERVE.4XFER_LEN‘NumberofbytestransferredduringI/O.%*§Setwhenthesignificantpartofan'*§I/Ooperationiscompleted(theWRITE#*§portionofOUTPUTW/INPUTisnot%*§significant).‚Eventuallythisfield%*§isusedtoupdatetheIOCB'sLENGTH*§OFDATATRANSFERfield. ;**RESERVE.2WORK•Thisfieldisacollectionof1-bitflags(*§eachofwhichindicateswhetherornot%*§aparticularpartofthebackground%*§hasworktodo.‚Onlywhenthisbyte$*§is$00hasallthebackgroundwork%*§beencompleted.‚Seetheequatesfor*§bitsinthisfieldlateron. 'char%*§shouldbesentbeforeanythingelse *§toenclosedeletedcharacters. ARESERVE.1WAIT_TQ‹Setbythereceiveprocesswhenithasworkto)*§dobutcan'tdoitbecausethetransmit%*§queueistoofull.‚Checkedwhenthe&*§transmitprocessidlestoseeifthe#*§receiveprocessshouldbegivena#*§chancetorun(sincethetransmit$*§queueisemptyiftransmitidles). BRESERVE.1TR_MODE‹Setifthedefaultconfigurationindicatesthat'*§weareintransparentmode.‚Thisflag)*§willcontrolwhatwedowhencharacters$*§arereceived,etc.‚NOTE:‚itisnot$*§possibletocomeupintransparent(*§mode;aCHANGEDEFAULTScmdisneeded.  *G*‚Processstates.‚NotethattransmitandreceivestatesarewordvaluesJ*‚sotheycanbereadilyputinadataregisterandusedintheaddressing*‚modeTABLE(PC,Dx)forajump.* *RESERVE.2XMIT_ST’Transmitprocessstate.)RESERVE.2RECV_ST’Receiveprocessstate.  *'*‚Pointersforreceiveandechoqueues.E*‚NotethatRQ_GETandRQ_PUTstartat#RQ_MAXandgetsmaller.‚AfterE*‚#1theygoto#RQ_MAXagaintoformacircularqueueofcharacters.E*‚Similarly,TQ_GETandTQ_PUTgofrom#TQ_MAXdownto#1andbackto#*‚#TQ_MAXtoformacircularqueue.* @RESERVE.2RQ_GET‹Offsetintoreceivequeueofnextbytetoget.@RESERVE.2RQ_PUT‹Offsetintoreceivequeueofnextbytetoput.7RESERVE.2RQ_CNT‹Contains#ofbytesinreceivequeue. ARESERVE.2TQ_GET‹Offsetintotransmitqueueofnextbytetoget.ARESERVE.2TQ_PUT‹Offsetintotransmitqueueofnextbytetoput.8RESERVE.2TQ_CNT‹Contains#ofbytesintransmitqueue.  *E*‚Receiveerrorinfo.‚Thisinfoissetwhentheconditionoccurs,butG*‚isnotuseduntilthereceiveprocessgoestogettheassociatedchar*‚fromthereceivequeue.* 0,offsetintoreceivequeueofbyte(*§associatedwithreceiveerror(copyof!*§RQ_PUTwhenerrorisdetected).*§If=0,thereisnoerror. 0. ;RESERVE.4ADRSIDEA‘AddressoftheAsidecontrolregister.&*§Althoughwealreadyhavetheaddress'*§ofthecontrolregisterforwhichever&*§portwe'reusinginCCBCHB,wesome-#*§timeshavetoissuecommandstoa&*§specif icside(e.g.,theEOIcommand#*§alwaysgoestosideA).‚Forthose&*§occasions,thisaddresswillgetyou%*§tothesideAcontrolregister,and&*§thisaddress+4willgetyoutothe*§sideBcontrolregister.RESERVE.12‰B_BRK_BABŠRoutinetostartsendingabreaksignal.=RESERVE.12‰E_BRK_BABŠRoutinetostop‚sendingabreaksignal./*RESERVE.12‰EVENT_BABŠRoutinetosendanevent.=*RESERVE.12‰INIT_BAB‹RoutinetodoRESETandSETUP(forinit)*%%%%%%%%%%%%%%%%%%%%%%%%*9*‚Thefollowing5fieldsaresetupduringinitialization&*‚usingentriesintheTCHTYPEmodule.*7RESERVE.1DRV_CODE‘Drivercodewhichisreturnedfora*§statuscall.8RESERVE.2REC_ATT’Maskofattributesrecognizedbythis *¦driver.8RESERVE.2REC_PAR’Maskofparametersrecognizedbythis *¦driver.**%%%%%%%%‚BWN‚9/11/84.RESERVE.4REC_BAUD‘Recognizedbaudratesmask**£Eachbitinthis32bitmaskcorresponds#*£toabaudratecodeof$0to$1F.-*£ThevalueinthisentrycomesfromTCHTYPE.*%%%%%%%%%%%%%%%%%RESERVE.4DRV_ADDR‘Addressofdriver**%%%%%%%%%%‚bwn‚8/16/84*E*‚ThisprocessstateisclearedinTERM_INITandsetinTERM_COMMAND.*‚ItistestedinBREAK.B*‚Whenitisset,itisOKtoreportbreaksbecausesomeoneisout*‚there.*"RESERVE.1ES_ST”ES‚processstate.**4TERMDDP‚EQU‡*Thismarksthebeginningofthedevice#*£dependentpartoftheCCBthatis!*£uniqueforaparticulardriver.*************************** Ending of &.TERMCCB.EQ ***************************ééé‰PAGE******************************* Beginning of &.TERMINAL.EQ ******************************* *,* EQUATES FOR SOME SPECIAL ASCII CHARACTERS.*'NUL†EQU‡$00‡Nullchar.‚Usuallyignored..BEL†EQU‡$07‡Bellchar.‚Ringsbellonterminal.BS ‡EQU‡$08‡Backspacechar.6LF‡EQU‡$0A‡Linefeedchar.‚Causescursortomovedown.=CR‡EQU‡$0D†Carriagereturnchar.‚Movescursortoleftmargin.SPACE„EQU‡$20‡Spacechar.$L_ARROW‚EQU‡$3C‡Left‚arrowchar'<'.%R_ARROW‚EQU‡$3E‡Rightarrowchar'>'.#BKSLASH‚EQU‡$5C‡Backslashchar'\'.'CARET„EQU‡$5E‡Uparrow(caret)char'^'.8DEL†EQU‡$7F‡Deletechar(alsocalled'rubout').‚LikeBS. $HI_CTLƒEQU‡$1F‡Highestcontrolchar. IBS_SP_BSEQUBS<<24+SPACE<<16+BS<<8‚Backspace,space,backspaceallleft-*§justifiedin32bits. *)*‚Equatesforbaudrategeneratorvalues.* BAU50…EQU„0 BAU75…EQU„1 BAU110„EQU„2BAU134_5‚EQU„3 BAU150„EQU„4 BAU300„EQU„5 BAU600„EQU„6 BAU1200ƒEQU„7 BAU1800ƒEQU„8 BAU2000ƒEQU„9BAU2400ƒEQU„10BAU3600ƒEQU„11BAU4800ƒEQU„12BAU7200ƒEQU„13BAU9600ƒEQU„14BAU19200‚EQU„15 **‚Miscellaneousequates.**IOEVCD„EQU„1’Eventcodewewilluse(I/O).;BRK_LENƒEQU„300#ofmillisecondstomaintainbreaksignal. ŠPAGEK*****************************************************************************‰EQUATESFORTRANSPARENTMODE*K*************************************************************************** *F*‚EquatesdescribingthepartoftheCSBusedwhensettingTRANSPARENTH*‚MODE.‚WepassthedrivertheaddressofourbranchtableandhepassesI*‚usbacktheaddressofhisbranchtable,thevalueweshouldhaveinA5G*‚whenwecallhim,andtheSRthatweshoulduse.‚Actually,wemayuseG*‚adifferentSRaslongasthesupervisorbitissetandtheinterrupt9*‚levelisnotlowerthantheoneintheSRhepassesus.*7ŠOFFSETIOSTTMThisstuffwillbeintheCSBatIOSTTM.9IOSTMU„DS.Bƒ4’Heretheuserwillstore,beforemakingthe&*§CHANGEDEFAULTScall,theaddressof×Eà*§histableofbranches. 7ŠOFFSETIOSTTMThisstuffwillbeintheCSBatIOSTTM.9IOSTMD„DS.Bƒ4’theaddrofthedriver'stableofbranches;/IOSTMA„DS.Bƒ4’thevaluethedriverwantsinA5;5IOSTMS„DS.Bƒ2’theSRwiththeMINIMUMinterruptlevel*§set. 5ŠOFFSET0ŽThisdefinestheuser'sTMinterfacetable.!*ŸWeJSRtothegivenentrywhen:#TM_RCA„DS.Bƒ4’...wereceiveachar.7TM_TBE„DS.Bƒ4’...webecomecapableofanothertransmit.2TM_BRK_RECVDS.B4’...wedetectanincomingbreak.THEN.SˆRTE—thenreturntouser;ENDIXREF.SCOMINT_PERTURB IFC„'\0',''0BRA.L‚COMINT_PERTURB…elsegotocomint_perturb;ENDC IFNCƒ'\0',''0B\0.L‚COMINT_PERTURB…elsegotocomint_perturb;ENDCŠENDCŠIFC„'\1','PREEMPT'XREF.SPREEMPT IFC„'\0',''BRA.L‚PREEMPTENDC IFNCƒ'\0',''B\0.L‚PREEMPTENDCŠENDCŠIFC„'\1','DISPATCH'XREF.SDISPATCH IFC„'\0',''BRA.L‚DISPATCHENDC IFNCƒ'\0',''B\0.L‚DISPATCHENDCŠENDCŠIFC„'\1','RTCDDIRN'XREF.SERROR_01 IFC„'\0',''BRA.L‚ERROR_01ENDC IFNCƒ'\0',''B\0.L‚ERROR_01ENDCŠENDCŠIFC„'\1','RTCDPBLK'XREF.SERROR_02 IFC„'\0',''BRA.L‚ERROR_02ENDC IFNCƒ'\0',''B\0.L‚ERROR_02ENDCŠENDCŠIFC„'\1','RTCDTASK'XREF.SERROR_03 IFC„'\0',''BRA.L‚ERROR_03ENDC IFNCƒ'\0',''B\0.L‚ERROR_03ENDCŠENDCŠIFC„'\1','RTCDNTBL'XREF.SERROR_04 IFC„'\0',''BRA.L‚ERROR_04ENDC IFNCƒ'\0',''B\0.L‚ERROR_04ENDCŠENDCŠIFC„'\1','RTCDTFUL'XREF.SERROR_05 IFC„'\0',''BRA.L‚ERROR_05ENDC IFNCƒ'\0',''B\0.L‚ERROR_05ENDCŠENDCŠIFC„'\1','RTCDDPRQ'XREF.SERROR_06 IFC„'\0',''BRA.L‚ERROR_06ENDC IFNCƒ'\0',''B\0.L‚ERROR_06ENDCŠENDCŠIFC„'\1','RTCDNFND'XREF.SERROR_07 IFC„'\0',''BRA.L‚ERROR_07ENDC IFNCƒ'\0',''B\0.L‚ERROR_07ENDCŠENDCŠIFC„'\1','RTCDNMEM'XREF.SERROR_08 IFC„'\0',''BRA.L‚ERROR_08ENDC IFNCƒ'\0',''B\0.L‚ERROR_08ENDCŠENDCŠIFC„'\1','RTCDALOW'XREF.SERROR_09 IFC„'\0',''BRA.L‚ERROR_09ENDC IFNCƒ'\0',''B\0.L‚ERROR_09ENDCŠENDCŠIFC„'\1','RTCDSTAT'XREF.SERROR_10 IFC„'\0',''BRA.L‚ERROR_10ENDC IFNCƒ'\0',''B\0.L‚ERROR_10ENDCŠENDCŠIFC„'\1','RTCDLGCF'XREF.SERROR_11 IFC„'\0',''BRA.L‚ERROR_11ENDC IFNCƒ'\0',''B\0.L‚ERROR_11ENDCŠENDCŠIFC„'\1','RTCDADR 1'XREF.SERROR_12 IFC„'\0',''BRA.L‚ERROR_12ENDC IFNCƒ'\0',''B\0.L‚ERROR_12ENDCŠENDCŠIFC„'\1','RTCDADR2'XREF.SERROR_13 IFC„'\0',''BRA.L‚ERROR_13ENDC IFNCƒ'\0',''B\0.L‚ERROR_13ENDCŠENDCŠIFC„'\1','RTCDENAB'XREF.SERROR_14 IFC„'\0',''BRA.L‚ERROR_14ENDC IFNCƒ'\0',''B\0.L‚ERROR_14ENDCŠENDCŠIFC„'\1','RTCDOPT'XREF.SERROR_15 IFC„'\0',''BRA.L‚ERROR_15ENDC IFNCƒ'\0',''B\0.L‚ERROR_15ENDCŠENDCŠIFC„'\1','RTCDPCNT'XREF.SERROR_16 IFC„'\0',''BRA.L‚ERROR_16ENDC IFNCƒ'\0',''B\0.L‚ERROR_16ENDCŠENDCŠNOLISTŠOPT„CLŠLISTŠENDM*************************** Ending of &.TR1RTCD.EQ ***************************' TRACE EQ''qqTST EQ00:qqUDR EQ99qqUPLOADS MCBB/qqUSM EQccàqqUST EQ„„!qqUTILITY MC&qqVME316 EQ¶¶$qqQIO MC¿¿Baqq‰PAGE**************************** Beginning of &.TRACE.EQ ***************************** *‡TRACETABLE*$*‡TRACETABLEHEADER-FIRST8BYTES* ŠOFFSET0 TRCTBL„EQU„*!TRCPTR„DS.Lƒ1’TABLEENTRYPOINTERTRCLNG„DS.Lƒ1’TABLELENGTHTRCENTRS‚DS.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)TRCENTSZ‚EQU„************************** Ending of &.TRACE.EQ *************************ééééé  ‰PAGE************************** Beginning of &.TST.EQ ****************************„TASKSEGMENTTABLE*ˆCONTAINS‚PREAMBLE#*’MEMORYMANAGMENTLOADINFORMATION*’SEGMENTATTRIBUTEBLOCK*)SEGMENTS‚EQU„4’NUMBEROFSEGMENTSALLOWED*!ŠOFFSET0’THISISANOFFSETTABLE*TST‡DS.Lƒ1’!TSTDEBUGTOOL"TSTNSEGS‚DS.Bƒ1’NUMBEROFSEGMENTS5TSTCSEGS‚DS.Bƒ1’NUMBEROFSEGMENTSCURRENTLYEXISTING*TSTLMMUƒDS.Wƒ1’INDEXTOLASTMMULOADLINE4TSTLATTR‚DS.Wƒ1’INDEXTOLASTSEGMENTATTRIBUTELINETSTSTATƒDS.Wƒ1’MMUSTATUS+TSTMMU„DS.Wƒ4*SEGMENTS‰MMULOADINFORMATION/TSTATTRƒDS.Wƒ4*SEGMENTS‰SEGMENTATTRIBUTEBLOCK8TSTWTSKƒDS.Lƒ1’NAMEOFTASKWITHWINDOWTOADDRESSSPACE%TSTLEN„EQU„*’LENGTHOFTASKSEGTABLE**‰TSTATTRFIELDS*(TSTANAME‚EQU„TSTATTR-TSTMMU…SEGMENTNAME5TSTAATTR‚EQU„TSTATTR-TSTMMU+4ƒSEGMENTATTRIBUTEFIELD2TSTAR1„EQU„TSTATTR-TSTMMU+6ƒMEMORYTYPEDESCRIPTOR/TSTAUCNT‚EQU„TSTATTR-TSTMMU+7ƒSEGMENTUSECOUNT**‰TSTSTATFIELDS*9TSTASN„EQU„TSTSTATŒ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…EQU„0’LOGICALBEGINTSTLE…EQU„2’LOGICALENDTSTPO…EQU„4’PHYSICALOFFSET/TSTCTL„EQU„6’CONTROL(NULLBYTE+CONTROLBYTE)**‰MMUCONTROLREGISTERVALUES*!RAMCTL„EQU„$01READ/WRITESEGMENT ROMCTL„EQU„$03READONLY‚SEGMENT*********************** Ending of &.TST.EQ ***********************é(;‰PAGE************************** Beginning of &.UDR.EQ ***************************%*ˆUSERDEFINEDDIRECTIVETABLEHEADER*!ŠOFFSET0’THISISANOFFSETTABLEUDR‡DS.Lƒ1’!UDR„DEBUGTOOL(UDRCNT„DS.Wƒ1’NUMBEROFENTRIESINTABLE"UDRENTRY‚EQU„*’OFFSETTO1STENTRY**ˆUDRENTRYDEFINITION*&ŠOFFSET0’OFFSETISFROMENTRYPOINTER1UDRSESSƒDS.Lƒ1’SESSIONOFTASKTHATCREATEDENTRYUDROPT„DS.Bƒ1’OPTIONSUDREXITƒDS.Bƒ1’EXITNUMBER&UDRADDRƒDS.Lƒ1’DIRECTIVEENTRYADDRESSUDRESIZƒEQU„*’ENTRYLENGTH**ˆUDROPTIONS-SETINUDROPT*'UDROGLBL‚EQU„4’IFSET-ENTRYISGLOBAL*********************** Ending of &.UDR.EQ ***********************éééé é1‰PAGE****************************** Beginning of &.UPLOADS.MC ****************************** FHSPB„MACRO‰OPTƒNOCL,NOMEX,A<*ˆ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,A 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,A<*ˆThismacrodefinesanIOSparameterblockinstorage.Some:`C_KcS?*ˆofthemoreoftensullpiedfieldsareacceptedasparameters.*'*ˆ#1‚=PARMBLOCKPREFIX(3BYTESMAX).*ˆ#2‚=LOGICALUNITNUMBER*ˆ#3‚=OPTIONS*ˆ#4‚=RECORDNUMBER*ˆ#5‚=STARTOFBUFFER*ˆ#6‚=ENDƒOFBUFFER‰OPT‡MEX,NOCL,A 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-PBA„Startofbuffer‰ENDC ‰IFC‡'\6',''\1IOEOB‚DCB.B…4,0‡Endofbuffer‰ENDC ‰IFNC†'\6',''!\1IOEOB‚DC.L†\6-PBA„Endofbuffer‰ENDC&\1IOSLL‚DC.L†0‰Lengthofdatatransfer ‰IFC‡'\7',''!\1IOCAD‚DC.L†0‰Completionaddress‰ENDC ‰IFNC†'\7',''&\1IOCAD‚DC.L†\7-PBA„Completionaddress‰ENDC‰ENDM    REGS…MACRO‰OPTNOCL,NOMEX,A9*********************************************************5*‚ThePREFIXfortheregisterlabe lsisprovidedby„*7*‚appendingtheCHARACTERtothe"REGS"macroname...‚**·*3*‚Adescriptioncanbeprovidedasaparameter...†**·* *‚Example:­**REGS.E‚Ž**·*9*********************************************************‰OPTNOCL,MEX,A#\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 MACRO8‰LEA‡\1FHSPB(PC),A0†>..A0=addressof\1FHSparmblock1‰MOVE.W„#$0080,(A0)‰>..BuildFHSALLOCATEcommand&‰TRAP†#3’>..IssuetheALLOCATEcommand SPC 1‰ENDM   ASSIGNƒMACRO8‰LEA‡\1FHSPB(PC),A0†>..A0=addressof\1FHSparmblock/‰MOVE.W„#$0040,(A0)‰>..BuildFHSASSIGNcommand$‰TRAP†#3’>..IssuetheASSIGNcommand SPC 1‰ENDM    GET†MACRO8‰LEA‡\1IOSPB(PC),A0†>..A0=addressof\1IOSparmblock-‰MOVE.W„#$0001,(A0)‰>..BuildIOSREADcommand"‰TRAP†#2’>..IssuetheREADcommand SPC 1‰ENDM PUT†MACRO8‰LEA‡\1IOSPB(PC),A0†>..A0=addressof\1IOSparmblock.‰MOVE.W„#$0002,(A0)‰>..BuildIOSWRITEcommand#‰TRAP†#2’>..IssuetheWRITEcommand SPC 1‰ENDM  UPDATEƒMACRO8‰LEA‡\1IOSPB(PC),A0†>..A0=addressof\1IOSparmblock/‰MOVE.W„#$0008,(A0)‰>..BuildIOSUPDATEcommand$‰TRAP†#2’>..IssuetheUPDATEcommand SPC 1‰ENDM  CLOSE„MACRO8‰LEA‡\1FHSPB(PC),A0†>..A0=addressof\1FHSparmblock.‰MOVE.W„#$0004,(A0)‰>..BuildFHSWRITEcommand#‰TRAP†#3’>..IssuetheCLOSEcommand SPC 1‰ENDM   ISIT…MACRO ‰IFC‡'\0','':‰MOVE.W„\1-PBA(A4),D0‡>..D0=Datatobecompared(ARG#1)&‰CMP.W…\2-PBA(A4),D0‡>..ARG#2vsARG#1‰ENDC ‰IFNC†'\0','';‰MOVE.\0ƒ\1-PBA(A4),D0‡>..D0=Datatobecompared(ARG#1)'‰CMP.\0„\2-PBA(A4),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(PC),A0>..A0="FROM"address‰ENDC‰IFNC†'\2','(A1)'#‰LEA‡\2(PC),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‚MACRO5‰LEA‡LU6\@(PC),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 . .\00‰DC.L†$\1\2\3\4,$\5\6\7\8,$\9\A\B\C,$\D\E\F\Gƒ\0 ‰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*************************** Ending of &.UPLOADS.MC ***************************ééé ééé‰PAGE************************** Beginning of &.USM.EQ *************************** *ˆ**EQUATES* ŠOFFSET0STTTID„DS.Lƒ1’TERMINALI.D.STTSES„DS.Lƒ1’SESSIONNO.%STTINC„EQU„*-STTTID‹LENGTHOFENTRIES Š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„150EET/SCTSTACKLENGTH0TIBASG„EQU„25‘TERMINALASSIGNED(FHSEQUATE)BITCENTURYƒEQU„1900IYEAR…EQU„80‘INITIALYEAR*'SCTINBLƒEQU„160CDFINPUTBUFFERLENGTH4SCTLUN„EQU„0’LUNFORSCTINTERACTIVETERMINALDIALOG1MAXTSKNO‚EQU„8’MAXNO.ASQENTRIESQUEUEDFORSCT-MAXVNTLN‚EQU„26‘MAXLENGTHOFSCT'SASQENTRY+XOFF†EQU„$5EUPARROW(HALTTERMINALINPUT)'NOSUB…EQU„$7ENOSUBSTITUTIONCHARACTER)IPRISCTƒEQU„128INITIALPRIORITYSCTTASK'LPRISCTƒEQU„255LIMITPRIORITYSCTTASK(IPRIBCTƒEQU„64‘INITIALPRIORITYBCTTASK'LPRIBCTƒEQU„127LIMITPRIORITYBCTTASK**ˆSESSIONOPTIONBITS(D7)*?BTCDFILE‚EQU„311=>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/ENDIFFOUND[<d-lBt6ABTFORSKP‚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„$E0000000ŠDIAGNOSTICFORBREAK1ABTNOBRK‚EQU„$FFFF0000ŠDIAGNOSTICABORTNOTBREAK(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„$300STARTSESSIONMESSAGE%EM_ENDSS‚EQU„$301ENDSESSIONMESSAGEEM_BREAK‚EQU„$302BREAK"EM_DFMSG‚EQU„$303DEFAULTSMESSAGE!EM_OPTMS‚EQU„$304OPTIONSMESSAGEEM_RETRN‚EQU„$305LEFTMARGIN(EM_PLUG1‚EQU„$306DISPLAYFROMPLUGPOOLEM_LODED‚EQU„$307TASKLOADED,EM_LODEB‚EQU„$308TASKLOADEDBINARYSESSIONEM_STOPƒEQU„$309TASKSTOPPED-EM_STOPB‚EQU„$30ATASKSTOPPEDBINARYSESSIONEM_CONTƒEQU„$30BTASKCONTINUED/EM_CONTB‚EQU„$30CTASKCONTINUEDBINARYSESSION!EM_TERMD‚EQU„$30DTASKTERMINATED0EM_FINIB‚EQU„$30ETASKTERMINATEDBINARYSESSION!EM_TERMT‚EQU„$30FTASKTERMINATED-EM_TERMB‚EQU„$310TASKABORTEDBINARYSESSIONEM_REJCT‚EQU„$311LOGONREJECT$EM_ARGXƒEQU„$312"<"NOTEQUALTO">"!EM_CTION‚EQU„$313CAUTION:USER=0&EM_PRIVƒEQU„$314PRIVELEGEDUSERERROR"EM_CMDXƒEQU„$315COMMANDNOTFOUND!EM_VOLXƒEQU„$316VOLUMENOTFOUND$EM_ARGNO‚EQU„$317TOOMANYARGUMENTS EM_NTASK‚EQU„$318TASKNOTFOUND+EM_NONOƒEQU„$319TASKNAMEINVALID/PROTECTED"EM_LUNER‚EQU„$31ALUNNOTASSIGNED*EM_NCONT‚EQU„$31BTASKCANNOTBECONINUED$EM_ALSTR‚EQU„$31CSTARTINDIVIDUALLY$EM_NESTƒEQU„$31DNESTINGLEVELERROR*EM_NROOM‚EQU„$31ERETURNSTACKSPACEERROR)EM_NDEVƒEQU„$31FDEVICENOTALLOWEDERROR*EM_IFLEV‚EQU„$320IFLEVELEXECEEDEDERROR!EM_ENDIF‚EQU„$321TOOMANYENDIFS&EM_SYNTX‚EQU„$322CHAINCOMMANDSYNTAX)EM_REGXƒEQU„$323DISPLAYPSUEDOREGISTERS#EM_NOBAT‚EQU„$324BATCHNOTALLOWED"EM_NSELF‚EQU„$325SELFNOTALLOWED%EM_BASER‚EQU„$326BATCHSESSIONERROR)EM_BASES‚EQU„$327BATCHSESSIONNOTFOUND$EM_BANUM‚EQU„$328USERNO.NOTFOUND +EM_NOTBA‚EQU„$329NOTALLOWEDINBATCHMODE*EM_QBATC‚EQU„$32ABATCHJOBQUEUEDMESSAGE"EM_QRUNƒEQU„$32BBATCHJOBRUNNING EM_QDONE‚EQU„$32CBATCHJOBDONE"EM_QFULL‚EQU„$32DBATCHQUEUEFULL%EM_BABRT‚EQU„$32EBATCHJOBCANCELLED"EM_NOREC‚EQU„$32FRECORDNOTFOUND$EM_NONUM‚EQU„$330USERNO.NOTFOUND"EM_NUSER‚EQU„$331INVALIDUSERNO.#EM_NCHAN‚EQU„$332NOTINCHAINMODE"EM_VSIZE‚EQU„$333VALUESIZEERROR!EM_FILNA‚EQU„$334FILEDESCRIPTOREM_NOCHG‚EQU„$335NOCHANGE EM_DFLTV‚EQU„$336DEFAULTVOLUMEEM_OPTER‚EQU„$337OPTION%EM_BONLY‚EQU„$338NOTALLOWEDONLINEEM_INVLU‚EQU„$339INVALIDLUN%EM_FDMIS‚EQU„$33AFILE/DEVICEMISSING#EM_PRMIT‚EQU„$33BACCESSPERMISSION!EM_RVRSE‚EQU„$33CVALUESREVERSED EM_PTASK‚EQU„$33DPROTECTEDTASK EM_CMDER‚EQU„$33ECOMMANDSYNTAX%EM_FLDSZ‚EQU„$33FFIELDSIZEEXCEEDED'EM_NFILE‚EQU„$340FILEWASNOTASSIGNED,EM_NOCVT‚EQU„$341NUMERICALCONVERSIONERROR*********************** Ending of &.USM.EQ ***********************‰PAGE************************** Beginning of &.UST.EQ ****************************ˆUSERSEMAPHORETABLE* ŠOFFSET0UST‡DS.Lƒ1’!UST„DEBUGTOOL)USTNEXTƒDS.Lƒ1’LINKTONEXTTABLESEGMENT*USTNSEGƒDS.Wƒ1’NUMBEROFSEGMENTSINTABLE.USTNPAGE‚DS.Wƒ1’NUMBEROFPAGES-THISSEGMENT$USTMENTƒDS.Wƒ1’MAXNUMBEROFENTRIES(USTCENTƒDS.Wƒ1’CURRENTNUMBEROFENTRIES%USTFENTƒDS.Lƒ1’ADDRESSOFFIRSTENTRY$USTENTRY‚EQU„*’OFFSETTOFIRSTENTRY**ˆUSTENTRYDEFINITION* ŠOFFSET0&USTTNAME‚DS.Lƒ1’ORIGINATOR'STASKNAME+USTSESSN‚DS.Lƒ1’ORIGINATOR'SSESSIONNUMBERUSTSNAME‚DS.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*********************** Ending of &.UST.EQ ***********************éééé|"‰PAGE****************************** Beginning of &.UTILITY.MC ******************************O*******************************************************************************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>‚