;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED ; OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE. ; ;COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1984,1987. ;ALL RIGHTS RESERVED. ; THESE ARE THE SYMBOLS USED IN THE REPRESENTATION OF "." ; THE LEFT HALF OF DOT IS USED FOR FLAGS. THE SIGN BIT IS A "VALID" FLAG. ; THE 200K BIT INDICATED THAT THE ADDRESS IS AN "AC" ADDRESS AND SHOULD BE ; INCRIMENTED BY 1 ; DOT (AC7) IS THE CURRENT SIMULATED PC ; DOTOLD MEM IS WHERE THE OLD DOT IS SAVES ON CASE OF A , ; A , OR A ^. ; DOTFOO MEM ; DTFOLD MEM ; ROUTINE DOTSAV ; MOVES DOT TO DOTOLD AND DOTFOO TO DTFOLD ; ROUTINE DOTINC ; IF THE SIGN BIT OF THE DOT WORD IS SET, DOTINC WILL USE IT, ELSE IT ; WILL START WITH DOT. IF THE SIGN BIT OF DOT IS NOT SET, IT WILL ALSO ; LOAD A -1 TO THE LEFT HALF OF THE ADDRESS. IT ALSO HAS THE OBNOXIOUS ; HABIT OF SCREWING WITH THE BITS, BASED ON THE TYPE OF FE IT THINKS ; IT IS PLAYING WITH ; ROUTINE NDTFOO ; ROUTINE TO UPDATE (WITH DOTINC) DOTFOO. ; ROUTINE NDTFIN ; UPDATES THE DOT POINTERS DTFINP (USED FOR INPUT) ; ROUTINE NXTDOT ; UPDATES DOT TO POINT TO THE NEXT WORD UNIVERSAL DDTSYM SYMBOLS FOR DDT11 SEARCH MONSYM SALL ;GET NICE LISTINGS FOR A CHANGE .HWFRMT ;AND SKIP THE FANCY BITS IFNDEF DEBUG, EXMAX== 140 ;MAXIMUM NUMBER OF BYTES TO EXAMINE AT ONCE MASKSZ==10 ;NUMBER OF WORDS IN MASK CMDSIZ==500 ;LARGEST COMMAND NUMBUF==1 ;NUMBER OF BUFFERS FOR READING DUMPS, ETC. ; SETTING LARGER THAN 1 MAY CAUSE %GOTO TO FAIL ;REGISTER USAGE AC0= 0 ; only for very tempory things AC1= 1 AC2= AC1+1 AC3= AC2+1 AC4= AC3+1 SYM= 5 ;POINTER TO SYMBOL BLOCK STATE= 6 DOT= 7 ;CURRENT LOCATION DOT.AC==200000,,0 ;THE CURRENT LOCATION IS AN AC DOT.OK==400000,,0 ;THE CURRENT DOT IS VALID DOT.FG==777000,,0 ;ALL THE DOT FLAGS ; IF LH IS NONZERO IS A REGISTER ADR FLG= 10 T1= 11 T2= T1+1 T3= T2+1 ; ALSO REFERED TO AS MA T4= T3+1 ; ALSO REFERED TO AS MA+1 T5= T4+1 QX= 16 ; AN AC TO SCRATCH P= 17 ; THE AC'S WE DONT WANT TO HEAR ABOUT .XCREF P,QX,T1,T2,T3,T4,T5,AC0,AC1,AC2,AC3,AC4,FLG ; THE MACROS WE DONT WANT TO HEAR ABOUT .XCREF TYPE,CALL,RET .XCREF TXN,TXNA,TXNN,TXNE,TXO,TXOA,TXOE,TXON .XCREF TXC,TXCA,TXCN,TXCE,TXZ,TXZA,TXZE,TXZN ; SIMULATOR REGISTER USAGE ;WHEN SIMULATING REGS 0-7 ARE USED FOR CORRESPONDING PDP11 REG'S ; REGISTERS ALWAYS CLEAR EXCEPT FOR BITS 20-35 SP= 6 ;SIMULATED STACK POINTER PC= 7 ;SIMULATED PC ; PC MUST ALWAYS BE EVEN MA= T3 ;CONTAINS LAST ADR SETUP UP BY CALLS THROUGH RFETCH ; SO RSTORE USES SAME LOC. WORD ADDRESSES ARE LOADED THEN ; ROTATED RIGHT 2 POSITIONS. BYTE ADDRESS ARE DIVIDED BY 4. ; REMAINDER OF DIVISION IS KEPT IN MA+1 MA..UN==040000 ;ADDRESS IS A UNIBUS DEVICE MA..RG==020000 ;LOCATION IS REGISTER MA..IO==010000 ;LOCATION IS IN PERIPHERAL AREA (I.E. 170000-177777) IR= T5 ;CONTAINS INSTRUCTION WHEN SIMULATING PS= 16 ;SIMULATED PS PS...T==000020 ;TRAP BIT PS...N==000010 ;RESULT WAS NEGATIVE PS...Z==000004 ;RESULT WAS ZERO PS...V==000002 ;RESULT WAS ARITH OVERFLOW PS...C==000001 ;RESULT WAS A CARRY F.FLIP==1B35 ;LOCAL FLAG ; USED BY $V TO FLAG 1ST PASS ; USED BY $N TO DISTINGUISH FROM $W ; USED BY OPNFIL TO DEMAND PROMPT ; USED BY $D TO REMEMBER DOING COMMAND LOGGING ; USED WHEN READING BINARY FILE F.FLOP==1B34 ;LOCAL FLAG ; SET IF USER SAYES /BINARY IN INITIAL COMMAND ; SET IF READING A PACKED FILE F..FOO==1B33 ;LOCAL FLAG WHEN SET MEANS ; DUMP IS DISASSEMBLY ; READING A DTELDR DUMP F.LOPN==1B32 ;CURRENT LOCATION IS OPEN F.MOPN==1B31 ;MASK OPEN F.MASK==1B30 ;ESCAPE M TYPED F.TEXT==1B29 ;ASSEMBLING TEXT F.IOCT==1B28 ;ASSEMBLING AN OCTAL NUMBER F.IDEC==1B27 ;ASSEMBLING A DECIMAL NUMBER F.IHEX==1B26 ;ASSEMBLING A HEX NUMBER F.SYMB==1B25 ;ASSEMBLING A SYMBOL F.CACH==1B24 ;USE CACHE IF POSSIBLE F.WRIT==1B23 ;WE ARE OPENING FILE FOR OUTPUT F.APND==1B22 ;APPEND TO TO FILE IF ALREADY EXISTS F.LOCK==1B21 ;PROGRAM IS LOCKED F.WENB==1B20 ;PATCHING WAS ENABLED WITH /PATCH F..ESC==1B19 ;TYPED ESCAPE TWICE F.PACK==1B18 ;BINARY FILE IS PACKED F.LBKT==1B17 ;LOCATION OPENED WITH A LEFT BRACKET F.HASH==1B16 ;OPCODE PRECEEDED BY A # SIGN F.PERC==1B15 ;OPCODE PRECEEDED BY A % SIGN F.LPAR==1B14 ;OPCODE PRECEEDED BY A ( SIGN F.SYML==1B13 ;SYM HAS BEEN LOADED . SET BY GETEXP F.GEXP==1B12 ;GOT AN EXPRESSION . SET BY GETEXP F.TOPN==1B11 ;DID OPEN ON TTY(TO CONTROL ECHO) F.SVIO==1B10 ;HIT A STACK VIOLATION F.SREG==1B9 ;SYMBOLIC TYPEIN WAS A REGISTER NAME F..SIM==1B8 ;AM RUNNING SIMULATION F.EXEC==1B7 ;RUNNING IN EXEC MODE F.RUNF==1B6 ;RUN FLOP FOR SIMULATION F.CERR==1B5 ;HIT AN ERROR IN COMMAND FILE F.FELE==1B4 ;HAVE DONE FIRST ELEMENT OF EXPRESSION F.NOUT==1B0 ;SUPRESS OUTPUT ; RAMDOM FLAGS AND OTHER GARBAGE IO.RLB==1000 IO.WLB==400 ;TTYBIT FLAGS TF.RUB==1B1 ;DO RUBOUTS WITH BACKSPACE-SPACE-BACKSPACE ; DEBUG FLAGS FOR USE WITH THE /DEBUG SWITCH DB.INI==1B35 ; INIT CODE DEBUG MESSAGES DB.SYM==1B34 ; SYMBOL TABLE INFORMATION DB.MEM==1B33 ; MEMORY INFORMATION DB.EXD==1B32 ; EXAMINE/ DEP CODE... DB.CAL==1B31 ; REPORT ALL CALLS ;FLAGS FOR TYPE OF OPERATING SYSTEM T.OTHER==1B0 ;THIS IS OTHER T.TOP10==1B1 ;THIS IS TOPS-10 T.ITS==1B2 ;THIS IS ITS T.TENEX==1B3 ;THIS IS TENEX T.TOP20==1B4 ;THIS IS TOPS-20 T.EXEC==1B5 ;THIS IS EXEC MODE ; CPU TYPES THAT WE RUN ON... P.KS10==1B0 ; KS10 - deliberately the sign bit P.KL10==1B1 ; KL10 P.KI10==1B2 ; KI10 P.KA10==1B3 ; KA10 P.PDP6==1B4 ; PDP-6 ; GENERAL ERROR CODES WE CAN SEE - USED BY THE PARSER, AND IN CALERR ER.NXM==1 ; NONEXISTENT MEMORY REFERENCE ER.ODD==2 ; ODD ADDRESS TRAP ER.DTE==3 ; DTE TIME OUT ERROR ; VALUES FOR OUTPUT MODES MODINS==0 ; INSTRUCTION MODE OUTPUT MODADR==1 ; ADDRESS MODE OUTPUT MODNUM==2 ; NUMERIC MODE OUTPUT MODBYT==3 ; BYTE MODE OUTPUT MODASC==4 ; ASCII MODE OUTPUT MODEBC==5 ; EBCIDIC MODE OUTPUT MODR50==6 ; RADIX 50 TYPEOUT ; DEFINE THE TYPES OF DATA THAT CAN BE STORED IN "DATA" DAT.XX==0 ; NO DATA THERE, OR DONT KNOW DAT.NU==1 ; A NUMBER DAT.AS==2 ; AN ASCII STRING DAT.IN==3 ; AN INSTRUCTION ;DEFINE THE TYPES OF EXAMINES WE CAN DO EX.MEM== 0 ;MEMORY EX.PORT== 1 ;CALL11 UUO EX.NODE== 2 ;NODE UUO EX.FE0== 3 ;RSX20F EXAMINE EX.D61== 4 ;DN60 ON TOPS-10 EX.D62== 5 ;DN60 ON TOPS-20 EX.MCB== 6 ;DN20 DECNET 20 EXAMINE EX.FE1== 7 ;RSX20F/TOPS-10 FE.MAX==40 ;Max data bytes 20F allows for ME msg EX.MC1== 10 ;MCB running on TOPS-10 ; SYMBOL TABLE FORMAT... ;SYMBOLS ARE KEPT IN FOUR WORD BLOCKS ; SYMBEG POINTS TO FIRST BLOCK ; SYMEND POINTS TO LAST BLOCK ; 1ST WORD IN BLOCK IS SIXBIT SYMBOL ; 2ND WORD IS VALUE ; 3RD WORD IS HALF WORD FLAGS,,MASK FOR MATCH SMF.SU==000001 ;SYMBOL IS SUPPRESSED(DEFINED WITH =) SMF.RG==000002 ;SYMBOL IS A REGISTER VALUE SMF.IN==000004 ;SYMBOL IS AN INSTRUCTION SMF.EI==000010 ;EIS INSTRUCTION FORMAT SMF.DD==000020 ;LOW ORDER SIX BITS ARE DESTINATION SMF.SS==000040 ;LOW ORDER 12 BITS ARE SSDD SMF.BR==000100 ;LOW ORDER 8 BITS ARE XXX(I.E. BR) SMF.SB==000200 ;SOB TYPE ADDRESS SMF.RT==000400 ;RTS TYPE REGISTER USAGE SMF.JS==001000 ;JSR TYPE REGISTER USAGE SMF.EM==002000 ;EMT TYPE ARGUMENT SMF.MK==010000 ;MARK SMF.PL==020000 ;SET PROCESSOR LEVEL SMF.P8==040000 ;PDP8 SYMBOL SMF.11==100000 ;PDP11 SYMBOL SMF.BY==200000 ;BYTE INSTRUCTION ; 4TH WORD IS SYMBOL SOURCE OPDEF APRID [700000,,0] ;READ MICROCODE VERSION AND CPU SERIAL NU OPDEF WRAPR [700200,,0] ;WRITE APR ;1B19 ;IO RESET ;1B20 ;ENABLE SELECTED CONDITIONS ;1B21 ;DISABLE SELECTED CONDITIONS ;1B22 ;CLEAR SELECTED CONDITIONS ;1B23 ;SET SELECTED CONDITIONS ;1B25 ;INTERRUPT 8080 ;1B26 ;POWER FAIL ;1B27 ;NXM ;1B28 ;BAD MOS DATA ;1B29 ;CORRECTED MOS DATA ;1B30 ;TIMER ;1B31 ;8080 INTERRUPT ;1B32 ;GENERATE APR INTERRUPT ;7B35 ;APR LEVEL OPDEF RDAPR [700240,,0] ;READ APR OPDEF WRPI [700600,,0] ;WRITE PI OPDEF PIOFF [700600,,400] OPDEF PION [700600,,200] OPDEF RDPI [700640,,0] ;READ PI OPDEF WRUBR [701140,,0] ;WRITE USER BASE REGISTER OPDEF CLRPT [701100,,0] ;CLEAR PAGE TABLE OPDEF RDUBR [701040,,0] ;READ USER BASE REGISTER OPDEF WREBR [701200,,0] ;WRITE OPDEF RDEBR [701240,,0] ;READ OPDEF TIOE [710000,,0] ;TEST UNIBUS, SKIP EQUAL OPDEF TIOEB [720000,,0] ;TEST UNIBUS, SKIP EQUAL OPDEF TION [711000,,0] ;TEST UNIBUS, SKIP NOT EQUAL OPDEF TIONB [721000,,0] ;TEST UNIBUS, SKIP NOT EQUAL OPDEF RDIO [712000,,0] ;READ UNIBUS OPDEF RDIOB [722000,,0] ;READ UNIBUS BYTE OPDEF WRIO [713000,,0] ;WRITE UNIBUS OPDEF WRIOB [723000,,0] ;WRITE UNIBUS BYTE OPDEF BSIO [714000,,0] ;BIT SET TO UNIBUS OPDEF BSIOB [724000,,0] ;BIT SET TO UNIBUS BYTE OPDEF BCIO [715000,,0] ;BIT CLEAR TO UNIBUS OPDEF BCIOB [725000,,0] ;BIT CLEAR TO UNIBUS BYTE OPDEF WRSPB [702400,,0] ;WRITE SPT BASE REGISTER OPDEF RDSPB [702000,,0] ;READ SPT BASE REGISTER OPDEF WRCSB [702440,,0] ;WRITE CORE STATUS TABLE BASE REGISTER OPDEF RDCSB [702040,,0] ;READ CORE STATUS TABLE BASE REGISTER OPDEF WRPUR [702500,,0] ;WRITE PROCESS USE REGISTER OPDEF RDPUR [702100,,0] ;READ PROCESS USE REGISTER OPDEF WRCSTM [702540,,0] ;WRITE CST MASK REGISTER OPDEF RDCSTM [702140,,0] ;READ CST MASK REGISTER OPDEF WRTIME [702600,,0] ;WRITE TIME BASE OPDEF RDTIME [702200,,0] ;READ TIME BASE OPDEF WRINT [702640,,0] ;WRITE INTERVAL TIMER OPDEF RDINT [702240,,0] ;READ THE INTERVAL REGISTER OPDEF UMOVE [704000,,0] ;MOVE FROM PREVIOUS CONTEXT OPDEF UMOVEM [705000,,0] ;MOVE TO PREVIOUS CONTEXT ;EPT - EXECUTIVE PROCESS TABLE ;0-37 CHANNEL LOGOUT AREA ;40-41 EPTINT==42 ;42-57 INTERRUPT LOCATIONS ;60-77 (KL10 - DTE AREA) EPTVEC==100 ;100 128 WORD TABLE OF VECTORS ;101-177 RESERVERED FOR FUTURE USE ;200-377 EXEC PAGE 400-777 ;400-420 EPTAOV==421 ;421 EXEC ARITH OVERFLOW TRAP INS EPTPDO==422 ;422 EXEC PUSHDOWN OVFL INS EPTTP3==423 ;423 EXEC TRAP-3 INS ;424-427 HALT STATUS AREA ;430-437 ;460-507 ;510 TIME BASE HIGH-ORDER WORD ;511 TIME BASE LOW-ORDER WORD ;512 PERF ANA COUNTER HIGH-ORDER WORD ;513 " LOW-ORDER WORD ;514 INTERVAL TIMER VEC INT LOC ;515-577 RES FOR USE BY HDW EPTSTP==540 ;540-557 SECTION TABLE POINTER FOR SECTION 0-17 EPM000==600 ;600-757 EXEC PAGE 0-337 ;760-777 RESERVED ;UPT - USER PAGE TABLE ;0-377 USER PAGE 0-777 ;400-417 EXEC PAGE 340-377 ;420 FREE ;421 USER ARTIH OVFLW TRAP INST ;422 USER PUSHDOWN OVFLW TRAP INS ;423 USER TRAP-3 INS .UPMUO==1424 ;424 USERS FLAGS,,MUUO OPCODE .UPMUP==1425 ;425 PC WORD OF MUUO STORED HERE ;426 MUUO EFFECTIVE ADDR ;427 PROCESSOR CONTEXT ;430 KERNEL NO TRAP MUUO NEW PC WORD ;431 KERNEL TRAP MUUO NEW PC WORD ;432 SUPERVISOR TRAP MUUO NEW PC WORD ;433 SUPERVISOR NO TRAP MUUO NEW PC WORD ;434 CONCEALED TRAP MUUO NEW PC WORD ;435 CONCEALED NO TRAP MUUO NEW PC WORD ;436 PUBLIC TRAP MUUO NEW PC WORD ;437 PUBLIC NO TRAP MUUO NEW PC WORD ;440-477 FREE UPTPFW==1500 ;500 EXEC OR USER PAGE FAILWORD STORED HERE ;B0 USER MODE ;B1 IO = ADAPTER UPTPFL==1501 ;501 PAGE FAIL OLD FLAGS WORD UPTPFO==1502 ;502 PAGE FAIL OLD PC WORD UPTPFN==1503 ;503 PAGE FAIL NEW PC WORD ;504 EBOX CLOCK TICKMETER HIGH ORDER WORD ;505 EBOX CLOCK TICKMETER LOW-ORDER WORD ;506 MBOX CYCLEMETER HIGH ORDER WORD ;507 MBOX CYCLEMETER LOW-ORDER WORD ;510-577 RESERVED FOR HDW ;600-777 FREE ; PAGE TABLE WORDS ;400000 ACCESS ALLOWED ;200000 PUBLIC ;100000 WRITABLE ;040000 SOFTWARE ;020000 CACHE ENABLED ;017777 PHYSICAL PAGE ADR BITS 14-26 ;UNIBUS ADAPTER BR5LVL==4 BR5OFF==1B26!1B32 BR5ON== 1B25!1B32 BR5INT==1B24 ;INTERRUPT IN PROGRESS FOR BR5 BR7LVL==3 BR7OFF==1B26!1B31 BR7ON== 1B25!1B31 BR7INT==1B23 ;INTERRUPT IN PROGRESS FOR BR7 UBAMAP= 763000 ;MAPPING REGISTERS UB.RPW==400000 ;MAINTENANCE PAUSE FOR EVEN AND ODD MEMORY WRITE UB.16B==200000 ;DISABLE UPPER TWO BITS ON TRANSFER UB.FST==100000 ;FAST XFER UB.VLD==040000 ;VALID ;003777 ;PAGE NUMBER UBA.SR= 763100 ;STATUS REGISTER ;400000 ;TIMEOUT ;200000 ;BAD MEMORY ON NPR TRANSFER ;100000 ;SM10 BACKPANEL BUS ERROR ;040000 ;CPU ADDRESSED NONEXISTENT DEVICE ;004000 ;BR6 OR BR7 ;002000 ;BR5 OR BR4 ;001000 ;AC OR DC LOW ;000200 ;DISABLE TRANSFER ON UNCORRECTABLE DATA ;000100 ;UBA INITIALIZE UBA.B7==1B28+BR7LVL*10 UBA.B5==1B28+BR5LVL UBALVL==1B28+BR7LVL*10+BR5LVL ;PI LVL ASSIGNMENTS UBA.IR= 763200 ;VECTOR REGISTER UBA.MR= 763101 ;MAINTENANCE REGISTER ;000001 ;CHANGE NPR REQUEST ;000002 ;ENABLE NPR WRAP AROUND ;DZ11 DZ.CSR==0 ;CONTROL AND STATUS REGISTER DZ.RBF==2 ;READER BUFFER DZ.LPR==2 ;LINE PARAMETER REGISTER DZ.TCR==4 ;TRANSMIT CONTROL REGISTER DZ.MSR==6 ;MODEM STATUS REGISTER DZ.TDR==6 ;TRANSMIT DATA REGISTER ;RJP04 RPCS1== 776700 RPWC== 776702 RPBA== 776704 RPDA== 776706 RPCS2== 776710 RPDS== 776712 RPER1== 776714 RPAS== 776716 RPLA== 776720 RPDB== 776722 RPMR== 776724 RPDT== 776726 RPSN== 776730 RPOF== 776732 RPDC== 776734 RPCC== 776736 RPER2== 776740 RPER3== 776742 RPEC1== 776744 RPEC2== 776746 ;INTERPROCESSOR COMMUNICATIONS AREA ;WORD 31 - KEEP ALIVE AND STATUS WORD FEWSTS= 31 ;WORD 32 - KS-10 INPUT WORD FEWINP= 32 ;BITS 20-27 = 0 NO ACTION ;BITS 20-27 = 1 CTY CHAR ;BITS 28-35 = CHAR ;WORD 33 - KS-10 OUTPUT WORD FEWOUT= 33 ;BITS 20-27 = 0 NO ACTION ;BITS 20-27 = 1 CTY CHAR ;BITS 28-35 = CHAR ;WORD 34 - KS-10 KLINIK LINE INPUT WORD ;WORD 35 - KS-10 KLINIK LINE OUTPUT WORD ;TOPS-20 version DN60 protocol definitions .BTD60==16 ;DN60 PROTOCL OPERATION .VND60==2 ;DN60 protocol type ;BTD60 ARG BLOCK ; DEFSTR (BT6DTE,0,35,36) ;DTE number ; DEFSTR (BT6ERR,1,35,36) ;returned error flags ; DEFSTR (BT6HBC,2,17,18) ;DN60 header byte count ; DEFSTR (BT6HDR,2,35,18) ;DN60 header address(begins on word) ; DEFSTR (BT6DBC,3,35,36) ;data byte count ; positive => write data mode ; zero => no data transfer ; negative => read data mode ; DEFSTR (BT6PTR,4,35,36) ;data byte ptr ;the following are returned for timing analysis ; DEFSTR (BT6TMR,5,35,36) ;time of request ; DEFSTR (BT6TAS,6,35,36) ;TIME DTE ASSIGNED ; DEFSTR (BT6THQ,7,35,36) ;time header queued to 11 ; DEFSTR (BT6TRD,10,35,36) ;time of -10 done for response header ; DEFSTR (BT6TDD,11,35,36) ;time of -10 done for data ; DEFSTR (BT6TFR,12,35,36) ;time finished request BT6DTE==0 BT6ERR==1 BT6HDR==2 BT6DBC==3 BT6PTR==4 BT6TMR==5 BT6TAS==6 BT6THQ==7 BT6TRD==10 BT6TDD==11 BT6TFR==12 BT6SIZ==13 ;size of BOOT arg block ;DN60 header definitions ; DEFSTR (D6FCN,0,15,16) ;xmitted function code ; DEFSTR (D6RSP,0,7,8) ;returned response code ; DEFSTR (D6FCD,0,15,8) ;returned function code ; DEFSTR (D6ADR,0,31,16) ;address for examine/deposit ; DEFSTR (D6DAT,1,15,16) ;data from examine/for deposit ; DEFSTR (D6DEV,0,23,8) ;device code ; DEFSTR (D6LIN,0,31,8) ;line number ; DEFSTR (D6CNT,1,15,16) ;requested byte count to transfer ;end of original header definitons ;begin extended header ; DEFSTR (D6AR3,1,31,16) ;reserved ; DEFSTR (D6DST,2,31,32) ;returned device status ; DEFSTR (D6LST,3,32,32) ;returned line status D6HWSZ==4 ;number of 36 bit words in header D6HBSZ==4*D6HWSZ ;number of 8 bit bytes in header ;DN60/DTE database/work space definitions ;D6STS below is returned in BT6ERR when an error occurs ; DEFSTR (D6STS,0,35,36) ;port status ;protocol flags D6.BSY==1B0 ;port is busy - sign bitness is used in testing D6.QHD==1B1 ;header has been queued D6.HDD==1B2 ;to -11 done for header seen D6.NDT==1B3 ;this is a no-data-transfer operation D6.RED==1B4 ;this is a read data type operation D6.QDT==1B5 ;data has been queued(for write fcn) D6.DTD==1B6 ;to -11 done for write data seen D6.RBL==1B7 ;to -10 doorbell for response header seen D6.RDN==1B8 ;to -10 done for response header seen D6.DBL==1B9 ;to -10 doorbell for read data seen D6.DDN==1B10 ;to -10 done for read data seen D6.FDN==1B11 ;to -10 done for read data was faked ;error flags D6.BDP==1B30 ;bad data byte ptr D6.ARD==1B31 ;11 attempted to send read data when ; when none was expected D6.TRS==1B32 ;timed out waiting for response header D6.TDT==1B33 ;timed out waiting for read data D6.TPO==1B34 ;timed out waiting for port to be free D6.NT6==1B35 ;not a DN60 front end D6.SER==D6.BDP!D6.ARD!D6.TRS!D6.TDT!D6.TPO!D6.NT6 ;all errors ;DN60 function codes D6.EXM==11 ; DN60 examine memory function code D6.DEP==12 ; DN60 deposit memory function code ;FORMATS OF PDP-11 STB FILES (FROM VARIOUS SOURCES... comment \ STB files are written in records of variable counted length. The format in the file is : two clear bits, high byte, low byte per halfword The count, which is first, is two bytes long, and will be on a word boundry. The records should be an even number of bytes long. The following is a list of the record types available. \ STB.XX==0 ; ILLEGAL RECORD TYPE STB.GS==1 ; GLOBAL SYMBOL RECORD STB.EG==2 ; END OF GLOBAL SYMBOLS STB.TX==3 ; TEXT INFORMATION STB.RL==4 ; RELOCATION INFORMATION STB.IS==5 ; INTERNAL (LOCAL) SYMBOLS STB.EM==6 ; END OF MODULE STB.MX==6 ; MAXIMUM RECORD TYPE ; The following are the types defined for GSD (type 1) records GSD.MN==0 ; MODULE NAME GSD.CS==1 ; CSECT NAME GSD.IS==2 ; INTERNAL SYMBOL GSD.TA==3 ; TRANSFER ADDRESS (START ADDRESS) GSD.GS==4 ; GLOBAL SYMBOL GSD.PN==5 ; PROGRAM NAME GSD.PV==6 ; PROGRAM VERSION GSD.MA==7 ; MAPPED ARRAY GSD.CR==10 ; COMPLEATION ROUTINE NAME GSD.MX==10 ; MAX ALLOWED TYPE ; Within the global symbol, the following flags have significants GS.WEA==1 ; WEAK REFERENCE (INTERNAL ONLY IF NEEDED) GS.TYP==4 ; TYPE, DEFINITION/REFERENCE OR LIBRARY GS.REF==10 ; REFERENCE OD DEFINITION GS.REL==40 ; RELOCATABLE OR ABSOLUTE ; Within a Psect, the following flags hold PS.MES==1 ; MEMORY SPEED 1==> FAST NEEDED PS.LIB==2 ; REFERENCES LIBRARY OR COMMON BLOCK PS.ALL==4 ; ALLOCATION: 0==> CONCATINATE 1==> OVERLAY PS.RES==10 ; RESERVED FOR TKB INTERNAL USE PS.ACC==20 ; ACCESS: 0==> READ/WRITE 1==> READ ONLY PS.REL==40 ; RELOCATION: 0==> ABSOLUTE 1==> RELOCATABLE PS.SCO==100 ; SCOPE: 0==> LOCAL 1==> GLOBAL PS.TYP==200 ; TYPE: 0==> INSTRUCTIONS 1==> DATA ;FORMAT OF PDP-11 BINARY TAPES ; FRAME -1 001 ; -2 000 ; -3 BYTE COUNT - LOWER ORDER ; -4 BYTE COUNT - HIGHER ORDER ; -5 LOAD ADDRESS - LOWER ORDER ; -6 LOAD ADDRESS - HIGHER ORDER ; DATA ; CHKSUM ; THE BYTE COUNT COUNTS FRAME-1 THROUGH ALL DATA ; IF THE BYTE COUNT IS EQUAL TO 6 THE LOAD ADDRESS IS THE START ADDRESS ; UNLESS ODD. ; IF THE BYTE COUNT IS > 6, DATA WILL BE LOADED INTO MEMORY ; WHEN CHKSUM IS ADDED TO SUM OF PREVIOUS FRAMES RESULT IS 0 ;PDP11 ADDRESSING MODES ; 0 Rn REGISTER ; 1 @Rn REGISTER DEFERRED ; 2 (Rn)+ AUTO-INCREMENT ; 3 @(Rn)+ AUTO-INCREMENT DEFERRED ; 4 -(Rn) AUTO-DECREMENT ; 5 @-(Rn) AUTO-DECREMENT DEFERRED ; 6 X(Rn) INDEX ; 7 @X(Rn) INDEX DEFERRED ; 27 #X IMMEDIATE ; 37 @#X ABSOLUTE ; 67 X RELATIVE ; 77 @X RELATIVE DEFERRED ;MACRO TO DEFINE SYMBOLS FOR INSTRUCTIONS ; 1ST ARGUMENT IS VALUE OF INSTRUCTION ; 2ND ARG IS MASK FOR VALUE ; 3RD ARG IS MNEMONIC ; 4TH ARG IS FLAG BITS ; 5TH ARG IS SIMULATION DEFINE INSTRU < XLIST X 000000,007000,AND, X 000000,177777,HALT, X 000000,177777,R0, X 000001,177777,R1, X 000001,177777,WAIT, X 000002,177777,R2, X 000002,177777,RTI, X 000003,177777,BPT, X 000003,177777,R3, X 000004,177777,IOT, X 000004,177777,R4, X 000005,177777,R5, X 000005,177777,RESET, X 000006,177777,RTT, X 000006,177777,SP, X 000007,177777,PC, X 000100,177700,JMP, X 000200,177770,RTS, X 000230,177770,SPL, X 000240,177777,NOP, X 000241,177777,CLC, X 000242,177777,CLV, X 000244,177777,CLZ, X 000250,177777,CLN, X 000257,177777,CCC, X 000261,177777,SEC, X 000262,177777,SEV, X 000264,177777,SEZ, X 000270,177777,SEN, X 000277,177777,SCC, X 000300,177700,SWAB, X 000400,177400,BR, X 001000,177400,BNE, X 001000,007000,TAD, X 001400,177400,BEQ, X 002000,177400,BGE, X 002000,007000,ISZ, X 002400,177400,BLT, X 003000,177400,BGT, X 003000,007000,DCA, X 003400,177400,BLE, X 004000,177000,JSR, X 004000,007000,JMS, X 005000,177700,CLR, X 005000,007000,JMP, X 005100,177700,COM, X 005200,177700,INC, X 005300,177700,DEC, X 005400,177700,NEG, X 005500,177700,ADC, X 005600,177700,SBC, X 005700,177700,TST, X 006000,177700,ROR, X 006000,007000,IOT, X 006100,177700,ROL, X 006200,177700,ASR, X 006300,177700,ASL, X 006400,177700,MARK, X 006700,177700,SXT, X 007000,007777,NOP, X 007001,007401,IAC, X 007002,007416,BSW, X 007004,007406,RAL, X 007006,007406,RTL, X 007010,007412,RAR, X 007012,007412,RTR, X 007020,007420,CML, X 007040,007440,CMA, X 007100,007500,CLL, X 007200,007600,CLA, X 007400,007777,NOP, X 007401,007777,NOP, X 007402,007403,HLT, X 007404,007405,OSR, X 007410,007571,SKP, X 007420,007431,SNL, X 007421,007521,MQL, X 007430,007431,SZL, X 007440,007451,SZA, X 007450,007451,SNA, X 007500,007511,SMA, X 007501,007521,MQA, X 007510,007511,SPA, X 007521,007521,SWP, X 007600,007601,CLA, X 007601,007601,CLA, X 010000,170000,MOV, X 020000,170000,CMP, X 030000,170000,BIT, X 040000,170000,BIC, X 050000,170000,BIS, X 060000,170000,ADD, X 070000,177000,MUL, X 071000,177000,DIV, X 072000,177000,ASH, X 073000,177000,ASHC, X 074000,177000,XOR, X 075000,177770,FADD, X 075010,177770,FSUB, X 075020,177770,FMUL, X 075030,177770,FDIV, X 077000,177000,SOB, X 100000,177400,BPL, X 100400,177400,BMI, X 101000,177400,BHI, X 101400,177400,BLOS, X 102000,177400,BVC, X 102400,177400,BVS, X 103000,177400,BCC, X 103000,177400,BHIS, X 103400,177400,BCS, X 103400,177400,BLO, X 104000,177400,EMT, X 104400,177400,TRAP, X 105000,177700,CLRB, X 105100,177700,COMB, X 105200,177700,INCB, X 105300,177700,DECB, X 105400,177700,NEGB, X 105500,177700,ADCB, X 105600,177700,SBCB, X 105700,177700,TSTB, X 106000,177700,RORB, X 106100,177700,ROLB, X 106200,177700,ASRB, X 106300,177700,ASLB, X 106400,177700,MTPS, X 106700,177700,MFPS, X 110000,170000,MOVB, X 120000,170000,CMPB, X 130000,170000,BITB, X 140000,170000,BICB, X 150000,170000,BISB, X 160000,170000,SUB, X 163000,177777,UBAMAP, X 163100,177777,UBA.SR, ;X 163200,177777,UBA.VC, X 163300,177777,UBA.MR, X 177570,177777,SW, X 177776,177777,PS, LIST > DEFINE CALL (ADDR) , IFL , .CREF LIST> DEFINE CALLXX (ADDR,%FAKE,%FAKE1) < SKIPA QX,F.DEBU JRST %FAKE TXNN QX,DB.CAL JRST %FAKE1 PUSH P,T1 PUSH P,T2 MOVE T1,[SIXBIT \ADDR\] MOVEI T2,ADDR PUSHJ P,CALLTY POP P,T2 POP P,T1 %FAKE1:!PUSHJ P,ADDR %FAKE:!> DEFINE RET (OPT,LABEL) , IFL ,,< IFIDN ,< AOS (P) POPJ P, > IFIDN ,> IFB ,> .CREF LIST> DEFINE RETXX (OPT,LABEL,%FAKE,%FAKE1) < IFNB