File SNOLST.PA (PAL assembler source file)

Directory of image this file is from
This file as a plain text file

/SNOBOL 8.2	

JMS I XINIT
XIND
X0
XVLEN
XTOP

//SNOBOL LISTING PROGRAM
//
// WRITTEN BY WILLIAM NOWICKI
// NORTHWESTERN UNIVERSITY
// COMPUTER SCIENCE RESEARCH LABORATORY
//
// DECEMBER, 1976
//
//
//+ASK
//THE USER IS FIRST ASKED FOR AN INPUT FILE 
//(ASSUMED TO BE ON "DSK:").
//THIS SOULD BE A "PAL8" LISTING FILE.
//IF THE "SNOBOL 8.2" HEADING PUT OUT BY THE COMPILER
//IS FOUND, THE TITLE WHICH WILL BE PUT ON THE LISTING
//IS PRINTED. THE OUTPUT FILENAME IS THEN REQUESTED.
//IT MAY TAKE A LONG TIME TO PROCESS A LARGE "SNOBOL"
//PROGRAM - PLEASE BE PATIENT.
//
//
//:CODE:
/	PG = "1"
JMS I XPAT
0002
PG
XEQC
XL0001
/	LN = "0"
JMS I XPAT
0002
LN
XEQC
XL0002
/	TP = "0"	/TOTAL PAGES
JMS I XPAT
0002
TP
XEQC
XL0002
/	FLD = "0"
JMS I XPAT
0002
FLD
XEQC
XL0002
/	LP = "54"
JMS I XPAT
0002
LP
XEQC
XL0003
/	T = .A211
JMS I XPAT
0002
T
XEQC
XL0004
/	CRLF = .A215 .A212
JMS I XPAT
0003
CRLF
XEQC
XL0005
XL0006
/	PN = "0"
JMS I XPAT
0002
PN
XEQC
XL0002
/ASK,	OUTHOLD = "INPUT (PAL8 LISTING):"
ASK,JMS I XPAT
0002
OUTHOL
XEQC
XL0007
/	.LOOKUP INPUT :F(ASK)
JMS I XLOOKUP
INPUT
TAD XSUCCES
SZA CLA
JMP ASK
/LP1,	LINE = READ :F(EOF)
LP1,JMS I XPAT
0002
LINE
XEQC
READ
TAD XSUCCES
SZA CLA
JMP EOF
/	LINE "/SNOBOL" :F(LP1)
JMS I XPAT
0001
LINE
XL0010
TAD XSUCCES
SZA CLA
JMP LP1
/	LINE "/" *TITLE/50*
JMS I XPAT
0004
LINE
XL0011
XFLC;0620;TITLE
/	OUTPUT = ""
JMS I XPAT
0002
OUTPUT
XEQC
XL0012
/	OUTPUT = "TITLE:  " TITLE
JMS I XPAT
0003
OUTPUT
XEQC
XL0013
TITLE
/	OUTPUT = ""
JMS I XPAT
0002
OUTPUT
XEQC
XL0012
/	LINE = READ READ
JMS I XPAT
0003
LINE
XEQC
READ
READ
/	TITLE = .A214 CRLF  T T TITLE T "PAGE "
JMS I XPAT
0010
TITLE
XEQC
XL0014
CRLF
T
T
TITLE
T
XL0015
//
/ASKO,	OUTHOLD = "OUTPUT (SNOBOL LISTING):"
ASKO,JMS I XPAT
0002
OUTHOL
XEQC
XL0016
/	.ENTER INPUT :F(ASKO)
JMS I XENTER
INPUT
TAD XSUCCES
SZA CLA
JMP ASKO
//
//
//-ASK
JMP I (.&7600+200
PAGE
XP0001=.
/	LAST = "00177"
JMS I XPAT
0002
LAST
XEQC
XL0017
//
//
/LOOP,	LINE = READ :F(EOF)		/READ INPUT LINE
LOOP,JMS I XPAT
0002
LINE
XEQC
READ
TAD XSUCCES
SZA CLA
JMP EOF
/	LINE_ "/SNOBOL" :F(NOPG)
JMS I XPAT
0001-4000
LINE
XL0010
TAD XSUCCES
SZA CLA
JMP NOPG
/	LINE = READ :F(EOF)		/SKIP A LINE
JMS I XPAT
0002
LINE
XEQC
READ
TAD XSUCCES
SZA CLA
JMP EOF
/	TP = TP +1			/INCREMENT TOTAL NUMBER OF PAGES
JMS I XASC
TP

DCA XL0020
TAD XL0020
TAD (0001
JMS I XINT
TP
JMP .+0002
XL0020,	0
//
/NOPG,					/IT ISN'T A PAGE HEADING
NOPG,/	LINE *LOC/5* :F(NOLOC)
JMS I XPAT
0003
LINE
XFLC;0050;LOC
TAD XSUCCES
SZA CLA
JMP NOLOC
/	LINE LOC =			/DELETE THE LOCATION
JMS I XPAT
0002
LINE
LOC
XEQC
/	LOC "  "!.A211 :S(NOLOC)
JMS I XPAT
0003
LOC
XL0021
XORC
XL0004
TAD XSUCCES
SNA CLA
JMP NOLOC
/	LAST = LOC			/SAVE LOCATION COUNTER
JMS I XPAT
0002
LAST
XEQC
LOC
/NOLOC,					/WE HAVE LOC. OF PREVIOUS LINE
NOLOC,/	LINE_ ** "/" = :F(LOOP)		/GET A SNOBOL SOURCE LINE
JMS I XPAT
0005-4000
LINE
XFLC;0;0
XL0011
XEQC
TAD XSUCCES
SZA CLA
JMP LOOP
/	LN = LN + 1
JMS I XASC
LN

DCA XL0022
TAD XL0022
TAD (0001
JMS I XINT
LN
JMP .+0002
XL0022,	0
/	LP = LP + 1
JMS I XASC
LP

DCA XL0023
TAD XL0023
TAD (0001
JMS I XINT
LP
JMP .+0002
XL0023,	0
/	LP "55" = :F(JUSTP)		/CHECK FOR PAGINATION TIME
JMS I XPAT
0002
LP
XL0024
XEQC
TAD XSUCCES
SZA CLA
JMP JUSTP
/	PN = PN + 1
JMS I XASC
PN

DCA XL0025
TAD XL0025
TAD (0001
JMS I XINT
PN
JMP .+0002
XL0025,	0
JMP I (.&7600+200
PAGE
XP0002=.
/	OUTPUT = "PAGE " PN
JMS I XPAT
0003
OUTPUT
XEQC
XL0015
PN
/	WRITE = TITLE PN		/PUT OUT THE TITLE
JMS I XPAT
0003
WRITE
XEQC
TITLE
PN
/	WRITE = ""
JMS I XPAT
0002
WRITE
XEQC
XL0012
/JUSTP,	LOC = LAST
JUSTP,JMS I XPAT
0002
LOC
XEQC
LAST
/	LINE_ "/" :F(ULOC)		/CHECK FOR COMMENTS
JMS I XPAT
0001-4000
LINE
XL0011
TAD XSUCCES
SZA CLA
JMP ULOC
/	LOC = "     "
JMS I XPAT
0002
LOC
XEQC
XL0026
/ULOC,	WRITE = LN T " " LOC "  " LINE
ULOC,JMS I XPAT
0007
WRITE
XEQC
LN
T
XL0027
LOC
XL0021
LINE
/		:(LOOP)
JMP LOOP
//
//+EOF
//	THIS MODULE CLOSES THE INPUT AND OUTPUT FILES
//AND TELLS THE USER THE BAD NEWS IF ANY ERROR OCCURED.
//:CODE:
/EOF,	OUTPUT = CRLF
EOF,JMS I XPAT
0002
OUTPUT
XEQC
CRLF
/	OUTPUT = "TOTAL PAGES IN THE PAL8 LISTING: " TP
JMS I XPAT
0003
OUTPUT
XEQC
XL0030
TP
/	.OCLOSE :F(CERROR)
JMS I XOCLOSE
TAD XSUCCES
SZA CLA
JMP CERROR
/	.ICLOSE
JMS I XICLOSE
/	.EXIT
JMP I (7600
/CERROR, OUTPUT = "CLOSING ERROR !"
CERROR,JMS I XPAT
0002
OUTPUT
XEQC
XL0031
/	.EXIT
JMP I (7600
/IOBAD,	OUTPUT = "OUTPUT ERROR !"
IOBAD,JMS I XPAT
0002
OUTPUT
XEQC
XL0032
/	.END
JMP I (7600
//-EOF

PAGE

X0,
PG,	0
LN,	0
TP,	0
FLD,	0
LP,	0
T,	0
CRLF,	0
PN,	0
LINE,	0
TITLE,	0
LAST,	0
LOC,	0

XVLEN=.-X0

XL0002,	XX0002
XL0012,	XX0012
XL0015,	XX0015
XL0017,	XX0017
XL0021,	XX0021
XL0026,	XX0026
XL0027,	XX0027
XL0001,	XX0001
XL0004,	XX0004
XL0007,	XX0007
XL0006,	XX0006
XL0031,	XX0031
XL0013,	XX0013
XL0014,	XX0014
XL0030,	XX0030
XL0003,	XX0003
XL0005,	XX0005
XL0024,	XX0024
XL0010,	XX0010
XL0011,	XX0011
XL0016,	XX0016
XL0032,	XX0032


FIELD 1
*XFIELD1

XIND=0
XX0002,0260
0000
7777

XX0012,0000
0000
7777

XX0015,6320
3701
0305
0240
7777

XX0017,5660
0660
0267
0267
7777

XX0021,0240
0240
7777

XX0026,5240
0240
0240
0240
7777

XX0027,0240
0000
7777

XX0001,0261
0000
7777

XX0004,0211
0000
7777

XX0007,6711
0316
5325
0324
6250
0720
5314
0270
6714
1711
6324
7311
5707
5251
0000
0000
7777

XX0006,0212
0000
7777

XX0031,6303
7714
6323
7311
6307
2640
6322
7722
5322
0640
0000
0000
7777

XX0013,6724
2311
5714
5305
0240
0240
7777

XX0014,0214
0000
7777

XX0030,6724
2317
5301
0314
6320
3701
5305
0323
5311
0316
6324
2710
6240
0720
5314
0270
6714
1711
6324
7311
5307
0272
0000
0000
7777

XX0003,0265
0264
7777

XX0005,0215
0000
7777

XX0024,0265
0265
7777

XX0010,6257
7323
6317
7702
0314
0000
7777

XX0011,0257
0000
7777

XX0016,6717
2325
6720
2325
6640
1650
6316
1317
5317
0314
6714
1711
6324
7311
5707
5251
0000
0000
7777

XX0032,6717
2325
6720
2325
6640
1305
6722
1317
0240
0241
7777


XTOP=.

$$$



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search