X-Git-Url: http://git.sky-visions.com/cgi-bin/gitweb.cgi/retro-software/dec/tops10/v4.5.git/blobdiff_plain/d693caac75dd25e668e43e85c29205bfc8dea06e..5d24e9e035e495646b261b56872a3e31c2ed244c:/src/eddt.mac diff --git a/src/eddt.mac b/src/eddt.mac index f8973aa..78e2109 100644 --- a/src/eddt.mac +++ b/src/eddt.mac @@ -13,7 +13,7 @@ DDT ASSEMBLY INSTRUCTIONS THE SOURCE OF DDT,13 WILL ASSEMBLE INTO SEVERAL DIFFERENT VERSIONS; THE ASSEMBY IS CONTROLED BY THE VALUE ASSIGNED -TO THE SYMBOL "EDDT". THE SYMBOL "EDDT" IS DECODED AS FOLLOWSR: +TO THE SYMBOL "EDDT". THE SYMBOL "EDDT" IS DECODED AS FOLLOWS: BIT 35 =0: ASSEMBLE USER MODE DDT =1: ASSEMBLE AN EXECUTIVE MODE DDT @@ -58,6 +58,7 @@ EXAMPLES OF "EDDT" DEFINTIONS: + EXAMPLE OF A MACRO ASSEMBLY COMMAND: .^C @@ -69,7 +70,6 @@ EDDT=0 ^Z END OF PASS 1 ;THIS LINE TYPED BY MACRO - ^Z NO ERRORS DETECTED ;TYPED BY MACRO @@ -180,12 +180,12 @@ PID=0 ;=0 IF SYMBOL TABLE POINTER IS IN JOBSYM ITF=2 ;INSTRUCTION TYPED IF ITF=1 OUTF=4 ;OUTPUT IF OUTF=1 -CF1=400 ;OUTPUT 1 REGISTER AS CONSTANT +CF1=400 ;OUTPUT 1 REGISTER AS CONSTANT LF1=2000 ;OUTPUT 1 REGISTER AS FORCED SYMBOLIC OR CONSTANT Q2F=1 ;NUMBER TYPED AFTER ALT MODE -R20F=10 ;TEMP FLAG USED IN SETUP +R20F=10 ;TEMP FLAG USED IN SETUP SBF=20 -NAF=200 ;NEGATIVE ADDRESSES PERMISSABLE +NAF=200 ;NEGATIVE ADDRESSES PERMISSABLE POWF=4000 ;ARGUMENT FOR EXPONENT COMING ;DEFINE SYMBOL TABLE SYMBOL TYPES @@ -204,6 +204,7 @@ DDT: INTERN DDTEND ;DECLARE END OF DDT AS INTERNAL, FOR DDTX=DDT ENTRY DDTX ;NEEDED BY MONITOR> + ;DEFINE $ SYMBOLS INTERNAL TO DDT OPDEF DDTINT [Z 0,] ;ADDRESS FLAG FOR INTERNAL REGISTERS @@ -219,7 +220,6 @@ XP $M,MSK XP $I,SAVPI SETUWP=36 - ;DEFINE I/O DEVICE MNEMONICS IFN EDDT&1,< @@ -239,7 +239,6 @@ XP UTC,210B11 XP UTS,214B11 XP DCSA,300B11 XP DCSB,304B11 - XP DF,270B11 XP MTC,220B11 XP MTS,224B11 @@ -257,6 +256,7 @@ XP JOV,2554B11 XP JEN,2545B11 XP HALT,2542B11 + IFE EDDT&10,< DDT: JSR SAVE PUSHJ P,REMOVB @@ -277,6 +277,7 @@ DDT: JSR SAVE SKIPL PRGM ;IF PRGM .GE. 0, THEN RE-INIT DDT0: MOVEM W,PRGM ;PRGM=C(JOBSYM) > + IFN EDDT&10,< DDT: CALLI MOVEI T,SYMSET @@ -296,7 +297,6 @@ DDT: CALLI SETOM CRASHS ;FLAG CRASH.SAV EXISTS ON DSK USETI 1,1 INPUT 1,RSILST - STATZ 1,740000 HALT .-3 SETOM RSAVE ;FORCE READING OF "CURRENT" BLOCK @@ -331,7 +331,7 @@ HOW TO COPY MONITOR SYMBOL TABLE INTO FILDDT 6) AFTER CARRIAGE RETURN IS TYPED FILDDT IS DONE. 7) SAVE FILDDT WITH A NEW NAME SO AS NOT TO CONFUSE IT WITH THE ORIGINAL FILDDT.SAV - + THE MONITOR CAN BE LOADED IN ANY OF THREE WAYS(IN ORDER OF PREFERENCE): 1. UNDER TIME SHARING WITH REGULAR LOADER AND COMMON 2. UNDER REGULAR 10/30 MONITOR WITH REGULAR 10/30 LOADER & COMMON @@ -388,9 +388,7 @@ TCOPY: PUSHJ P,FETCH ;GET A WORD JRST NOLPT ;GO TRY IT DDTSTP: Z ;SAVE POSSIBLE SYMBOL POINTER > - - -DD1: PUSHJ P,CRF + DD1: PUSHJ P,CRF DD1.5: TLZ F,ROF ;CLOSE ANY OPEN REGISTER MOVE T,[XWD SCHM,SCH] BLT T,ODF ;LOAD ACS @@ -433,6 +431,7 @@ L21: MOVE R,T LDB W,BDISP(R+1) ;GET 12 BIT ADDRESS FROM DISPATCH TABLE CAIGE W,MULT-DDT ;FIRST EVAL ROUTINE JRST DDT(W) + MOVE T,SYL TLZN F,LTF JRST POWER @@ -515,7 +514,6 @@ UND1: MOVE R,ESTUT ;UNDEFINED SYM ASSEMBLER MOVE T,SYM TLO T,GLOBAL MOVEM T,(R) - HRRZ T,LLOCO TLNE F,MF TLO T,400000 @@ -595,7 +593,6 @@ NM1A1: TRZE W2,1 SOJG W1,NM1A1 NM1B: MOVSI W1,211000(T) FMPR R,W1 ;COMPUTE VALUE OF NEW DIGIT - FADRB R,FH ;ADD VALUE INTO FLOATING NO. MOVEM R,SYL AOJA T,LE1A @@ -673,7 +670,6 @@ EVAL3: MOVE T,(R) TLNN T,340000 JRST EVAL1 MOVE T,1(R) - CPOPJ1: AOS (P) ;FOUND SYMBOL, SKIP CPOPJ: POPJ P, @@ -707,8 +703,15 @@ TEXI3: LSHC T-1,-43 SIXBI1: PUSHJ P,TEXIN ; INPUT TEXT (SIXBIT) SIXBIN: CAMN T,SYL JRST SIXBI2 - ANDI T,77 - TRC T,40 + CAIL T,"A"+40 ;IS CHAR BETWEEN LOWER CASE "A" AND + CAILE T,"Z"+40 ; LOWER CASE "Z"? + SKIPA ;NO + TRC T,40 ;YES, CONVERT TO UPPER CASE + CAIL T," " ;IS CHAR IN SIXBIT SET? + CAILE T,"_" + JRST ERR ;NO + ANDI T,77 ;YES, MASK TO 6 BITS + TRC T,40 ;CONVERT TO SIXBIT FORM ROT T,-6 LSHC T-1,6 SOJA W1,SIXBI1 @@ -761,7 +764,6 @@ DEF1: MOVN R,[XWD 2,2] HRL T,ESTU HRRM T,ESTU SKIPGE ESTU - BLT T,-1(R) DEF2: MOVE T,DEFV MOVEM T,1(R) ;PUT IN NEW VALUE @@ -784,6 +786,7 @@ DEF3: JUMPGE R,RET ;PATCH IN VALUE FOR UNDEF SYM ENTRY ADD S,T HRRM S,T PUSHJ P,DEP + JFCL POP P,R PUSHJ P,REMUN DEF4: ADD R,[XWD 2,2] ;REMOVE THE NOW DEFINED SYMBOL @@ -836,7 +839,6 @@ ACCCF: MOVSI T,.-. ;LEFT HALF OF A,,B ADD T,R ADDB T,WRD JRST SPACE+1 - ACCF1: MOVEM T,WRD ;SET LEFT HALF OF A,,B JRST SPACE+1 @@ -856,7 +858,6 @@ RPRN: TLNN F,QF ;) POP P,F TLNE F,PTF TLNE F,SF - JRST RPRN1 MOVEM T,SYL TLO F,QF+SF @@ -909,7 +910,9 @@ CARR: PUSHJ P,DEPRA ;CLOSE REGISTER CAIN T,15 JRST .-2 JRST DD1.5> - OCON: TROA F,LF1+CF1 ;OPEN AS CONSTANT + + +OCON: TROA F,LF1+CF1 ;OPEN AS CONSTANT OSYM: TRZ F,CF1 ;OPEN SYMBOLICALLY TROA F,LF1 SUPTYO: TLOA F,STF ;SUPPRESS TYPEOUT @@ -1081,7 +1084,6 @@ LEAV1: XWD 0,LEAV HRRZ T,@BCOM3 HRRM T,PROC0 ;SETUP ADDRESS OF BREAK HLRZ T,@BCOM3 - JUMPE T,BREAK1 ;TEST FOR REGISTER TO EXAMINE PUSHJ P,LCT ;PRINT TAB HLRZ T,@BCOM3 @@ -1210,7 +1212,6 @@ REMOV1: MOVE T,B1INS-B1ADR(S) JRST REMOV1 IFN EDDT&1, IFE EDDT&1, - ;IN EXEC MODE, SAVE UP TTY STATUS ;IN USER MODE, DONE BY SAVE ;ALL $B COMMANDS GET HERE IN FORM: $B @@ -1279,7 +1280,6 @@ DEPRS: MOVEM T,LWT ;DEPOSIT REGISTER AND SAVE AS LWT IFE EDDT&10,< DEP: IFE EDDT&1,< JSP TT1,CHKADR ;LEGAL ADDRESS? - JRST DEP4 ;YES BUT IN HI SEGMENT> TRNN R,777760 JRST DEPAC ;DEPOSIT IN AC @@ -1340,6 +1340,7 @@ MONPEK: HRRZ T,4 ;REMOVE COUNT CALLI T,33 ;DO PEEK UUO JRST CPOPJ1 ;RETURN VALUE IN AC T > + IFE EDDT&1,< ;DO ADDRESS CHECKS ONLY IN USER MODE CHKADR: HRRZ TT,JOBREL ;GET HIGHEST ADDRESS IN LOW SEGMENT CAIL TT,(R) ;CHECK FOR WITHIN LOW SEGMENT @@ -1349,6 +1350,7 @@ CHKADR: HRRZ TT,JOBREL ;GET HIGHEST ADDRESS IN LOW SEGMENT CAIGE TT,(R) ;IS THE ADR TO BIG FOR HIGH SEGMENT? POPJ P, ;NO, YES- ILL. ADR. JRST 0(TT1) + > ;END OF IFE EDDT&1 IFN EDDT&1, ;NO ADDRESS CHECKS IN EXEC MODE @@ -1371,7 +1373,6 @@ LOOK: SKIPL R,PRGM ;LOOK UP SYMBOL MOVEM T,TEM LOOK1: TDNE W2,(R) - JRST LOOK3 MOVE T,(R) TLNN T,PNAME ;NAME @@ -1467,7 +1468,6 @@ PAD: ANDI T,-1 JRST @AR ;PADSO OR PAD1 PADSO: JUMPE T,FP7B ;PRINT A ZERO PUSHJ P,LOOK - PADS1: POPJ P,0 MOVE W2,1(W1) CAIGE T,100 @@ -1488,8 +1488,7 @@ PADS3A: TRNE F,NAF PADS3B: MOVNM T,TEM MOVEI T,"-" JRST PADS1A - -INOUT: TDC T,[XWD -1,400000] ;IO INSTRUCTION OR NEG NUM + INOUT: TDC T,[XWD -1,400000] ;IO INSTRUCTION OR NEG NUM TDCN T,[XWD -1,400000] JRST PADS3B ;TYPE AS NEG NUM LDB R,[POINT 7,T,9] ;PICK OUT IO DEVICE BITS @@ -1535,7 +1534,6 @@ NWORD: ADDI R,326000+40*T ;JUMPN T, SEAR1: PUSHJ P,FETCH JRST SEAR2A TLNE F,LTF ;CHECK FOR EFFECTIVE ADDRESS SEARCH - JRST EFFEC0 EQV T,WRD AND T,MSK @@ -1600,7 +1598,6 @@ IFN EDDT&1, ZERO: TLNN F,CCF JRST ERR PUSHJ P,SETUP - HRRZ S,@SYMP ;GET 1ST ADR OF SYMBOL TABLE HLRE W1,@SYMP ;GET LENGTH OF SYM TABLE SUB W1,S ;GET NEG OF LAST ADR @@ -1633,17 +1630,20 @@ TOC: HRRZ W1,ODF JRST TOCA ;YES, DO NOTHING SPECIAL HRRM T,TOCS ;NO, TYPE AS HALF WORD CONSTANT HLRZS T ;GET LEFT HALF - PUSHJ P,TOCA ;TYPE LEFT HALF + PUSHJ P,TOC0 ;type left half MOVSI W1,(ASCII /,,/) PUSHJ P,TEXT2 ;TYPE ,, TOCS: MOVEI T,.-. ;GET RIGHT HALF BACK -TOCA: LSHC T,-43 +TOCA: HRRZ W1,ODF ;IS OUTPUT RADIX DECIMAL? + CAIN W1,12 + JRST TOC4 ;YES,TYPE SIGNED WITH PERIOD +TOC0: LSHC T,-43 LSH W1,-1 ;W1=T+1 -TOC1: DIVI T,@ODF + DIVI T,@ODF HRLM W1,0(P) - JUMPE T,TOC2 - PUSHJ P,TOCA -TOC2: HLRZ T,0(P) + SKIPE T + PUSHJ P,TOC0 + HLRZ T,0(P) ADDI T,"0" JRST TOUT @@ -1702,7 +1702,6 @@ FP1A: MOVEI C,0 FP3: MULI A,400 ASHC B,-243(A) - MOVE A,B SETZM TEM1 ;INIT 8 DIGIT COUNTER SKIPE A,B ;DON'T TYPE A LEADING 0 PUSHJ P,FP7 ;PRINT INTEGER PART OF 8 DIGITS @@ -1959,6 +1958,9 @@ LOADE: XWD LOADB-.,LOADB > ;END OF IFN EDDT$1&B36 ;FOR PAPER TAPE IO + + + SAVE: 0 ;SAVE THE ACS AND PI SYSTEM SKIPN SARS JRST SAV1 @@ -1978,7 +1980,6 @@ SAV5: ; CALLIU T,SETUWP ;REQUEST TO CLEAR UWP ; HRROS SAVUWP ;FAILED, UWP (BIT 0) STILL 1 ; SKIPN SARS ;USER'S SATE SAVED ALREADY? - ; HRRM T,SAVUWP> ;NO, SAVE STATE OF UWP SETOM,SARS ;FLAG PROTECTING SAVED REGISTERS @@ -2081,7 +2082,6 @@ TEXIN: PUSHJ P,TIN ;INPUT SUBROUTINE FOR TEXT MODES IFE EDDT&1,< ;USER MODE TELETYPE I/O IFN EDDT&4,< ;ASSEMBLE WITH OLD DDT MODE IO - TIN: MOVE T,POUTBF ;GET NEXT CHARACTER ROUTINE CAME T,[POINT 7,INBFF] PUSHJ P,FINOUT @@ -2132,7 +2132,9 @@ TTYRET: MOVE T,[POINT 7,INBFF] TEXIN=TIN ;USE NORMAL INPUT FOR TEXT WHEN IN USER MODE > - IFE EDDT&4,< ;ASSEMBLE WITH TTCALL TELETYPE IO + + + IFE EDDT&4,< ;ASSEMBLE WITH TTCALL TELETYPE IO OPDEF TTCALL [51B8] @@ -2149,7 +2151,6 @@ IFN EDDT&10,< PUSHJ P,INCHR > JRST WRONG ;TYPE XXX FOR A RUBOUT POPJ P, - TOUT: IFN EDDT&10,< SKIPE COMAND ;IS THERE A COMMAND FILE? @@ -2207,6 +2208,7 @@ PUTOK: > ;END OF IFN EDDT&10 > ;END OF IFE EDDT&1 + BDISP: POINT 12,DISP(R),11 POINT 12,DISP(R),23 POINT 12,DISP(R),35 @@ -2226,7 +2228,6 @@ D ERR,CARR,ERR D ERR,ERR,ERR D PUNCH,ERR,ERR D ERR,ERR,ERR - D ERR,ERR,ERR D CONTROL,ERR,ERR D ERR,ERR,SPACE @@ -2254,7 +2255,8 @@ D OSYM,VARRW,PSYM ;THIS TABLE DOES NOT HAVE ENTRIES FOR CHARS .GE. 140; THESE ; ARE DETECTED AS ERRORS NEAR L21: - BITO: MOVEI R,BITT ;BYTE OUTPUT SUBROUTINE + +BITO: MOVEI R,BITT ;BYTE OUTPUT SUBROUTINE HRRZI AR,TOC TRZN F,Q2F JRST ERR @@ -2385,7 +2387,7 @@ SVBT2: 0 ; ; THE TABLE IS ALSO USED GOING FROM SYMBOLIC TO BINARY BUT A ; TREE SEARCH METHOD IS USED. - REPEAT 0,< + REPEAT 0,< DEFINE REDEF (XX)< DEFINE INFO (AA,BB)< @@ -2506,8 +2508,6 @@ BYT9 REPEAT BINC, IFN BINRY, > ;END OF REPEAT 0 - - IFN EDDT&10,< ;FILDDT STUFF CRASH: SIXBIT .CRASH. ;CANONICAL NAME FOR CRASH SIXBIT .SAV. @@ -2534,7 +2534,6 @@ RSAVE: IOWD 1000,RSIDT ;INDEX OF THE CUFRRENT BLOCK, 0,1,... CURLST: IOWD 4000,CURENT Z > - SUBTTL OP DECODER DEFINE BYT9 (A) - END + END