Trailing-Edge
-
PDP-10 Archives
-
bb-bt99g-bb
-
pfh.c08
There is 1 other file named pfh.c08 in the archive. Click here to see a list.
REP 29/1 ;08C1
PFHEDT==47 ;EDIT LEVEL
WIT
PFHEDT==53 ;EDIT LEVEL
INS 204/1 ;08C2
;50 Allow indexed or indirected IN/OUT uuo.
;
;51 Keep DATEND pointing into page 776. If it overflows a little, it
; doesn't matter since first few words of 777 aren't used.
;
;52 Fix up GETWRD some more, allow for the uuo itself to be in AC 1.
; Don't use EA as an indirect, use only as a pointer. If the word
; pointed to by EA is desired, it is available in AT.EA, filled in
; by GETWRD.
;
;53 Yet another fix to edit 45. Put checks around TSTDM7 to ensure we
; don't make multi-page check on last page. Courtesy of Peter Bray.
REP 11/9 ;08C3
MOVEM 1,EA ;SAVE EFFECTIVE ADR OF THE UUO
HLLZ 2,@EA ;GET THE UUO
LDB 1,[POINT 9,2,8];JUST OP CODE
CAIN 1,256 ;XCT INSTRUCTION?
JRST [MOVE 1,@EA ;RESOLVE WITH INDIRECT AND INDEX FOR GETWRD
WIT
DMOVEM 1,EA ;SAVE EFFECTIVE ADR OF THE UUO, AND CONTENTS
HLLZS 2 ;GET THE UUO
LDB 1,[POINT 9,2,8];JUST OP CODE
CAIN 1,256 ;XCT INSTRUCTION?
JRST [MOVE 1,AT.EA ;RESOLVE WITH INDIRECT AND INDEX FOR GETWRD
REP 34/9 ;08C4
MOVE 1,@EA ;RESOLVE THE ADDR
WIT
MOVE 1,AT.EA ;RESOLVE THE ADDR
INS 12/10 ;08C5
HLRO 3,1 ;GET IOWD LENGTH
ADDI 3,(2) ;ADD NUMBER OF WORDS LEFT IN PAGE
JUMPG 3,TSTDM8 ;IF IOWD FITS IN PAGE, BYPASS MULTIPAGE TEST
REP 15/10 ;08C6
JRST [ ADDI 1,1000 ;STEP TO NEXT PAGE AGAIN
MOVEI 2,1000 ;SIZE WE JUST STEPPED
ADDM 2,DMPTMP+1 ;BUMP WORDCOUNT AMOUNT WE BUMPED
JRST TSTDM7] ;AND LOOP
DMOVE 1,DMPTMP ;GET BACK IOWD AND WORDCOUNT
WIT
SKIPA
JRST TSTD7A ;INACCESSIBLE, GIVE UP
ADDI 1,1000 ;STEP TO NEXT PAGE AGAIN
MOVEI 2,1000 ;SIZE WE JUST STEPPED
ADDM 2,DMPTMP+1 ;BUMP WORDCOUNT AMOUNT WE BUMPED
HLRE 2,DMPTMP ;GET IOWD COUNT
MOVNS 2 ;MAKE POSITIVE COUNT
CAML 2,DMPTMP+1 ;DID WE BUMP BY MORE THAN IOWD HAS LEFT TO DO?
JRST TSTDM7 ;NOPE, KEEP BUMPING.
TSTD7A: DMOVE 1,DMPTMP ;GET BACK IOWD AND WORDCOUNT
REP 39/10 ;08C7
HLL 3,@EA ;GET ORIGINAL UUO
WIT
HLL 3,AT.EA ;GET ORIGINAL UUO
INS 26/11 ;08C8
DEL 10/12 ;08C9
REPEAT 0, < ;[6]REWORK ENTIRE GETWRD ROUTINE
GETWRD: 0
JUMPE 1,@.-1 ;IF AC 1 THROUGH 4,
CAIG 1,4
ADDI 1,SAVE1-1 ;USE SAVED LOCATION
JRST @GETWRD
>
REP 23/12 ;08C10
MOVEI 1,@COMADR ;LET MACHINE DO ADDR COMPUTATION
WIT
MOVE 1,@COMADR ;GET WORD POINTED TO
MOVEM 1,DMPTMP ;SAVE FOR LATER REFERENCE
MOVE 1,SAVE1 ;GET BACK ORIGINAL AC
MOVEI 1,@COMADR ;LET MACHINE DO ADDR COMPUTATION
MOVE 2,DMPTMP ;GET BACK CONTENTS OF WORD
REP 4/14 ;08C11
DATLEN: 767
DATEND: DATA+767
WIT
DATLEN: 777-VSIZ-1
DATEND: DATA+777-VSIZ-1
REP 111/15 ;08C12
EA: BLOCK 1
WIT
EA: BLOCK 1 ;FOLLOWING WORD MUST BE ADJACENT!!
AT.EA: BLOCK 1 ;WORD POINTED TO BY EA
SUM 131629