\r
THE SOURCE OF DDT,13 WILL ASSEMBLE INTO SEVERAL DIFFERENT\r
VERSIONS; THE ASSEMBY IS CONTROLED BY THE VALUE ASSIGNED\r
-TO THE SYMBOL "EDDT". THE SYMBOL "EDDT" IS DECODED AS FOLLOWSR:\r
+TO THE SYMBOL "EDDT". THE SYMBOL "EDDT" IS DECODED AS FOLLOWS:\r
\r
BIT 35 =0: ASSEMBLE USER MODE DDT\r
=1: ASSEMBLE AN EXECUTIVE MODE DDT\r
\r
\r
\r
+\r
EXAMPLE OF A MACRO ASSEMBLY COMMAND:\r
\r
.^C\r
^Z\r
\r
END OF PASS 1 ;THIS LINE TYPED BY MACRO\r
-\r
^Z\r
\r
NO ERRORS DETECTED ;TYPED BY MACRO\r
\r
ITF=2 ;INSTRUCTION TYPED IF ITF=1\r
OUTF=4 ;OUTPUT IF OUTF=1\r
-CF1=400 ;OUTPUT 1 REGISTER AS CONSTANT\r
+CF1=400 ;OUTPUT 1 REGISTER AS CONSTANT\r
LF1=2000 ;OUTPUT 1 REGISTER AS FORCED SYMBOLIC OR CONSTANT\r
Q2F=1 ;NUMBER TYPED AFTER ALT MODE \r
-R20F=10 ;TEMP FLAG USED IN SETUP\r
+R20F=10 ;TEMP FLAG USED IN SETUP\r
SBF=20\r
-NAF=200 ;NEGATIVE ADDRESSES PERMISSABLE\r
+NAF=200 ;NEGATIVE ADDRESSES PERMISSABLE\r
POWF=4000 ;ARGUMENT FOR EXPONENT COMING\r
\r
;DEFINE SYMBOL TABLE SYMBOL TYPES\r
DDTX=DDT\r
ENTRY DDTX ;NEEDED BY MONITOR>\r
\r
+\r
;DEFINE $ SYMBOLS INTERNAL TO DDT\r
OPDEF DDTINT [Z 0,] ;ADDRESS FLAG FOR INTERNAL REGISTERS\r
\r
XP $I,SAVPI\r
\r
SETUWP=36\r
-\r
\f;DEFINE I/O DEVICE MNEMONICS\r
\r
IFN EDDT&1,<\r
XP UTS,214B11\r
XP DCSA,300B11\r
XP DCSB,304B11\r
-\r
XP DF,270B11\r
XP MTC,220B11\r
XP MTS,224B11\r
XP JEN,2545B11\r
XP HALT,2542B11\r
\r
+\r
\fIFE EDDT&10,<\r
DDT: JSR SAVE\r
PUSHJ P,REMOVB\r
SKIPL PRGM ;IF PRGM .GE. 0, THEN RE-INIT\r
DDT0: MOVEM W,PRGM ;PRGM=C(JOBSYM)\r
>\r
+\r
\fIFN EDDT&10,<\r
DDT: CALLI\r
MOVEI T,SYMSET\r
SETOM CRASHS ;FLAG CRASH.SAV EXISTS ON DSK\r
USETI 1,1\r
INPUT 1,RSILST\r
-\r
STATZ 1,740000\r
HALT .-3\r
SETOM RSAVE ;FORCE READING OF "CURRENT" BLOCK\r
6) AFTER CARRIAGE RETURN IS TYPED FILDDT IS DONE.\r
7) SAVE FILDDT WITH A NEW NAME SO AS NOT TO CONFUSE IT WITH THE\r
ORIGINAL FILDDT.SAV\r
-\f\r
+\r
THE MONITOR CAN BE LOADED IN ANY OF THREE WAYS(IN ORDER OF PREFERENCE):\r
1. UNDER TIME SHARING WITH REGULAR LOADER AND COMMON\r
2. UNDER REGULAR 10/30 MONITOR WITH REGULAR 10/30 LOADER & COMMON\r
JRST NOLPT ;GO TRY IT\r
DDTSTP: Z ;SAVE POSSIBLE SYMBOL POINTER\r
>\r
-\f\r
-\r
-DD1: PUSHJ P,CRF\r
+\fDD1: PUSHJ P,CRF\r
DD1.5: TLZ F,ROF ;CLOSE ANY OPEN REGISTER\r
MOVE T,[XWD SCHM,SCH]\r
BLT T,ODF ;LOAD ACS\r
LDB W,BDISP(R+1) ;GET 12 BIT ADDRESS FROM DISPATCH TABLE\r
CAIGE W,MULT-DDT ;FIRST EVAL ROUTINE\r
JRST DDT(W)\r
+\r
\f MOVE T,SYL\r
TLZN F,LTF\r
JRST POWER\r
MOVE T,SYM\r
TLO T,GLOBAL\r
MOVEM T,(R)\r
-\r
HRRZ T,LLOCO\r
TLNE F,MF\r
TLO T,400000\r
SOJG W1,NM1A1\r
NM1B: MOVSI W1,211000(T)\r
FMPR R,W1 ;COMPUTE VALUE OF NEW DIGIT\r
-\r
FADRB R,FH ;ADD VALUE INTO FLOATING NO.\r
MOVEM R,SYL\r
AOJA T,LE1A\r
TLNN T,340000\r
JRST EVAL1\r
MOVE T,1(R)\r
-\r
CPOPJ1: AOS (P) ;FOUND SYMBOL, SKIP\r
CPOPJ: POPJ P,\r
\r
\fSIXBI1: PUSHJ P,TEXIN ; INPUT TEXT (SIXBIT)\r
SIXBIN: CAMN T,SYL\r
JRST SIXBI2\r
- ANDI T,77\r
- TRC T,40\r
+ CAIL T,"A"+40 ;IS CHAR BETWEEN LOWER CASE "A" AND\r
+ CAILE T,"Z"+40 ; LOWER CASE "Z"?\r
+ SKIPA ;NO\r
+ TRC T,40 ;YES, CONVERT TO UPPER CASE\r
+ CAIL T," " ;IS CHAR IN SIXBIT SET?\r
+ CAILE T,"_"\r
+ JRST ERR ;NO\r
+ ANDI T,77 ;YES, MASK TO 6 BITS\r
+ TRC T,40 ;CONVERT TO SIXBIT FORM\r
ROT T,-6\r
LSHC T-1,6\r
SOJA W1,SIXBI1\r
HRL T,ESTU\r
HRRM T,ESTU\r
SKIPGE ESTU\r
-\r
BLT T,-1(R)\r
DEF2: MOVE T,DEFV\r
MOVEM T,1(R) ;PUT IN NEW VALUE\r
ADD S,T\r
HRRM S,T\r
PUSHJ P,DEP\r
+ JFCL\r
POP P,R\r
PUSHJ P,REMUN\r
DEF4: ADD R,[XWD 2,2] ;REMOVE THE NOW DEFINED SYMBOL\r
ADD T,R\r
ADDB T,WRD\r
JRST SPACE+1\r
-\r
\fACCF1: MOVEM T,WRD ;SET LEFT HALF OF A,,B\r
JRST SPACE+1\r
\r
POP P,F\r
TLNE F,PTF\r
TLNE F,SF\r
-\r
JRST RPRN1\r
MOVEM T,SYL\r
TLO F,QF+SF\r
CAIN T,15\r
JRST .-2\r
JRST DD1.5>\r
-\fOCON: TROA F,LF1+CF1 ;OPEN AS CONSTANT\r
+\r
+\f\r
+OCON: TROA F,LF1+CF1 ;OPEN AS CONSTANT\r
OSYM: TRZ F,CF1 ;OPEN SYMBOLICALLY\r
TROA F,LF1\r
SUPTYO: TLOA F,STF ;SUPPRESS TYPEOUT\r
HRRZ T,@BCOM3\r
HRRM T,PROC0 ;SETUP ADDRESS OF BREAK\r
HLRZ T,@BCOM3\r
-\r
JUMPE T,BREAK1 ;TEST FOR REGISTER TO EXAMINE\r
PUSHJ P,LCT ;PRINT TAB\r
HLRZ T,@BCOM3\r
JRST REMOV1\r
IFN EDDT&1,<JRST TTYRET>\r
IFE EDDT&1,<POPJ P,>\r
-\r
;IN EXEC MODE, SAVE UP TTY STATUS ;IN USER MODE, DONE BY SAVE\r
\f;ALL $B COMMANDS GET HERE IN FORM: <A>$<N>B\r
\r
IFE EDDT&10,<\r
DEP: IFE EDDT&1,<\r
JSP TT1,CHKADR ;LEGAL ADDRESS?\r
-\r
JRST DEP4 ;YES BUT IN HI SEGMENT>\r
TRNN R,777760\r
JRST DEPAC ;DEPOSIT IN AC\r
CALLI T,33 ;DO PEEK UUO\r
JRST CPOPJ1 ;RETURN VALUE IN AC T\r
>\r
+\r
IFE EDDT&1,< ;DO ADDRESS CHECKS ONLY IN USER MODE\r
CHKADR: HRRZ TT,JOBREL ;GET HIGHEST ADDRESS IN LOW SEGMENT\r
CAIL TT,(R) ;CHECK FOR WITHIN LOW SEGMENT\r
CAIGE TT,(R) ;IS THE ADR TO BIG FOR HIGH SEGMENT?\r
POPJ P, ;NO, YES- ILL. ADR.\r
JRST 0(TT1)\r
+\r
> ;END OF IFE EDDT&1\r
\r
IFN EDDT&1,<CHKADR==CPOPJ> ;NO ADDRESS CHECKS IN EXEC MODE\r
MOVEM T,TEM\r
\r
LOOK1: TDNE W2,(R)\r
-\r
JRST LOOK3\r
MOVE T,(R)\r
TLNN T,PNAME ;NAME\r
JRST @AR ;PADSO OR PAD1\r
PADSO: JUMPE T,FP7B ;PRINT A ZERO\r
PUSHJ P,LOOK\r
-\r
PADS1: POPJ P,0\r
MOVE W2,1(W1)\r
CAIGE T,100\r
PADS3B: MOVNM T,TEM\r
MOVEI T,"-"\r
JRST PADS1A\r
-\r
-INOUT: TDC T,[XWD -1,400000] ;IO INSTRUCTION OR NEG NUM\r
+\fINOUT: TDC T,[XWD -1,400000] ;IO INSTRUCTION OR NEG NUM\r
TDCN T,[XWD -1,400000]\r
JRST PADS3B ;TYPE AS NEG NUM\r
LDB R,[POINT 7,T,9] ;PICK OUT IO DEVICE BITS\r
SEAR1: PUSHJ P,FETCH\r
JRST SEAR2A\r
TLNE F,LTF ;CHECK FOR EFFECTIVE ADDRESS SEARCH\r
-\r
JRST EFFEC0\r
EQV T,WRD\r
AND T,MSK\r
ZERO: TLNN F,CCF\r
JRST ERR\r
PUSHJ P,SETUP\r
-\r
HRRZ S,@SYMP ;GET 1ST ADR OF SYMBOL TABLE\r
HLRE W1,@SYMP ;GET LENGTH OF SYM TABLE\r
SUB W1,S ;GET NEG OF LAST ADR\r
JRST TOCA ;YES, DO NOTHING SPECIAL\r
HRRM T,TOCS ;NO, TYPE AS HALF WORD CONSTANT\r
HLRZS T ;GET LEFT HALF\r
- PUSHJ P,TOCA ;TYPE LEFT HALF\r
+ PUSHJ P,TOC0 ;type left half\r
MOVSI W1,(ASCII /,,/)\r
PUSHJ P,TEXT2 ;TYPE ,,\r
TOCS: MOVEI T,.-. ;GET RIGHT HALF BACK\r
-TOCA: LSHC T,-43\r
+TOCA: HRRZ W1,ODF ;IS OUTPUT RADIX DECIMAL?\r
+ CAIN W1,12\r
+ JRST TOC4 ;YES,TYPE SIGNED WITH PERIOD\r
+TOC0: LSHC T,-43\r
LSH W1,-1 ;W1=T+1\r
-TOC1: DIVI T,@ODF\r
+ DIVI T,@ODF\r
HRLM W1,0(P)\r
- JUMPE T,TOC2\r
- PUSHJ P,TOCA\r
-TOC2: HLRZ T,0(P)\r
+ SKIPE T\r
+ PUSHJ P,TOC0\r
+ HLRZ T,0(P)\r
ADDI T,"0"\r
JRST TOUT\r
\r
\r
FP3: MULI A,400\r
ASHC B,-243(A)\r
- MOVE A,B\r
SETZM TEM1 ;INIT 8 DIGIT COUNTER\r
SKIPE A,B ;DON'T TYPE A LEADING 0\r
PUSHJ P,FP7 ;PRINT INTEGER PART OF 8 DIGITS\r
> ;END OF IFN EDDT$1&<EDDT>B36\r
;FOR PAPER TAPE IO\r
\r
+\r
+\r
+\r
\fSAVE: 0 ;SAVE THE ACS AND PI SYSTEM\r
SKIPN SARS\r
JRST SAV1\r
; CALLIU T,SETUWP ;REQUEST TO CLEAR UWP\r
; HRROS SAVUWP ;FAILED, UWP (BIT 0) STILL 1\r
; SKIPN SARS ;USER'S SATE SAVED ALREADY?\r
-\r
; HRRM T,SAVUWP> ;NO, SAVE STATE OF UWP\r
\r
SETOM,SARS ;FLAG PROTECTING SAVED REGISTERS\r
\fIFE EDDT&1,< ;USER MODE TELETYPE I/O\r
IFN EDDT&4,< ;ASSEMBLE WITH OLD DDT MODE IO\r
\r
-\r
TIN: MOVE T,POUTBF ;GET NEXT CHARACTER ROUTINE\r
CAME T,[POINT 7,INBFF]\r
PUSHJ P,FINOUT\r
\r
TEXIN=TIN ;USE NORMAL INPUT FOR TEXT WHEN IN USER MODE\r
>\r
-\f IFE EDDT&4,< ;ASSEMBLE WITH TTCALL TELETYPE IO\r
+\f\r
+\r
+ IFE EDDT&4,< ;ASSEMBLE WITH TTCALL TELETYPE IO\r
\r
OPDEF TTCALL [51B8]\r
\r
JRST WRONG ;TYPE XXX FOR A RUBOUT \r
POPJ P,\r
\r
-\r
TOUT:\r
\r
IFN EDDT&10,< SKIPE COMAND ;IS THERE A COMMAND FILE?\r
\r
> ;END OF IFN EDDT&10\r
> ;END OF IFE EDDT&1\r
+\r
\fBDISP: POINT 12,DISP(R),11\r
POINT 12,DISP(R),23\r
POINT 12,DISP(R),35\r
D ERR,ERR,ERR\r
D PUNCH,ERR,ERR\r
D ERR,ERR,ERR\r
-\r
D ERR,ERR,ERR\r
D CONTROL,ERR,ERR\r
D ERR,ERR,SPACE\r
\r
;THIS TABLE DOES NOT HAVE ENTRIES FOR CHARS .GE. 140; THESE\r
; ARE DETECTED AS ERRORS NEAR L21:\r
-\fBITO: MOVEI R,BITT ;BYTE OUTPUT SUBROUTINE\r
+\f\r
+BITO: MOVEI R,BITT ;BYTE OUTPUT SUBROUTINE\r
HRRZI AR,TOC\r
TRZN F,Q2F\r
JRST ERR\r
;\r
; THE TABLE IS ALSO USED GOING FROM SYMBOLIC TO BINARY BUT A\r
; TREE SEARCH METHOD IS USED.\r
-\f\f\f\f\fREPEAT 0,<\r
+\fREPEAT 0,<\r
\r
DEFINE REDEF (XX)<\r
DEFINE INFO (AA,BB)<\r
REPEAT BINC,<BINRY=BINRY*400+BINRY*400>\r
IFN BINRY,<EXP BINRY>\r
> ;END OF REPEAT 0\r
-\r
-\r
\fIFN EDDT&10,< ;FILDDT STUFF\r
CRASH: SIXBIT .CRASH. ;CANONICAL NAME FOR CRASH\r
SIXBIT .SAV.\r
CURLST: IOWD 4000,CURENT\r
Z\r
>\r
-\r
\fSUBTTL OP DECODER\r
\r
DEFINE BYT9 (A) <IRP A,<\r
OPTYPE: TRO F,OUTF ;TYPE AN OPCODE SYMBOLICALLY\r
LSH T,-33\r
MOVEM T,INST ;GET OPCODE INTO RIGHT 9 BITS\r
-\r
MOVE T,[XWD 440700,TXT]\r
MOVEM T,CHP ;FOR OPEVAL,SETUP POINTER TO INPUT TEXT\r
TRZ F,ITF ;CLEAR INSTRUCTION TYPED FLAG\r
;BUT STILL WANTS TO BE STARTED AT ITS OWN STARTING ADDRESS\r
;USER DDT IS LOADED LAST. - T.H.\r
IFN EDDT&10,<END DDT>\r
- END \r
+ END\r