File PRINT6.AS (Source fil)

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

16 ;*******************************************
26 ; SOURCE  PRINT6
36 ;*******************************************
46 ;
56 ;PROCESS COMPUTE STATEMENTS
66   
76 ;
86 COMPUT,	IF (EOL.EQ.SPACE) CALL SYNTAX
96 COMPT0,	XI=
106 	CALL GETLIN
116 	CALL GATOM
126 	HLDCOL=ACOL1
136   
146 	IF (ATMTYP.NE.1) GOTO COMPT9
156 	IF (ICHAR.NE.'=') GOTO COMPT8
166 	XENTRY=
176 	HOLDNM=WORD
186 	EXPRMD=
196 	CALL EXPVAL
206   
216 	IF (FATALI.NE.0) GOTO COMPT0
226 	XNAME=HOLDNM
236 	WORD=HOLDNM
246 	CALL SEARCH
256 	IF (FINDSW.EQ.SPACE) GOTO COMPT2
266   
276 	IF (DATADP.EQ.XDP) GOTO COMPT4
286 	ERRCOD=30
296 COMPT1,	ERRCOL=HLDCOL
306 	CALL FATAL
316 	GOTO COMPT0
326   
336 COMPT2,	IF (NAMEI.GT.DATMAX) GOTO COMPT0
346 	INCR NAMEI
356 	IF (NAMEI.LE.DATMAX) GOTO COMPT3
366 	ERRCOD=17
376 	GOTO COMPT1
386 COMPT3,	XWK='X'
396 	XMOD=EXPRMD
406 	IF (XSIZ.LE.15) GOTO COMP3A
416 	XSIZ=15
426 COMP3A,	ERRCOD=30
436 	IF (XDP.GT.XSIZ) GOTO COMPT1
446 	IF (XDP.LT.0) GOTO COMPT1
456 	DATANT(NAMEI)=XENTRY
466 COMPT4,	IF (COMPI.GT.EXPMAX) GOTO COMPT0
476 	INCR COMPI
486 	IF (COMPI.LE.EXPMAX) GOTO COMPT5
496 	ERRCOD=32
506 	GOTO COMPT1
516   
526 COMPT5,	J=1
536 	I=COMPI*118-117
546 COMPT6,	ICHAR=INLINE(J,J)
556 	IF (ICHAR.EQ.SPACE) GOTO COMPT7
566 	IF (ICHAR.EQ.'.') GOTO COMPT7
576 	IF (ICHAR.EQ.';') GOTO COMPT0
586 	COMPT(I,I)=ICHAR
596 	INCR I
606 COMPT7,	INCR J
616 	IF (J.LE.INLSIZ) GOTO COMPT6
626 	GOTO COMPT0
636   
646 COMPT8,	IF (ICHAR.NE.SPACE) GOTO COMPT9
656 	IF (WORD.EQ.'PRINT ') RETURN
666 	IF (WORD.EQ.'END ') RETURN
676 COMPT9,	CALL SYNTAX
686 	GOTO COMPT0
696 ;
706 ;
716 ; EVALUATE AN EXPRESSION
726 ;
736 EXPVAL,	IF (XI.LT.XIMAX) GOTO EXPVL0
746 	ERRCOD=29
756 	GOTO FATALA
766 EXPVL0,	INCR XI
776 	XENTRY=
786 	CALL SCANF
796 	IF (ICHAR.EQ.SPACE) GOTO SYNTAX
806 	ICOL=ICOL-1
816 	IF (ICHAR.NE.SQUOTE) GOTO EXPVL6
826 	CALL GATOM
836 	IF (FATALI.NE.0) RETURN
846 	IF (EOL.EQ.SPACE) GOTO SYNTAX
856 	IF (EXPRMD.NE.SPACE) GOTO SYNTAX
866 	EXPRMD='A'
876 	XSIZ=ATOMSZ
886 	GOTO EXPV13
896   
906 EXPVL6,	CALL GETOPN
916 	IF (FATALI.NE.0) RETURN
926 	EXPRMD='D'
936 	XSIZ=ATOMSZ
946 	XDP=ATOMDP
956   
966 EXPVL7,	IF (EOL.NE.SPACE) GOTO EXPV12
976 	IF (ICHAR.EQ.')') GOTO EXPV11
986 	IF (ICHAR.EQ.'+') GOTO EXPVL8
996 	IF (ICHAR.EQ.'-') GOTO EXPVL8
1006 	IF (ICHAR.EQ.'*') GOTO EXPVL9
1016 	IF (ICHAR.EQ.'/') GOTO EXPV10
1026 	GOTO SYNTAX
1036   
1046 ;IT IS '+' OR '-'
1056   
1066 EXPVL8,	SCOL=ICOL
1076 	CALL GETOPN
1086 	IF (FATALI.NE.0) RETURN
1096 EXPV8A,	IF (ICHAR.EQ.'*') GOTO EXPV8B
1106 	IF (ICHAR.NE.'/') GOTO EXPV8C
1116 EXPV8B,	XASIZ=ATOMSZ
1126 	XADP=ATOMDP
1136 	CALL GETOPN
1146 	IF (FATALI.NE.0) RETURN
1156 	ATOMSZ=ATOMSZ+XASIZ
1166 	ATOMDP=ATOMDP+XADP
1176 	GOTO EXPV8A
1186 EXPV8C,	IF (ATOMDP.EQ.XDP) GOTO EXPV8E
1196 	ERRCOD=30
1206 	ERRCOL=SCOL
1216 	CALL FATAL
1226 	GOTO EXPVL7
1236 EXPV8E,	IF (XSIZ.GE.ATOMSZ) GOTO EXPVL7
1246 	XSIZ=ATOMSZ
1256 	GOTO EXPVL7
1266   
1276 ;IT IS '*'
1286   
1296 EXPVL9,	CALL GETOPN
1306 	IF (FATALI.NE.0) RETURN
1316 	XSIZ=XSIZ+ATOMSZ
1326 	XDP=XDP+ATOMDP
1336 	GOTO EXPVL7
1346   
1356 ;IT IS '/'
1366   
1376 EXPV10,	CALL GETOPN
1386 	IF (FATALI.NE.0) RETURN
1396 	XDP=XDP-ATOMDP
1406 	GOTO EXPVL7
1416   
1426 ;IT IS ')'
1436   
1446 EXPV11,	ERRCOD=27
1456 	IF (XI.LE.1) GOTO FATALB
1466 	CALL SCANF
1476 	GOTO EXPV13
1486   
1496 ;END OF LINE
1506   
1516 EXPV12,	IF (XI.EQ.1) GOTO EXPV13
1526 	ERRCOD=28
1536 	GOTO FATALB
1546   
1556 EXPV13,	XI=XI-1
1566 	RETURN
1576 ;
1586 ;
1596 ;GET NEXT EXPRESSION OPERAND
1606 ;
1616 GETOPN,	CALL SCANF
1626 	IF (ICHAR.EQ.'+') GOTO GETOPN
1636 	IF (ICHAR.EQ.'-') GOTO GETOPN
1646 	ICOL=ICOL-1
1656 	CALL GATOM
1666 	IF (FATALI.NE.0) RETURN
1676 	IF (ICHAR.NE.'(') GOTO GTOPN1
1686 	IF (ATOMSZ.NE.0) GOTO SYNTAX
1696 	XTABLE(XI)=XENTRY
1706 	CALL EXPVAL
1716 	IF (FATALI.NE.0) RETURN
1726 	CALL GTOPN5
1736 	ATOMSZ=XSIZ-HOLDDP
1746 	ATOMDP=XDP-HOLDDP
1756 	XENTRY=XTABLE(XI)
1766 	RETURN
1776   
1786 GTOPN1,	IF (ATMTYP.EQ.1) GOTO GTOPN2
1796 	IF (ATMTYP.EQ.3) RETURN
1806 	ERRCOD=23
1816 	GOTO FATALA
1826   
1836 GTOPN2,	CALL SEARCH
1846 	IF (FINDSW.NE.SPACE) GOTO GTOPN3
1856 	ERRCOD=15
1866 	GOTO FATALA
1876   
1886 GTOPN3,	CALL GTOPN5
1896 	ATOMSZ=DATAS-HOLDDP
1906 	ATOMDP=DATADP-HOLDDP
1916 	RETURN
1926   
1936 GTOPN5,	HOLDDP=
1946 	IF (ICHAR.NE.'#') RETURN
1956 	CALL GATOM
1966 	IF (FATALI.NE.0) RETURN
1976 	IF (ATMTYP.NE.3) GOTO GTOPN6
1986 	IF (DPCOL.NE.0) GOTO GTOPN6
1996 	IF (NUMLIT(1,ATOMSZ).GT.15) GOTO GTOPN6
2006 	IF (NUMLIT(1,ATOMSZ).LE.0) GOTO GTOPN6
2016 	HOLDDP=NUMLIT(1,ATOMSZ)
2026 	RETURN
2036 GTOPN6,	ERRCOD=7
2046 	GOTO FATALA
2056 END



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