1
0
mirror of https://github.com/PDP-10/stacken.git synced 2026-03-07 03:15:54 +00:00
Files
Lars Brinkhoff 6e18f5ebef Extract files from tape images.
Some tapes could not be extracted.
2021-01-29 10:47:33 +01:00

305 lines
8.1 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
TITLE LNKPLT - INTERFACE TO PLOTTER MODULE
SUBTTL D.M.NIXON/DMN/JLd/SRM/JBC/JNG/DZN/PY/HD/RJF 5-Feb-88
;COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1973,1986,1988.
; ALL RIGHTS RESERVED.
;
;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
;ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
;INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
;COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
;OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
;TRANSFERRED.
;
;
;THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
;AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
;CORPORATION.
;
;DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
;SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
SEARCH LNKPAR,LNKLOW,MACTEN,UUOSYM,SCNMAC
SALL
ENTRY LNKPLT,GETSON
CUSTVR==0 ;CUSTOMER VERSION
DECVER==5 ;DEC VERSION
DECMVR==1 ;DEC MINOR VERSION
DECEVR==2417 ;DEC EDIT VERSION
SEGMENT
SUBTTL REVISION HISTORY
;START OF VERSION 2
;137 INITIAL VERSION
;170 INTEGRATE WITH BLISS CODE ETC.
;START OF VERSION 2B
;261 Plot root if null structure
;263 Allow more words per level in stack size calculation
;315 FIX BUG CAUSED BY MACRO 50A
;342 INCLUDE EDIT 315 IN MAINTENANCE SOURCES
;START OF VERSION 2C
;557 Clean up listing for release.
;START OF VERSION 3A
;560 Release on both TOPS-10 and TOPS-20 as LINK version 3A(560)
;START OF VERSION 4
;731 SEARCH MACTEN,UUOSYM
;765 Release on both TOPS-10 and TOPS-20 as LINK version 4(765)
;1113 Don't shrink back on TOPS-20, and add LNKPOT message.
;1174 Label and clean up all error messages.
;1217 Clean up the listings for release.
;1220 Release on both TOPS-10 and TOPS-20 as version 4A(1220).
;START OF VERSION 5.1
;2002 Implement /PLTTYP switch
;2026 Update copyright notice
;Start of Version 6.0
;2403 New coporate copywrite statement.
;2417 Update copywrite statement to 1988.
SUBTTL BLISS CONVENTIONS
FREG==13
VREG==15
;LOCAL DEFINITIONS
PC==17 ;REAL PLOTTER CHANNEL
;MATERIALIZE THESE SYMBOLS FOR PLOTTER CODE
EXP INCHES,LEAVES,STEPS
RELOC .-3
SUBTTL DEFAULTS
P$LEAVES==^D16
L$LEAVES==^D8
P$INCHES==^D29
L$INCHES==^D12
P$STEPS==^D100
L$STEPS==^D20
L$BUFSIZ==^D2160
DEFINE KEYMAC (A,B)<
IFIDN <A>,<PLT>,<
IRP B,<
EXP P$'B
>>>
PLTTBL: KEYWORDS
DEFINE KEYMAC (A,B)<
IFIDN <A>,<PLT>,<
IRP B,<
EXP L$'B
>>>
LPTTBL: KEYWORDS
SUBTTL ENTRY
LNKPLT: JFCL ;IN CASE CCL
E$$POT::.ERR. (MS,0,V%L,L%I,S%I,POT,<Plotting overlay tree>) ;[1174]
ZAPTP2 ;[1264] CLEAR TEMP AREA
;NOW REDUCE CORE TO A MINIMUM
MOVE T1,DY.AB ;WHAT WE NEED
ADDI T1,2000 ;PLUS SPACE FOR BUFFERS
IFN TOPS20,< ;[1113] SHRINK THEN EXPAND TO SAME SIZE ON TOPS-20
MOVE T2,.JBREL ;[1113] REMEMBER HOW BIG WE ARE
CORE T1, ;[1113] SHRINK TO KILL PAGES
JFCL ;[1113]
MOVE T1,T2 ;[1113] NOW GROW TO OLD SIZE WITH EMPTY PAGES
>
CORE T1, ;[1113] SHRINK ON TOPS-10, GROW ON TOPS-20
JFCL ;TOO BAD
SETZM CORFUL ;[1113] ALLOW LNKCOR TO WORK HARD FOR US
MOVE T1,DY.UB ;PREVIOUS UPPER BOUND
MOVE T2,.JBREL## ;CURRENT UPPER BOUND
CAML T1,T2 ;REDUCED SIZE BUT NOT TOO FAR
JRST [CAME T1,T2 ;DID WE DO ANYTHING?
MOVEM T2,DY.UB ;YES, CUT BACK
JRST LNKPL1] ;AND CLEAR TABLES
HRL T1,T1
ADDI T1,1 ;FORM BLT PTR
SETZM -1(T1)
BLT T1,(T2) ;CLEAR REST OF CORE
LNKPL1: ADDI T2,1 ;.JBREL+1
MOVEM T2,.JBFF## ;STOPS SCREW UPS
MOVE T1,[TAB.LB+1,,TAB.LB+2]
SETZM TAB.LB+1 ;CLEAR TABLES
BLT T1,TAB.LB+HG.TAB
MOVE T1,[TAB.AB+1,,TAB.AB+2]
SETZM TAB.AB+1
BLT T1,TAB.AB+HG.TAB
MOVE T1,[TAB.UB+1,,TAB.UB+2]
SETZM TAB.UB+1
BLT T1,TAB.UB+HG.TAB
MOVE T2,BRNMAX ;LONGEST BRANCH
IMULI T2,^D50 ;50 WORDS PER LEVEL
ADDI T2,^D100 ;PLUS FUDGE FACTOR
PUSHJ P,DY.GET## ;GET SPACE
MOVN T2,T2 ;- LENGTH
HRL T1,T2 ;NEW PUSHDOWN STACK
MOVEM T1,SAVEP ;WILL USE IT TO CALL PLOT ROUTINES WITH
MOVEI T1,PC ;SET REAL CHAN #
MOVEM T1,IO.CHN ;AS CHAN TO USE
MOVE T1,IO.PTR+%PC ;GET FAKE CHAN
MOVEM T1,IO.PTR+PC ;REAL CHAN
SETZM IO.PTR+%PC ;JUST IN CASE
;NOW SET THE COMMON DEFAULTS
MOVE T2,LODNAM ;DEFAULT NAME
SKIPN I.NAM(T1) ;BUT NOT IF ALREADY SETUP
MOVEM T2,I.NAM(T1)
MOVSI T2,'PLT' ;DEFAULT EXT
SKIPN I.EXT(T1)
HLLZM T2,I.EXT(T1)
MOVSI T2,(Z PC,) ;SET REAL CHAN
MOVEM T2,I.CHN(T1)
MOVSI T2,POB ;OUTPUT BUFFER HEADER
MOVEM T2,I.BUF(T1)
MOVE T2,VERNUM ;GET VERSION#
SKIPN I.VER(T1) ;ALREADY SET BY SWITCH
MOVEM T2,I.VER(T1)
;NOW TO SEE IF WE USE PLT OR LPT SIMULATOR
MOVE T2,PPTYPE ;[2002] GET THE PLOTTER TYPE
CAIN T2,$PTPPL ;[2002] EXPLICIT PLOTTER
JRST PLTPLT ;[2002] YES
CAIN T2,$PTPPR ;[2002] EXPLICIT PRINTER
JRST LPTPLT ;[2002] YES
PUSHJ P,DVCHK.## ;GET DEVCHR WORD
MOVE T2,IO.CHR ;...
TXNE T2,DV.DSK ;TEST FOR NUL:
JRST .+3
TXNE T2,DV.LPT!DV.TTY ;NEED TO SIMULATE?
JRST LPTPLT ;YES
PLTPLT: MOVEI T2,.IOIBN ;[2002] REAL PLOTTER USES MODE 13
MOVEM T2,I.MOD(T1)
DMOVE T1,PLTTBL ;GET DEFAULTS
SKIPN PLTTAB ;AND SETUP IF NOT ALREADY
MOVEM T1,PLTTAB ; BY SWITCHES
SKIPN PLTTAB+1
MOVEM T2,PLTTAB+1
MOVE T1,PLTTBL+2
SKIPN PLTTAB+2
MOVEM T1,PLTTAB+2
PLTOPN: PUSHJ P,DVOPN.## ;OPEN DEVICE
PUSHJ P,DVENT.## ;ENTER FILE NAME
EXCH P,SAVEP ;USE NEW, LARGER PDL
HRRZI FREG,1(P) ;SET UP FRAME PTR
PUSHJ P,PLTO.F## ;CALL PLOTTER
EXCH P,SAVEP ;PUT P BACK
PUSHJ P,DVCLS.## ;CLOSE FILE
JRST ENDSAV## ;AND GO BACK TO LNKXIT
SUBTTL LPT SIMULATION SETUP
LPTPLT: MOVEI T2,.IOASL ;LPT USES ASCII LINE
MOVEM T2,I.MOD(T1)
DMOVE T1,LPTTBL ;GET DEFAULTS
SKIPN PLTTAB ;AND SETUP IF NOT ALREADY
MOVEM T1,PLTTAB ; BY SWITCHES
SKIPN PLTTAB+1
MOVEM T2,PLTTAB+1
MOVE T1,LPTTBL+2
SKIPN PLTTAB+2
MOVEM T1,PLTTAB+2
MOVEI T2,L$BUFSIZ ;NEEDED FOR SIMULATION
PUSHJ P,DY.GET##
MOVEM T1,LPBUF ;STORE FOR PLOTTER
JRST PLTOPN ;JOIN COMMON CODE
SUBTTL GETSON ROUTINE
;CALLED FROM BLISS WITH 3 ARGS ON STACK
;ARGS ARE
;1 PTR TO NODE TO BE BUILT (RETURNED)
;2 PTR TO CURRENT FATHER (0 FOR ROOT)
;3 INDEX TO WHICH SON
;ARG1 POINTS TO BLOCK OF FOLLOWING FORM
LOC 0
P%HDR:! BLOCK 1 ;LENGTH ,, 0
P%UNU:! BLOCK 1 ;UNUSED
P%SON:! BLOCK 1 ;ADDRESS OF SON ,, UNDEFINED
P%NUM:! BLOCK 1 ;LENGTH OF NAME ,, NUMBER
P%NAM:! BLOCK 2 ;NAME (2 WORDS)
P%ZER:! BLOCK 1 ;SET TO ZERO
RELOC
GETSON: EXCH P1,-3(P) ;PICK UP THE ARGS
EXCH P2,-2(P) ;...
EXCH P3,-1(P) ;...
SPUSH <T1,T2,T3,T4> ;GET SOME ACCS
SETO VREG, ;ASSUME WE WILL SUCCEED
JUMPE P2,GETROO ;WANTS ROOT IF ZERO
CAIN P2,-1 ;SPECIAL CASE OF NO LEAF?
AOJA VREG,RET ;YES, GIVE FALSE RETURN
HLRE T1,0(P2) ;GET - LENGTH
MOVM T1,T1
CAIL P3,-2(T1) ;VALID INDEX?
AOJA VREG,RET ;NO, GIVE ERROR RETURN
MOVE T1,P2 ;PTR TO FATHER
ADDI T1,2(P3) ;POINT TO SON WE WANT
SKIPN T2,(T1) ;GET NUMBER & PTR
AOJA VREG,RET ;HANDLES PATHOL. CASE OF 1 SON
TRNN T2,-1 ;NO SON LEAF
IORI T2,-1 ;YES, SET SPECIAL MARKER
HLRZM T2,P%NUM(P1) ;STORE NUMBER
HRLM T2,P%SON(P1) ;POINT TO ITS SON
HLRZ T1,T2 ;NUMBER ONLY
GETRST: MOVS T2,LNMPTR ;GET START OF NAME TABLE
GETNXT: HLRZ T3,1(T2) ;GET NUMBER
CAMN T1,T3 ;MATCH
JRST GETNAM ;YES
HRRZ T2,1(T2) ;GET NEXT ONE
JUMPN T2,GETNXT ;IF THERE IS ONE
SETZ T3, ;CLEAR SIZE
STRNAM: HRLM T3,P%NUM(P1) ;LENGTH IN CHARS
MOVEM T2,P%NAM(P1) ;STORE NAME
SETZM P%NAM+1(P1) ;ZERO SECOND WORD
SETZM P%ZER(P1) ;ALWAYS
RET: SPOP <T4,T3,T2,T1> ;RESTORE
EXCH P1,-3(P) ;RESTORE ARGS
EXCH P2,-2(P) ;...
EXCH P3,-1(P)
POPJ P, ;RETURN
GETNAM: MOVE T2,(T2) ;GET NAME
MOVEI T3,6 ;ASSUME SIX CHARS
MOVEI T4,77 ;MASK
TDNE T2,T4 ;SEE IF CHAR EXISTS
JRST STRNAM ;YES, COUNT IN T3
LSH T4,6 ;SHIFT TO NEXT PLACE
SOJA T3,.-3 ;ONE LESS
GETROO: MOVE T1,FSTPTR ;GET START OF TREE
SKIPN FSTPTR ;ZERO IF NO BRANCHES
MOVEI T1,-1 ;FLAG ROOT AS END OF ALL
HRLM T1,P%SON(P1) ;POINT TO IT
SETZB T1,P%NUM(P1) ;SET NUMBER TO ZERO
JRST GETRST ;SETUP REST OF DATA
SUBTTL DATA STORAGE
.ZZ==.TEMP2 ;[1264]
U2 (SAVEP) ;[1264] STORE INITIAL PUSHDOWN STACK
U2 (LPBUF) ;[1264] PTR TO LTP BUFFER IF NEEDED
U2 (POB,3) ;[1264] PLOT OUTPUT BUFFER HEADER
SUBTTL THE END
PLTLIT: END