IMD 1.17: 25/11/2014 12:15:01 82VKXBVERDOS D* BT11:0 68K VERSADOS/RMS68K OBJECT 4.5 (EQUATE FILES) (DS,DD 96 tpi 5.1/4" DISK) REVISED: 04/22/86 DISK 11 OF 24  BT11 82VKXBVERDOS 0420±b-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 &.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‘SEGMENTATTRIBUTESGIVENINPARAMETERBLOCK*£ALSOREQUESTISFORMMIO8SGPBOLAD‚EQU„14‘LOGICALADDRESSGIVENINPARAMETERBLOCK#*£(RCVSAANDTFRSEGDIRECTIVESONLY+SGPBOROM‚EQU„14‘REQUESTISFORPHYSICALROM,*£(SETINSEGALOCFORCALLTOPAGEALOCONLY);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 *********************** NNR&‰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[Kd (PTYPE…EQU„%00100000Šparitytypeeven/odd*/*‰%11xxxxxxfielddefinitionfor#ofstopbits*SB1‡EQU„%01000000Š1stopbit SB15†EQU„%10000000Š1.5stopbitsSB2‡EQU„%11000000Š2stopbits**************************** Ending of &.SIG2661.EQ ***************************NN NNNN‰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’READYTOOUTPUTSPOOLERFILElLu7}C…NHQSTATACT‚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**‚MISCE QUATES*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’PROCEEDIOINPROGRESS-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' I S 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-SPOOLERFILEDATAAREAADDRESSBOPTFLGSƒDS.Bƒ1‰Optionflagafterparsingthecommandline(101885)'FF_FLAGS‚DS.Bƒ1’FormFeedflag”(101885)&*£$00-Doaformfeedatthe‡(101885) *©beginningofthefile‡(101885),*£$FF-Don'tdoaformfeedatthe(101885) *©beginningofthefile‡(101885) DATALNGƒEQU„************************ Ending of &.SPL.EQ ***********************NNNNN‰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’BADPARAMETERBLOCK ADDRESS,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 ************************NN•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)ž?§:¯&·¿xÇ™ÏZ%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„383T1RESVCT‚EQU„39‘SAVETASK'SRESERVEDVECTORADDRESS#T1CRXTCB‚EQU„40‘CREATEEXTENDEDTCB"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*T1ABORTC‚EQU„49‘ABORTCRITICALTASK(SELF) 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/OINTERRUPT3T1XEXMSK‚EQU„63‘SETEXTENDEDEXCEPTIONMONITORMASK*T1EXMONƒEQU„64‘ATTACHTOEXCEPTIONMONITOR-T1DEXMON‚EQU„65‘DETACHFROMEXCEPTIONMONITOR*T1EXMMSK‚EQU„66‘SETEXCEPTIONMONITORMASK"T1RSTATE‚EQU„67‘RECEIVETASKSTATET1PSTATE‚EQU„68‘PUTTASKSTATE0T1REXMON‚EQU„69‘EXECUTETASKUNDEREXMONCONTROL"T1XPSTAT‚EQU„70‘PUTEXTENDEDSTATE&T1XRSTAT‚EQU„71‘RECEIVEEXTENDEDSTATET1MOVEPL‚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.3T0CINTZƒEQU„38‘EXITINTERRUPTROUTINETHRUCOMINTZ.8T0FRBLKƒEQU„39‘FREEBLOCKOFMEMORYUSINGBUDDYBUFFERS.7T0ADDSEG‚EQU„40‘ADDSEGMENTTOTRANSLATIONTREEFORTHE'*£MMB851ORM68851-FOREXECUSEONLY!8T0ADDMMIOEQU„41‘ADDSEGMENTTOTRANSLATIONTREEFORTHE,*£MMB851WITHSTART&ENDADDRESSESINREGS-*£FOREXECUSEONLY!1T0DRIVKILLEQUƒ42‘CRASHTHESYSTEMFROMADRIVER.:T0EXECKILLEQUƒ43‘CRASHTHESYSTEMFROMTHEEXEC-FORUSE**£BYEXECCODETHATDOESN'TLINKATRMSGEN *£TIMEONLY!N7T0CRXTCBEQU…44‘CREATEEXTENDEDTCBIFCOPROCESSORUSED*8*„THEFOLLOWINGEQU'SDEFINEENTRIESTOSUBROUTINESONLY0*ˆTRAP0ENTRIESFOREXTERNALCALLSDONOTEXIST*5T0RYEXT1‚EQU„3’READYROUTINEENTRY-FROMTRAP1EXIT0T0RYEXIR‚EQU„3’READYROU TINEENTRY-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 TA CKOSA0‚EQU„12‘SETA0ONRETURNTACKORDY‚EQU„11‘READYTHETASK%TACKOWTƒEQU„10‘PUTTASKINWAITSTATETACKOSPD‚EQU„9’SUSPENDTHETASK,TACKOTRM‚EQU„8’SPECRESPONSETOTERMREQUEST************************ Ending of &.TACK.EQ ************************NNNNN׉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’LINKFORALLTCBLISTJ*=========================================================================*ˆUSEDTOBETCBGROUP4TCBXTCBƒDS.Lƒ1’LINKFOREXTENDEDTCBFORCOPROCESSORJ*=========================================================================#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’COUNTOFPENDINGINPUTSTCBATTRƒDS.Wƒ1’TASKATTRIBUTES=TCBATTIƒEQU„TCBATTR+1Š2NDBYTEOFATTRIBUTES(INTERNALFLAGS)TCBABORT‚DS.Wƒ1’ABORTCODE"TCBSTATE‚DS.Lƒ1’CURRENTTASKSTATE.TCBSTAT2‚EQU„TCBSTATE+1‰2NDBYTEOFSTATEWORD+TCBTST„DS.Lƒ1’POINTERTOTASKSEGMENTTABLETCBASQSM‚DS.Wƒ3’ASQSEMAPHORETCBASQ„DS.Lƒ1’POINTERTOASQ***‡EXCEPTIONMONITORPARAMETERS*J*========================================================================="*ˆMOVEDHEREFROM2NDPAGEOFTCB. )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’EXCEPTIONMONITORMAXCOUNTOFINSTRUCTIONSJ*========================================================================= J*=========================================================================2TCBCXMSK‚DS.Lƒ1’COPROCESSOREXCEPTIONMONITORMASK ŠDS.Wƒ1’RESERVEDFORFUTUREUSE à8é?ñ2ù!J*=========================================================================;TCBDLAYƒDS.Lƒ1‘ADDRESSOFDELAYENTRYINPERIODICACTTABLE(ŠDS.Wƒ1’SAVEUPPER1/2OFD0ONTRAP1'S/TCBISRSƒDS.Wƒ1’ISRERRORCODE-SAVEFORWAKEUP *‰DS.Lƒ1’RESERVEDFORFUTUREUSEO*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> *‰DS.Lƒ1’RESERVEDFORFUTUREUSE9TCBMID„DS.Lƒ1’POINTERTO6-WORDSOFMID-INSTRSTACKFRAMEO*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<(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’EXECREGISTERA0ŠDS.Lƒ6TCBSAFEƒEQU„*’EXECREGISTERS8TCBATSKƒDS.Lƒ1’TASKNAMEOFTASKTHATCAUSEDTERMINATION6TCBASESƒDS.Lƒ1’SESSIONOFTASKTHATCAUSEDTERMINATION;TCBBERRƒDS.Lƒ2‘INFOPLACEDONSTACKBYBUSORADDRESSERROR Š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.Bƒ2’ERRORCODE-USEDONLYBYDESEM**TCBTSTSM‚DS.Wƒ3’TSTSEMAPHORE1TCBCHANƒDS.Lƒ1’LINKTONEXTCHANNELCONTROLBLOCK0TCBEVECT‚DS.Lƒ1’ADDRESSOFTASKEXCEPTIONVECTOR+TCBTVECT‚DS.Lƒ1’ADDRESSOFTASKTRAPVECTORH*=======================================================================3TCBCVECT‚DS.Lƒ1’ADDRESSOFCOPROCESSORVECTORTABLEH*=======================================================================  )TSTBEGIN‚EQU„*’OFFSETTOBEGINNINGOFTST ŠDS.Bƒ$200-* *  *‰TCBATTRBITDEFINITIONS*TSKASYST‚EQU„15‘SYSTEMTASK'TSKAMRES‚EQU„14‘TASKISMEMORYRESIDENT@TSKACRIT‚EQU„13ŒTASKISCRITICALTOOS-CRASHSYSTEMIFABORTED,TSKADUMP‚EQU„12DUMPTASKTODISKIFABORTED=TSKARELO‚EQU„11TASKISRELOCATEABLE(NOMMU)-CONVERTENTRYL*===========================================================================/TSKICVCT‚EQU„9’TASKHASOWNCOPROCESSORVECTORSL*===========================================================================.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‘ADDRESSERRORISMONITORED0TEMILLEG‚EQU„18‘ILLEGALINSTRUCTIONISMONITORED'TEMZDI Vƒ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 J*=========================================================================#*ƒNEW-GRABBEDTHISFROMSYSGEN.SA** MINI TCB FORMAT* ŠOFFSET0MTCB†DS.Bƒ4’!TCBMTCBNAME‚DS.Bƒ4’TASKNAMEMTCBSESSNDS.Bƒ4’TASKSESSION MTCBMONƒDS.Bƒ4’MONITORTASKNAMEŠDS.Bƒ4’MONITORTASKSESSIONMTCBUSER‚DS.Bƒ2’USERNUMBERMTCBLPRI‚DS.Bƒ1’PRIORITY#MTCBCFLG‚DS.Bƒ1’COPROCESSOR_IDFLAGMTCBSTATEDS.Bƒ2’STATEMTCBATTR‚DS.Bƒ2’ATTRIBUTESMTCBENTRYDS.Bƒ4’ENTRYADDRESSMTSTMMUƒDS.Bƒ128TSTMMUINFO(MTSTMSZƒEQU„*-MTSTMMUŠ#BYTESINMMUINFOMTSTATTR‚DS.Bƒ16‘TSTATTRIBUTES+MTSTATSZ‚EQU„*-MTSTATTR‰#BYTESINATTRINFOMTCBLN„EQU„*’LENGTHOFMINI-TCBJ*========================================================================= *********************** Ending of &.TCB.EQ ***********************NNN‰PAGE****************************** Beginning of &.TERMCCB.EQ ******************************%*ˆ7/9/84…addedBABareaforterminals>*ˆ3/6/86…modifiedNEAR_FULtoRQ_MAX-20,NUF_ROOMtoRQ_MAX-40NNNNNN N 3#"6*62:B2J2R8Z4b *(*‰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-20‰Whentheadditionofacharmakesthequeue'*§thisfull,thedriverwillattemptto&*§suspendthedevice'stransmissionby*§loweringDTRorsendingXOFF.ANUF_ROOM‚EQU„RQ_MAX-40‰Whentheremovalofacharmakesthequeue$*§thisfull,thedriverreleasesthe$*§suspendeddevicebyraisingDTRor*§sendingXON.ŠPAGE*I*‚Thetransmitqueueisonlydealtwithfromwithinthebackground,soitJ*‚iscompletelysafefromanyproblemswhichmightbecausedbythedriver3*‚takinganinterruptwhiledealingwiththequeue.I*‚Thereceivequeue,however,isaddedtofromoutsidethebackground(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.N  NN*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.*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.N$*¤----------------------------------&*£|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;thiswasdonein  tentionallytoallowspeedier *‚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*§foraCANCELLINEfunction. =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.‰PAGENNN  NN'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.*ŠPAGE@RESERVE.2RQ_GET‹Offsetintoreceivequeueofnextbytetoget.@RESERVE.2RQ_PUT‹Offsetintoreceivequeueofnextbytetoput.7RESERVE.2RQ_CNT‹Contains#ofbytesinreceivequeue. ARESERVE.2TQ_GET‹Offsetintotransmitqueueofnextbytetoget.ARESERVE.2TQ_PUT‹Offsetintotransmitqueue  ofnextbytetoput.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&*§specificside(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.N*9*‚Thefollowing5fieldsaresetupduringinitialization&*‚usingentriesintheTCHTYPEmodule.*7RESERVE.1DRV_CODE‘Drivercodewhichisreturnedfora*§statuscall.8RESERVE.2REC_ATT’Maskofattributesrecognizedbythis *¦driver.8RESERVE.2REC_PAR’Maskofparametersrecognizedbythis *¦driver. .RESERVE.4REC_BAUD‘Recognizedbaudratesmask**£Eachbitinthis32bitmaskcorresponds#*£toabaudratecodeof$0to$1F.-*£ThevalueinthisentrycomesfromTCHTYPE. %RESERVE.4DRV_ADDR‘Addressofdriver *E*‚ThisprocessstateisclearedinTERM_INITandsetinTERM_COMMAND.*‚ItistestedinBREAK.I*‚Whenitisset,itisOKtoreportbreaksbecausesomeoneisoutthere.*"RESERVE.1ES_ST”ES‚processstate.**4TERMDDP‚EQU‡*Thismarksthebeginningofthedevice#*£dependentpartoftheCCBthatis!*£uniqueforaparticulardriver.*************************** Ending of &.TERMCCB.EQ ***************************NN  NN‰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,theaddressofjEs*§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.>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*>*ˆHerearesomenotesaboutsavingthestateofacoprocessor:?*ˆThesave_statemacrohasanentryforcoprocessors.‚Itallows?*ˆmorethanonecoprocessor(anytype)tobeattachedtoatask=*ˆatonetime,therefore,theremaybealinkedlistofXTCBs<*ˆattachedtoaTCBatonetime.‚Now,whenthe68020makesa?*ˆtaskswitchwhileacoprocessorinstructionisexecuting,theD*ˆstackframemaybe4-words(normal)or10-words(mid-instruction).;*ˆWhenthemid-instructiononeoccurs,wemustsaveoffthe<¦?®w¶¾#D*ˆadditional6-wordssomewhere,andthere'snomoreroomintheTCB.@*ˆSowesavethemoffinthefirxtXTCBinthelinklist.Nowby@*ˆchanceifthere'smorethanoneXTCB,wemaynotbesavingtheD*ˆ6-wordsintheXTCBforthecoprocessorwhichwasmid-instruction,@*ˆbutthatdoesn'tmatter,andthat'swhyI'mtellingthestory.*O*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< SAVE_STATE MACROŠNOLIST ŠOPT„NOCLŠLISTŠIFC„'\1','L1_PART'"MOVE.LA6,-  (A7)‹saveA6onstack. MOVE.LRUNNER,A6ŠA6<==runner.=MOVEM.LD0-D7/A0-A5,TCBD0(A6)saverestofregistersinTCB.ŠENDCŠIFC„'\1','L1_FULL'3MOVEM.L(A7),A0/A2-A3…get(A6,SR,PC)fromstack;MOVE.LUSP,A1getUSP;7MOVEM.LA0-A3,TCBA6(A6)ƒsave(A6,USP,SR,PC)intcb;ŠENDCŠIFC„'\1','EXCEPTION'$MOVE.L(SP),-(SP)‰makeroomforA6."MOVE.LA6,4(SP)‹saveA6onstack. MOVE.LRUNNER,A6ŠA6<==runner.=MOVEM.LD0-D7/A0-A5,TCBD0(A6)saverestofregistersinTCB.ŠENDCŠIFC„'\1','COPROCESSOR'L*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> OPT„P=68020*MOVE.LTCBXTCB(A6),A0…A0<==XTCBaddress@BFEXTU‚TCBVOR(A6){0:4},D0Usebit-fieldtocheckformid-instr.9CMP.Bƒ#9,D0ˆCompareRTEframeformatcodeformid-instr./IFTHEN.SŒIfmid-instrRTEframe,then...2ŽMOVE.LA0,TCBMID(A6)…SaveXTCBaddressintheTCB=ŽMOVEM.L12(A7),A1/A2/A3‚Movelast6-wordsofmid-instrto...'ŽMOVEM.LA1/A2/A3,XTCBMID(A0)theXTCB.ENDIL*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<5\@‹MOVE.LXTCB_SAV(A0),A2„A2<==saveroutineaddressJSR„(A2)executesaveroutine2MOVE.LXTCB_PTR(A0),D0„D0isaddressofnextXTCB#BEQ.S‚A\@willbezeroiflastoneMOVE.LD0,A0ŽA0<==nextXTCBBRA„\@‘gosaveit.A\@ŠENDCŠNOLISTŠOPT„CLŠLISTŠENDM **ˆHereistheput_statemacro* PUT_STATE MACROŠNOLIST ŠOPT„NOCLŠLISTŠIFC„'\1','COPROCESSOR'#MOVEM.LA0-A2,-(A7)‡Saveregisters*MOVE.LTCBXTCB(A6),A0…A0<==XTCBaddress8\@‹MOVE.LXTCB_RST(A0),A2„A2<==restoreroutineaddress!JSR„(A2)executerestoreroutine;TST.L‚XTCB_PTR(A0)‡IsthereanotherXTCBinthelinklist?+BEQ.S‚B\@Pointerwillbezeroiflastone(MOVE.LXTCB_PTR(A0),A0„A0<==nextXTCBBRA„\@‘gorestoreit.B\@&MOVEM.L(A7)+,A0-A2‡RestoreregistersŠENDCŠNOLISTŠOPTCLŠLISTŠENDM **ˆHereistheexitmacro.* EXIT†MACROŠNOLIST ŠOPT„NOCLŠLISTŠIFC„'\1','SUB'XREFƒEXIT_SUB IFC„'\0',''BRA.L‚EXIT_SUBENDC IFNCƒ'\0',''B\0.L‚EXIT_SUBENDCŠENDCŠIFC„'\1','D0_SUB'XREFƒEXIT_D0SUB IFC„'\0',''BRA.L‚EXIT_D0SUBENDC IFNCƒ'\0',''B\0.L‚EXIT_D0SUBENDCŠENDCŠIFC„'\1','POSTEMPT'XREFƒEXIT_POST IFC„'\0',''BRA.L‚EXIT_POSTENDC IFNCƒ'\0',''B\0.L‚EXIT_POSTENDCŠENDCŠIFC„'\1','TERM'XREFƒEXIT_TERM IFC„'\0',''BRA.L‚EXIT_TERMENDC IFNCƒ'\0',''B\0.L‚EXIT_TERMENDCŠENDCŠIFC„'\1','ASR'XREFƒEXIT_ASR IFC„'\0',''BRA.L‚EXIT_ASRENDC IFNCƒ'\0',''B\0.L‚EXIT_ASRENDCŠENDCŠIFC„'\1','D0_ASR'XREFƒEXIT_D0ASR IFC„'\0',''BRA.L‚EXIT_D0ASRENDC IFNCƒ'\0',''B\0.L‚EXIT_D0ASRENDCŠENDCŠIFC„'\1','ERROR'XREFƒEXIT_ERR IFC„'\0',''BRA.L‚EXIT_ERRENDC IFNCƒ'\0',''B\0.L‚EXIT_ERRENDCŠENDCŠIFC„'\1','TRAPERR'XREFƒEXIT_TRAPERR IFC„'\0',''BRA.L‚EXIT_TRAPERRENDC IFNCƒ'\0',''B\0.L‚EXIT_TRAPERRENDCŠENDCŠIFC„'\1','EXCEPT'XREFƒEXIT_EXCEPT IFC„'\0',''BRA.L‚EXIT_EXCEPTENDC IFNCƒ'\0',''B\0.L‚EXIT_EXCEPTENDCŠENDCŠIFC„'\1','INTERRUPT'1ORI.W‚#$0700,SRŠfreeze(perturbationdetectors);XREF.SPERTURB_FLAGS2TST.W‚PERTURB_FLAGS†if(noperturbationdetected)IF…THEN.SˆRTE—thenreturntouser;ENDIXREFƒCOMINT_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ƒPREEMPT IFC„'\0',''BRA.L‚PREEMPTENDC IFNCƒ'\0',''B\0.L‚PREEMPTENDCŠENDCŠIFC„'\1','DISPATCH'XREFƒDISPATCH IFC„'\0',''BRA.L‚DISPATCHENDC IFNCƒ'\0',''B\0.L‚DISPATCHENDCŠENDCŠIFC„'\1','COPROC'XREFƒEXIT_COPROC IFC„'\0',''BRA.L‚EXIT_COPROCENDC IFNCƒ'\0',''B\0.L‚EXIT_COPROCENDCŠENDCŠIFC„'\1','RTCDDIRN'XREFƒERROR_01 IFC„'\0',''BRA.L‚ERROR_01ENDC IFNCƒ'\0',''B\0.L‚ERROR_01ENDCŠEND CŠIFC„'\1','RTCDPBLK'XREFƒERROR_02 IFC„'\0',''BRA.L‚ERROR_02ENDC IFNCƒ'\0',''B\0.L‚ERROR_02ENDCŠENDCŠIFC„'\1','RTCDTASK'XREFƒERROR_03 IFC„'\0',''BRA.L‚ERROR_03ENDC IFNCƒ'\0',''B\0.L‚ERROR_03ENDCŠENDCŠIFC„'\1','RTCDNTBL'XREFƒERROR_04 IFC„'\0',''BRA.L‚ERROR_04ENDC IFNCƒ'\0',''B\0.L‚ERROR_04ENDCŠENDCŠIFC„'\1','RTCDTFUL'XREFƒERROR_05 IFC„'\0',''BRA.L‚ERROR_05ENDC IFNCƒ'\0',''B\0.L‚ERROR_05ENDCŠENDCŠIFC„'\1','RTCDDPRQ'XREFƒERROR_06 IFC„'\0',''BRA.L‚ERROR_06ENDC IFNCƒ'\0',''B\0.L‚ERROR_06ENDCŠENDCŠIFC„'\1','RTCDNFND'XREFƒERROR_07 IFC„'\0',''BRA.L‚ERROR_07ENDC IFNCƒ'\0',''B\0.L‚ERROR_07ENDCŠENDCŠIFC„'\1','RTCDNMEM'XREFƒERROR_08 IFC„'\0',''BRA.L‚ERROR_08ENDC IFNCƒ'\0',''B\0.L‚ERROR_08ENDCŠENDCŠIFC„'\1','RTCDALOW'XREFƒERROR_09 IFC„'\0',''BRA.L‚ERROR_09ENDC IFNCƒ'\0',''B\0.L‚ERROR_09ENDCŠENDCŠIFC„'\1','RTCDSTAT'XREFƒERROR_10 IFC„'\0',''BRA.L‚ERROR_10ENDC IFNCƒ'\0',''B\0.L‚ERROR_10ENDCŠENDCŠIFC„'\1','RTCDLGCF'XREFƒERROR_11 IFC„'\0',''BRA.L‚ERROR_11ENDC IFNCƒ'\0',''B\0.L‚ERROR_11ENDCŠENDCŠIFC„'\1','RTCDADR1'XREFƒERROR_12 IFC„'\0',''BRA.L‚ERROR_12ENDC IFNCƒ'\0',''B\0.L‚ERROR_12ENDCŠENDCŠIFC„'\1','RTCDADR2'XREFƒERROR_13 IFC„'\0',''BRA.L‚ERROR_13ENDC IFNCƒ'\0',''B\0.L‚ERROR_13ENDCŠENDCŠIFC„'\1','RTCDENAB'XREFƒERROR_14 IFC„'\0',''BRA.L‚ERROR_14ENDC IFNCƒ'\0',''B\0.L‚ERROR_14ENDCŠENDCŠIFC„'\1','RTCDOPT'XREFƒERROR_15 IFC„'\0',''BRA.L‚ERROR_15ENDC IFNCƒ'\0',''B\0.L‚ERROR_15ENDCŠENDCŠIFC„'\1','RTCDPCNT'XREFƒERROR_16 IFC„'\0',''BRA.L‚ERROR_16ENDC IFNCƒ'\0',''B\0.L‚ERROR_16ENDCŠENDCŠNOLISTŠOPTCLŠLISTŠENDM*************************** Ending of &.TR1RTCD.EQ ***************************NNNNNN‰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’A0 TRCA6…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 *************************NNNNNÆ ‰PAGE***************************** Beginning of &.TRAP15.MC ***************************** ŠLLENƒ120O*******************************************************************************;***„TRAP15.MC-MacrotosimulatetheTRAP#15instruction.***É***E***„FUNCTION:„ContainstheTRAP15macrowhichsimulatesaTRAP#15…**;***‘calltoafirmwaredebugger.‚Thiscouldbeusedwhen„**=***‘youneedtodoaTRAP#15calltoadifferentaddressƒ***!***‘thaninthevectortable.Ÿ******É******‘NOTES:²******É***O******************************************************************************* E*ˆMacrotosimulateaTRAP#15-needsargumentsforTRAP#15routine6*ˆaddress,andaddressofDC.WtopointstackedPCat. TRAP15ƒMACRO ‰OPT…NOCL:*ˆ68010and68020stackanextrawordonTRAPinstruction.‰IFNE„CHIPTYPE-680002‹MOVE.Wƒ#$BC,-(A7)‰PushVORforTRAP#15onstack.‰ENDC$‰PEAƒ\2–68000TRAP#15stacksPCand‰MOVE.W‚SR,-(A7)ŽSR.)‰MOVE.L‚\1,-(A7)ŽTRAP#15routineaddress&‰RTS›PulltheTRAP#15addressoffthe*¦stackandgothere.‰NOLIST‰OPT‚CL‰LIST‰ENDM**†GENERALEQUATES************************ Ending of &.TRAP15.MC ***********************NNNÏ( ‰PAGE************************** Beginning of &.TST.EQ ***************************%*~~~~~~~~~~~~~~~~~~~~~~~‚BAW10/21/84+*‚ADDRTYPUSEDINCONDITIONALASSEMBLIESIN*‚SEGDEAL,LOADMMU,...* ADDR32ƒEQU‡0 ADDR24ƒEQU‡1ADDRTYP‚EQU‡ADDR32*~~~~~~~~~~~~~~~~~~~~~~~~~~~**„TASKSEGMENTTABLE*ˆCONTAINS‚PREAMBLE#*’MEMORYMANAGMENTLOADINFORMATION*’SEGMENTATTRIBUTEBLOCK*)SEGMENTS‚EQU„8’NUMBEROFSEGMENTSALLOWED *!ŠOFFSET0’THISISANOFFSETTABLE*TST‡DS.Lƒ1’!TSTDEBUGTOOL"TSTNSEGS‚DS.Bƒ1’NUMBEROFSEGMENTS5TSTCSEGS‚DS.Bƒ1’NUMBEROFSEGMENTSCURRENTLYEXISTING4TSTASN„DS.Wƒ1’ADDRESSSPACENUMBERFORTASK(1BYTE)+TSTMMU„DS.Wƒ8*SEGMENTS‰MMULOADINFORMATIONTSTMENDƒEQU„*’ENDOFTSTMMU-TSTATTRƒDS.WƒSEGMENTS‹SEGMENTATTRIBUTEBLOCKTSTAENDƒEQU„*’ENDOFTSTATTR#TSTPMMUƒDS.Wƒ4’RootpointertoPMMU%TSTLEN„EQU„*’LENGTHOFTASKSEGTABLE**‰TSTATTRFIELDS*&TSTAATTR‚EQU„0’SEGMENTATTRIBUTEFIELD+TSTCTL„EQU„1’CONTROLINFORMATION1=R/W,3=RO-TSTALENƒEQU„2’LENGTHOFEACHATTRIBUTESENTRY**‰TSTPMMUFIELDS*-TSTSTATƒEQU„TSTASNRARELYUSEDLABEL=TSTASN*.*‰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*TSTANAME‚EQU„0’SEGMENTNAMETSTLB…EQU„4’LOGICALBEGINTSTLE…EQU„8’LOGICALENDTSTPO…EQU„12‘PHYSICALOFFSET'TSTMLENƒEQU„16‘LENGTHOFEACHMMUENTRY**‰MMUCONTROLREGISTERVALUES*!RAMCTL„EQU„$01READ/WRITESEGMENT ROMCTL„EQU„$03READONLY‚SEGMENT*********************** Ending of &.TST.EQ ***********************ØE‰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 ***********************NNNN Ná‰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?*ˆ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 ***************************NNN NNN' USM EQà  $UST EQ88!  $UTILITY MCAA&  $VME316 EQjj$  $QIO MCssBa  $‰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„17‘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<- B(6 ABTFORSKP‚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 ***********************NNNN 0"‰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>‚