File MAGSPY.SB (8k SABR macro assembler source file)

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

/MAGSPY.SB, PAGE 1 OF 26.	(5/19/72 - C.M.MOORE, RICE U., HOUSTON)
/
/THE FOLLOWING EXPLANATION IS DISPLAYED WHEN MAGSPY IS STARTED:
/
/TYPE H FOR HELP AT ANY TIME DURING BLOCK DISPLAY.
/(THIS EXPLANATION DISPLAY WILL REAPPEAR.)
/TYPE M FOR MORE HELP DURING EXPLANATION.
/
/MAGSPY CAN DISPLAY ANY BLOCK ON ANY PS/8 I/O DEVICE.
/THE BLOCK IS SPECIFIED IN ONE OF THREE WAYS:
/	1)DEVICE:FILE  (STARTS DISPLAY WITH 1ST BLOCK OF FILE)
/	2)DEVICE: AND BLOCK NUMBER
/	3)LINCTAPE UNIT NUMBER AND BLOCK NUMBER
/METHODS 1 & 2 USE 256-WORD PS/8 BLOCKS, EACH OF WHICH CONSISTS OF
/2 128-WORD PHYSICAL DEVICE BLOCKS.
/METHOD 3 USES LINCTAPE BLOCKS OF ANY SIZE (UP TO 1000 OCTAL WORDS).
/
/TO DISPLAY A PS/8 BLOCK, TYPE D AND WAIT FOR THE COMMAND DECODER TO
/ECHO A STAR (*).  AFTER * APPEARS, SPECIFY THE DEVICE OR DEVICE:FILE,
/FOLLOWED BY CARRIAGE-RETURN. DSK IS THE ASSUMED DEVICE NAME. IF A FILE
/IS NOT SPECIFIED, MAGSPY WILL TYPE B* TO ASK FOR AN OCTAL BLOCK NUMBER
/
/TO DISPLAY A LINCTAPE BLOCK, TYPE L, U, OR B.  AFTER * APPEARS, TYPE
/THE APPROPRIATE OCTAL NUMBER, FOLLOWED BY A CARRIAGE-RETURN.
/	TYPE L TO SPECIFY LINCTAPE BLOCK LENGTH.
/	TYPE U TO SPECIFY LINCTAPE UNIT NUMBER.
/	TYPE B TO SPECIFY BLOCK NUMBER.
/
/TYPE THE FOLLOWING CHARACTERS TO INCREMENT OR DECREMENT THE NUMBER
/OF THE BLOCK CURRENTLY BEING DISPLAYED:
/	1 INCREMENTS BY 1
/	2 INCREMENTS BY 8
/	Q DECREMENTS BY 1
/	W DECREMENTS BY 8
/OR TYPE B TO SPECIFY A NEW OCTAL BLOCK NUMBER.
/
/KNOBS 3 & 7 DETERMINE HOW MUCH OF THE BLOCK WILL BE DISPLAYED.
/	KNOB 3 IS THE 1ST LOCATION DISPLAYED.
/	KNOB 7 IS NUMBER OF LOCATIONS DISPLAYED.
/SENSE SWITCHES 0 - 5 DETERMINE THE DISPLAY MODE:
/	SW0: OFF FOR POINTS, ON FOR OCTAL NUMBERS.
/		(POINTS ARE SCALED TO AVOID WRAP-AROUND.)
/		(SWITCH TO CHANNEL 1 TO DELETE POINT DISPLAY HEADING.)
/	SW1: OFF FOR UNSIGNED, ON FOR SIGNED NUMBERS & POINTS.
/	SW2: ON TO ADJUST POINT SCALING WITH KNOBS 2 & 6.
/		(KNOB 2 IS MIN, KNOB 6 IS MAX.)
/	SW2: ON FOR FULL-SIZED CHARACTERS.
/	SW3: ON TO CONNECT POINTS WITH STRAIGHT LINES.
/		(THIS WILL OCCUR ONLY IF YOU HAVE EAE HARDWARE.)
/	SW4: ON FOR 6-BIT ASCII (2 CHARACTERS PER WORD).
/	SW5: ON FOR 8-BIT ASCII (3 CHARACTERS PER 2 WORDS).
/		(USE THIS TO LOOK AT PS/8 SOURCE FILES.)
/
/	SUMMARY:
/THE FOLLOWING INPUTS ARE ACCEPTED DURING A BLOCK DISPLAY:
/	H D L U B 1 2 Q W
/THE FOLLOWING INPUTS ARE ACCEPTED DURING THIS EXPLANATION DISPLAY:
/	TYPE D OR L TO SPECIFY A DEVICE:FILE OR LINCTAPE.
/	TYPE B TO SPECIFY A NEW BLOCK.
/	TYPE CARRIAGE-RETURN TO RETURN TO THE SAME BLOCK.
/	TYPE M TO REPEAT EXPLANATION.

/MAGSPY.SB, PAGE 2 / /THIS PROGRAM USES THE FOLLOWING SUBROUTINES: IHELP,NAMES,LFILE,RFILE, /RLINC,ALPHA,CRLF,INTIN,NALOG,ISENS,KEYBD,DISP3,DISP4,DISP5,DISP7,DISP9, /DSP10,DSP11,DSP12,OPEN,GENIO,DIV,EXIT. /IHELP IS CONTAINED IN FILE MSPY2.SB. /OPEN,GENIO,DIV,&EXIT ARE CONTAINED IN LIBRARY FILE LIB8.RL. /THE OTHERS ARE CONTAINED IN LIBRARY FILE LIB12.RL (10/7/71 VERSION). / /BINARY FILE MAGSPY.RL MUST BE LOADED INTO FIELD 1. /(USE THE /1 OPTION WITH THE LOADER.) /IF IT IS NOT, IT WILL TYPE THE FOLLOWING FATAL /ERROR MESSAGE WHEN RUN: "NOT FIELD 1" / /TO CREATE A NEW VERSION OF MAGSPY.SV, USE SABR TO ASSEMBLE MAGSPY.SB /AND MSPY2.SB. THEN USE THE MODIFIED LOADER.SV FROM THIS TAPE OR THE /DECUS 12-48 TAPE TO LOAD MAGSPY.RL, MSPY2.RL, AND ALL NECESSARY /ROUTINES FROM LIBRARY FILES LIB12.RL AND LIB8.RL. / .R LOADER / *MAGSPY,MSPY2/1/U$ / 0000 / 0000 / .SAVE SYS:MAGSPY / /MAGSPY.SB AND MSPY2.SB CONTAIN NO LINC-MODE CODING. ALL LINC-MODE /CODING IS CONTAINED IN THE FOLLOWING SUBROUTINES: /RLINC,NALOG,ISENS,DISP3,DISP4,DISP5,DISP7,DISP9,DSP10,DSP11,DSP12. / / /ALLOCATE SPACE FOR BLOCKS OF UP TO 1000 OCTAL WORDS IBUFF, COMMN 1000 /FIXED-SCALE POINT DISPLAY BUFFER JBUFF, COMMN 1000 /NUMBER & ASCII DISPLAY BUFFER KBUFF, COMMN 1000 /VARIABLE-SCALE POINT DISPLAY BUFFER / ABSYM BSIZE 100 ABSYM UNIT 101 ABSYM BLCK 102 ABSYM DEV 103 ABSYM FILE 105 ABSYM FILE2 106 ABSYM FILE3 107 ABSYM FILE4 110 ABSYM EXTEN 111 ABSYM KDIV 112 ABSYM FIRSTW 113 ABSYM LASTW 114 ABSYM DFLAG 115 ABSYM FIRSTB 116 ABSYM LASTB 117 ABSYM BSIZE1 141 ABSYM BSIZE2 142 ABSYM MBSIZ2 143 ABSYM LENTHW 144 ABSYM MLNTHW 145 ABSYM ISW1 146 ABSYM ISW2 147 /
/MAGSPY.SB, PAGE 3 / ABSYM IBUFFP 150 ABSYM JBUFFP 151 ABSYM KBUFFP 152 ABSYM UFLAG 153 ABSYM EAE 154 ABSYM MAX 155 ABSYM MIN 156 ABSYM MAXDSP 157 ABSYM MINDSP 160 ABSYM OLD2 161 ABSYM OLD6 162 ABSYM LOG2 163 ABSYM LOG6 164 ABSYM NEGMAX 165 ABSYM NEGMIN 166 ABSYM SIGN 167 ABSYM HAXIS 170 ABSYM DIVDND 171 ABSYM QUOT 172 ABSYM DIVISR 173 ABSYM OLD1A 174 ABSYM OLD1B 175 ABSYM ISW1A 176 ABSYM PONT1 121 ABSYM PONT2 122 ABSYM PONT3 123 ABSYM CONT1 131 ABSYM CONT2 132 ABSYM CONT3 133 / OPDEF TADI 1400 OPDEF DCAI 3400 OPDEF JMPI 5400 OPDEF RDF 6214 LAP TEXT1, TEXT /BLOCK SIZE =@/ TEXT2, TEXT /WORDS@/ TEXT3, TEXT /TAPE UNIT@/ TEXT4, TEXT /FILE@/ TEXT6, TEXT /OCCUPIES BLOCKS@/ TEXT7, TEXT /TO@/ TEXT8, TEXT /DISPLAYING BLOCK@/ TEXT9, TEXT /FILE NOT FOUND@/ TEXT10, TEXT /INVALID BLOCK LENGTH@/ TEXT11, TEXT /INVALID TAPE UNIT@/ TEXT12, TEXT /DISPLAYING WORDS@/ TEXT13, TEXT /OF BLOCK@/ TEXT14, TEXT /DEVICE NOT SPECIFIED@/ TEXT15, TEXT /NOT FIELD 1@/ TEXT16, TEXT /MAX@/ TEXT17, TEXT /MIN@/ / IBUFP, IBUFF JBUFP, JBUFF KBUFP, KBUFF /
/MAGSPY.SB, PAGE 4 / EAP ENTRY MAIN MAIN, NOP CALL 0,OPEN /CHECK THAT MAGSPY.RL IS LOADED INTO FIELD 1 RDF /GET CURRENT DF TAD (-10 SNA CLA JMP OKFLD1 CALL 1,ALPHA ARG TEXT15 CALL 0,EXIT OKFLD1, DCA DFLAG /ZERO DISPLAY FLAG TAD IBUFP DCA IBUFFP TAD JBUFP DCA JBUFFP TAD KBUFP DCA KBUFFP /CHECK IF THE EAE HARDWARE IS PRESENT CLA CMA /AC=7777 CPAGE 3 /THE FOLLOWING 2 INSTRUCTIONS SHOULD BE NO-OPS IF EAE ISN'T INSTALLED. 7421 /MQL /LOAD MQ WITH 7777 7405 /MUY /MULTIPLY 7777 BY 7200 7200 /CLA SZA CLA IAC DCA EAE /0 IF NO EAE /CALL HELP DISPLAY ROUTINE HELP, CALL 1,IHELP ARG DFLAG TAD JUMP1 DCA JUMP2 CPAGE 5 JUMP2, HLT /JUMP TO SECTION SPECIFIED BY INDEX # RETURNED BY IHELP DSPLAY /CARRIAGE-RETURN TYPED LSTAR /L TYPED DEVICE /D TYPED BTYPED /B TYPED JUMP1, JMPI JUMP2 / /B TYPED. CHECK DEVICE FLAG BTYPED, TAD DFLAG SNA CLA JMP HELP /NO DEVICE OR LINCTAPE SELECTED JMP BSTAR /TYPE * AND READ BLOCK # /
/MAGSPY.SB, PAGE 5 / /D TYPED. READ IN DEVICE:FILE DEVICE, DCA UFLAG /ZERO TAPE UNIT FLAG DCA DFLAG /ZERO DISPLAY FLAG TAD (400 DCA BSIZE /PS/8 DEVICES USE 256-WORD BLOCKS CALL 4,NAMES ARG DEV ARG FILE ARG DEV ARG FILE TAD DEV SZA CLA JMP LOOKUP /DEVICE NOT SPECIFIED CALL 1,ALPHA ARG TEXT14 CRTYPE, CALL 0,CRLF JMP HELP /LOOK UP FILE LOOKUP, CALL 3,LFILE ARG DEV ARG FILE ARG LASTB /LENGTH OF FILE IN BLOCKS SMA JMP FOK CLA TAD FILE SNA CLA JMP BLOCKS /NO FILE NAME SPECIFIED /FILE NOT FOUND CALL 1,ALPHA ARG TEXT9 JMP CRTYPE /FILE FOUND FOK, DCA BLCK /BLOCK # TAD BLCK DCA FIRSTB /1ST BLOCK OF FILE CLA CMA TAD FIRSTB TAD LASTB DCA LASTB /LAST BLOCK OF FILE /SET UP FOR DISPLAY OF FILE NAME TAD FILE JMS BLANK /CONVERT @ TO BLANKS DCA FILE TAD FILE2 JMS BLANK DCA FILE2 TAD FILE3 JMS BLANK DCA FILE3 /
/MAGSPY.SB, PAGE 6 / TAD FILE4 RTL RTL RTL AND (7700 DCA EXTEN TAD FILE4 AND (7700 CLL RTR RTR RTR TAD (5600 /ADD PERIOD DCA FILE4 / /READ IN PS/8 BLOCK READF, CALL 3,RFILE ARG (2 ARG BLCK ARG JBUFF JMP DSPLAY /DISPLAY BLOCK / /READ IN BLOCK # IN OCTAL BLOCKS, TAD ("B CALL 0,GENIO BSTAR, JMS STAR SPA CLA DCA BLCK /BLOCK # DCA DFLAG TAD UFLAG SNA CLA JMP READF /READ BLOCK FROM PS/8 DEVICE JMP READL /READ BLOCK FROM LINCTAPE / /READ IN LINCTAPE BLOCK LENGTH IN OCTAL LSTAR, JMS STAR DCA BSIZE DCA DFLAG /ZERO DISPLAY FLAG TAD BSIZE TAD (-10 SPA JMP BADSIZ TAD (-771 /7-MAX ALLOWED BLOCK SIZE SPA CLA JMP UNITS /BLOCK SIZE OK /INVALID BLOCK SIZE BADSIZ, CALL 1,ALPHA ARG TEXT10 JMP CRTYPE /
/MAGSPY.SB, PAGE 7 / /READ IN LINCTAPE UNIT # UNITS, TAD ("U CALL 0,GENIO USTAR, JMS STAR DCA UNIT DCA DFLAG IAC DCA UFLAG DCA FILE TAD UNIT SPA JMP BADU TAD (-10 SPA CLA JMP BLOCKS /TAPE UNIT OK /INVALID TAPE UNIT BADU, CALL 1,ALPHA ARG TEXT11 JMP CRTYPE / /READ IN LINCTAPE BLOCK READL, CALL 5,RLINC ARG UNIT ARG BLCK ARG (1 ARG JBUFF ARG BSIZE JMP DSPLAY /DISPLAY BLOCK / /SUBROUTINE BLANK CONVERTS ZERO-VALUED CHARACTERS (@) TO BLANKS BLANK, 0 DCA PONT1 TAD PONT1 AND (77 SNA TAD (40 DCA PONT2 TAD PONT1 AND (7700 SNA CLL CML RAR TAD PONT2 JMP I BLANK / /SUBROUTINE STAR TYPES * AND THEN ACCEPTS OCTAL # FROM TTY. STAR, 0 TAD ("* CALL 0,GENIO /TYPE * CALL 1,INTIN /READ # ARG (10 /RADIX JMP I STAR /
/MAGSPY.SB, PAGE 8 / /BLOCK DISPLAY ROUTINE DSPLAY, TAD DFLAG SZA CLA JMP PLUP /DISPLAY ALREADY SET UP / /SET UP FOR DISPLAY CLA IAC DCA DFLAG /SET DISPLAY FLAG TAD (2000 DCA OLD2 /MOVE DATA FROM JBUFF TO IBUFF & SCALE FOR POINT DISPLAY CALL 1,ISENS ARG (1 SNA CLA IAC DCA ISW1 TAD ISW1 CIA DCA OLD1A TAD BSIZE CIA DCA CONT1 TAD IBUFFP DCA PONT1 TAD JBUFFP DCA PONT2 TLUP1, TAD ISW1 CLL RTR TADI PONT2 CALL 1,DIV ARG (10 DCAI PONT1 INC PONT1 INC PONT2 ISZ CONT1 JMP TLUP1 /SET UP CONSTANTS FOR KNOBS 3 & 7. TAD (2000 CALL 1,DIV ARG BSIZE DCA KDIV TAD BSIZE IAC DCA BSIZE1 /BSIZE+1 CLA CMA CLL RAL /AC=-2 TAD BSIZE DCA BSIZE2 /BSIZE-2 TAD BSIZE2 CIA DCA MBSIZ2 /-(BSIZE-2) /
/MAGSPY.SB, PAGE 9 / /MAIN LOOP TO DISPLAY BLOCK /GET KNOB 3 & 7 LIMITS PLUP, CALL 1,NALOG ARG (3 CIA TAD (777 CALL 1,DIV ARG KDIV TAD MBSIZ2 SMA SZA CLA TAD BSIZE2 DCA FIRSTW TAD FIRSTW CIA TAD BSIZE DCA LENTHW TAD LENTHW CIA DCA MLNTHW CALL 1,NALOG ARG (7 TAD (1000 CALL 1,DIV ARG KDIV TAD (2 TAD MLNTHW SMA SZA CLA TAD LENTHW DCA LENTHW CLA CMA TAD FIRSTW TAD LENTHW DCA LASTW /
/MAGSPY.SB, PAGE 10 / /CHECK SENSE SWITCHES CALL 1,ISENS ARG (1 DCA ISW1A TAD ISW1A SNA CLA IAC DCA ISW1 CALL 1,ISENS ARG (2 DCA ISW2 CALL 1,ISENS ARG (5 SZA CLA JMP EIGHTB /DISPLAY 8-BIT ASCII CALL 1,ISENS ARG (4 SZA CLA JMP SIXBIT /DISPLAY 6-BIT ASCII CALL 1,ISENS ARG (0 SZA CLA JMP OCTDIG /DISPLAY OCTAL DIGITS /
/MAGSPY.SB, PAGE 11 / /DISPLAY POINTS TAD ISW2 SZA CLA JMP VARY /USE FIXED VERTICAL SCALING /VERTICAL AXIS LIMITS ARE (-4000 TO +3777) OR (0 TO 7777) /THIS PREVENTS VERTICAL WRAP-AROUND TAD OLD1A /CHECK IF SW1 HAS CHANGED TAD ISW1 SNA CLA JMP NOFLIP /SWITCH 1 HAS CHANGED, SO INVERT POSITIVE & NEGATIVE #S TAD BSIZE CIA DCA CONT1 TAD IBUFFP DCA PONT1 TAD ISW1 CIA DCA OLD1A FLUP, TADI PONT1 SMA TAD (-1000 TAD (400 DCAI PONT1 INC PONT1 ISZ CONT1 JMP FLUP NOFLIP, TAD FIRSTW TAD IBUFFP DCA ARG4# TAD ISW1A CMA CLL CML RTR DCA MAXDSP TAD ISW1A CLL RTR DCA MINDSP TAD ISW1 SZA CLA JMP INTERP CALL 1,DISP5 /DISPLAY HORIZONTAL AXIS ARG (0 JMP INTERP /
/MAGSPY.SB, PAGE 12 / /USE VARIABLE VERTICAL SCALING /VERTICAL AXIS LIMITS ARE DETERMINED BY KNOBS 2 & 6. /(KNOB 2 SELECTS MINIMUM, KNOB 6 SELECTS MAXIMUM) /WRAP-AROUND IS PREVENTED BY DISPLAYING OFF-SCALE POINTS AT THE /TOP & BOTTOM OF THE SCOPE. VARY, CALL 1,NALOG ARG (2 DCA LOG2 CALL 1,NALOG ARG (6 DCA LOG6 /CHECK IF KNOBS 2 & 6 OR SENSE SWITCH 1 HAVE CHANGED TAD LOG2 TAD OLD2 SZA CLA JMP RESCAL TAD LOG6 TAD OLD6 SZA CLA JMP RESCAL TAD ISW1 TAD OLD1B SNA CLA JMP MINMAX /RESCALE POINTS SINCE KNOBS OR SWITCH HAVE CHANGED RESCAL, TAD LOG2 CIA DCA OLD2 TAD LOG6 CIA DCA OLD6 TAD ISW1 CIA DCA OLD1B /
/MAGSPY.SB, PAGE 13 / TAD LOG2 CMA DCA MIN /-1000 TO +777 TAD LOG6 TAD MIN SMA CLA TAD (1000 /-1000 TO +1000 CLL RAL TAD (-1776 SMA CLA TAD (1777 DCA MAX /-1777 TO +1777 TAD MIN CLL RAL DCA MIN /-2000 TO +1776 TAD MAX CIA TAD MIN DCA DIVISR TAD MAX TAD MIN CIA DCA LOG2 TAD MAX CLL RAL DCA MAX TAD MIN CLL RAL DCA MIN TAD MAX CIA DCA NEGMAX TAD MIN CIA DCA NEGMIN /LOOP TO TRANSFER POINTS FROM JBUFF TO KBUFF & SCALE THEM. TAD BSIZE CIA DCA CONT1 TAD JBUFFP DCA PONT1 TAD KBUFFP DCA PONT2 /
/MAGSPY.SB, PAGE 14 / TLUP2, TAD ISW1 CLL RTR TADI PONT1 DCA CONT2 TAD CONT2 SPA CLA JMP TLUP2A /X<0 TAD NEGMAX SMA JMP TOP /X>=0,MAX<=0 TAD CONT2 SMA CLA JMP TOP /X>=MAX>0 CLA CLL CML RAR /AC=4000 TAD NEGMIN SNA CLA JMP TLUP2B /MIN=4000 TAD NEGMIN SMA SZA JMP TLUP2B /X>=0,MIN<0 TAD CONT2 SPA SNA CLA JMP BOT /MIN>=X>=0 JMP TLUP2B /X>MIN>=0 TLUP2A, CLA CLL CML RAR /AC=4000 TAD NEGMIN SNA CLA JMP TLUP2C /MIN=4000 TAD NEGMIN SPA JMP BOT /X<0,MIN>=0 TAD CONT2 SPA SNA CLA JMP BOT /0>MIN>=X TLUP2C, TAD NEGMAX SPA SNA JMP TLUP2B /X<0,MAX>=0 TAD CONT2 SMA CLA JMP TOP /0>X>=MAX TLUP2B, CLA TAD CONT2 TAD LOG2 JMS DIVIDE /DIVIDE BY DIVISR, MULTIPLY BY 400 JMP STORE /RESULT IS BETWEEN -377 AND +377 /
/MAGSPY.SB, PAGE 15 / TOP, CLA TAD (377 JMP STORE BOT, CLA TAD (-377 STORE, DCAI PONT2 INC PONT1 INC PONT2 ISZ CONT1 JMP TLUP2 /CHECK IF HORIZONTAL AXIS SHOULD BE PLOTTED TAD NEGMAX SMA SZA CLA JMP NOAXIS CLA CLL CML RAR /AC=4000 TAD NEGMIN SNA CLA JMP YESXIS TAD NEGMIN SPA CLA JMP NOAXIS YESXIS, TAD LOG2 JMS DIVIDE JMP STOXIS NOAXIS, TAD (2000 STOXIS, DCA HAXIS /SET UP PARAMETERS FOR DISPLAY MINMAX, TAD ISW1 CLL RTR TAD MAX DCA MAXDSP TAD ISW1 CLL RTR TAD MIN DCA MINDSP TAD FIRSTW TAD KBUFFP DCA ARG4# TAD ISW1 SZA CLA JMP INTERP TAD HAXIS TAD (-2000 SNA CLA JMP INTERP CALL 1,DISP5 /DISPLAY HORIZONTAL AXIS ARG HAXIS /
/MAGSPY.SB, PAGE 16 / INTERP, CALL 1,ISENS /CHECK IF INTERPOLATION DESIRED ARG (3 SNA CLA JMP JUSTPT TAD EAE /CHECK FOR EAE HARDWARE SZA CLA JMP STRAIT /DISPLAY JUST THE POINTS SUPPLIED JUSTPT, CALL 2,DISP3 ARG LENTHW ARG4, ARG IBUFF JMP HEAD4 /DISPLAY HEADINGS /DISPLAY STRAIGHT LINES BETWEEN POINTS STRAIT, TAD ARG4# DCA ARG5# CALL 2,DISP4 /REQUIRES EAE ARG LENTHW ARG5, ARG IBUFF JMP HEAD4 /DISPLAY HEADINGS / /SUBROUTINES TO SET UP FOR HALF OR FULL SIZED CHARACTERS HALF, 0 TAD CONT1 TAD (34 SPA CLA TAD (-34 DCA CONT1 /# OF LINES TO DISPLAY TAD (261 DCA PONT1 /Y-COORD OF 1ST LINE TAD FIRSTW TAD JBUFFP JMP I HALF /AC POINTS TO 1ST WORD TO BE DISPLAYED FULL, 0 TAD CONT1 TAD (16 SPA CLA TAD (-16 DCA CONT1 TAD (241 DCA PONT1 TAD FIRSTW TAD JBUFFP JMP I FULL
/MAGSPY.SB, PAGE 17 / /DISPLAY OCTAL DIGITS OCTDIG, TAD FIRSTW AND (3774 DCA FIRSTW TAD FIRSTW CIA TAD LASTW CLL RAR CLL RAR CMA DCA CONT1 /# OF LINES TO DISPLAY TAD ISW2 SZA CLA JMP FULSIZ /DISPLAY HALF-SIZED DIGITS JMS HALF DCA ARG6# DLUP1, TAD (-4 DCA CONT2 /4 NUMBERS PER LINE CALL 3,DISP7 /DISPLAY LOC ARG (0 ARG PONT1 ARG FIRSTW TAD (106 DCA PONT2 /X-COORD DLUP2, CALL 4,DSP10 /DISPLAY NUMBERS ARG PONT2 ARG PONT1 ARG ISW1 ARG6, ARG JBUFF INC ARG6# TAD PONT2 TAD (74 DCA PONT2 ISZ CONT2 JMP DLUP2 TAD PONT1 TAD (-20 DCA PONT1 TAD FIRSTW TAD (4 DCA FIRSTW ISZ CONT1 JMP DLUP1 JMP HEAD2 /DISPLAY HEADING /
/MAGSPY.SB, PAGE 18 / /DISPLAY FULL-SIZED DIGITS FULSIZ, JMS FULL DCA ARG7# DLUP3, TAD (-4 DCA CONT2 CALL 3,DISP7 ARG (0 ARG PONT1 ARG FIRSTW TAD (-74 DCA PONT2 DLUP4, CALL 4,DSP10 ARG PONT2 ARG PONT1 ARG ISW1 ARG7, ARG JBUFF INC ARG7# TAD PONT2 TAD (-154 DCA PONT2 ISZ CONT2 JMP DLUP4 TAD PONT1 TAD (-40 DCA PONT1 TAD FIRSTW TAD (4 DCA FIRSTW ISZ CONT1 JMP DLUP3 JMP HEAD2 /
/MAGSPY.SB, PAGE 19 / /DISPLAY 6-BIT ASCII CHARACTERS SIXBIT, TAD FIRSTW AND (3770 DCA FIRSTW TAD FIRSTW CIA TAD LASTW AND (3770 CLL RTR RAR CMA DCA CONT1 /# OF LINES TAD ISW2 SZA CLA JMP FULL6 /DISPLAY HALF-SIZED ASCII JMS HALF DCA ARG8# CLUP1, CALL 3,DISP7 /DISPLAY LOC ARG (0 ARG PONT1 ARG FIRSTW CALL 4,DSP11 ARG (74 ARG PONT1 ARG (10 ARG8, ARG JBUFF TAD ARG8# TAD (10 DCA ARG8# TAD FIRSTW TAD (10 DCA FIRSTW TAD PONT1 TAD (-20 DCA PONT1 ISZ CONT1 JMP CLUP1 JMP HEAD2 /
/MAGSPY.SB, PAGE 20 / /DISPLAY FULL-SIZED ASCII FULL6, JMS FULL DCA ARG9# CLUP2, CALL 3,DISP7 ARG (0 ARG PONT1 ARG FIRSTW CALL 4,DSP11 ARG (-74 ARG PONT1 ARG (10 ARG9, ARG JBUFF TAD ARG9# TAD (10 DCA ARG9# TAD FIRSTW TAD (10 DCA FIRSTW TAD PONT1 TAD (-40 DCA PONT1 ISZ CONT1 JMP CLUP2 JMP HEAD2 /
/MAGSPY.SB, PAGE 21 / /DISPLAY 8-BIT ASCII CHARACTERS /ONLY HALF-SIZED CHARACTERS CAN BE DISPLAYED EIGHTB, TAD FIRSTW AND (3776 DCA FIRSTW TAD LASTW AND (3776 IAC DCA LASTW TAD FIRSTW CIA TAD LASTW IAC DCA LENTHW TAD FIRSTW TAD JBUFFP DCA ARG10# CALL 3,DSP12 ARG (261 ARG LENTHW ARG10, ARG JBUFF JMP HEAD /
/MAGSPY.SB, PAGE 22 / /DISPLAY HEADINGS / /DISPLAY "MAX NNNN" HEAD4, CALL 3,DISP9 ARG (645 ARG (341 ARG TEXT16 CALL 4,DSP10 ARG (715 ARG (341 ARG ISW1 ARG MAXDSP /DISPLAY "MIN NNNN" CALL 3,DISP9 ARG (645 ARG (-377 ARG TEXT17 CALL 4,DSP10 ARG (715 ARG (-377 ARG ISW1 ARG MINDSP /DISPLAY "DISPLAYING WORDS NNNN TO NNNN OF BLOCK NNNN" HEAD, CALL 3,DISP9 ARG (0 ARG (321 ARG TEXT12 CALL 3,DISP7 ARG (252 ARG (321 ARG FIRSTW CALL 3,DISP9 ARG (334 ARG (321 ARG TEXT7 CALL 3,DISP7 ARG (372 ARG (321 ARG LASTW CALL 3,DISP9 ARG (454 ARG (321 ARG TEXT13 CALL 3,DISP7 ARG (606 ARG (321 ARG BLCK JMP HEAD3 /
/MAGSPY.SB, PAGE 23 / /DISPLAY "DISPLAYING BLOCK NNNN" HEAD2, CALL 3,DISP9 ARG (0 ARG (321 ARG TEXT8 CALL 3,DISP7 ARG (252 ARG (321 ARG BLCK /DISPLAY "WORDS" CALL 3,DISP9 ARG (0 ARG (301 ARG TEXT2 /DISPLAY "BLOCK SIZE = NNNN WORDS" HEAD3, CALL 3,DISP9 ARG (0 ARG (341 ARG TEXT1 CALL 3,DISP7 ARG (202 ARG (341 ARG BSIZE CALL 3,DISP9 ARG (264 ARG (341 ARG TEXT2 TAD UFLAG SZA CLA JMP DSUNIT TAD FILE SNA CLA JMP TELTYP /
/MAGSPY.SB, PAGE 24 / /DISPLAY "FILE XXXXXX.XX OCCUPIES BLOCKS NNNN TO NNNN" CALL 3,DISP9 ARG (0 ARG (361 ARG TEXT4 CALL 3,DISP9 ARG (62 ARG (361 ARG FILE CALL 3,DISP9 ARG (226 ARG (361 ARG TEXT6 CALL 3,DISP7 ARG (466 ARG (361 ARG FIRSTB CALL 3,DISP9 ARG (550 ARG (361 ARG TEXT7 CALL 3,DISP7 ARG (606 ARG (361 ARG LASTB JMP TELTYP /DISPLAY "TAPE UNIT NNNN" DSUNIT, CALL 3,DISP9 ARG (0 ARG (361 ARG TEXT3 CALL 3,DISP7 ARG (144 ARG (361 ARG UNIT JMP TELTYP /
/MAGSPY.SB, PAGE 25 / /CHECK TELETYPE FOR USER INPUTS TELTYP, CALL 1,KEYBD ARG JBUFF SNA JMP PLUP /NOTHING TYPED YET TAD (-327 SNA JMP DEC8 /W TYPED TAD (2 SNA JMP USTAR /U TYPED TAD (4 SNA JMP DEC1 /Q TYPED TAD (5 SNA JMP LSTAR /L TYPED TAD (4 SNA JMP HELP /H TYPED TAD (4 SNA JMP DEVICE /D TYPED TAD (2 SNA JMP BSTAR /B TYPED TAD (20 SNA JMP INC8 /2 TYPED IAC SNA CLA JMP INC1 /1 TYPED JMP PLUP /IGNORE ALL OTHER CHARACTERS / /INCREMENT OR DECREMENT CURRENT BLOCK DEC8, TAD (-7 /DECREMENT BY 8 DEC1, TAD (-11 /DECREMENT BY 1 INC8, TAD (7 /INCREMENT BY 8 INC1, IAC /INCREMENT BY 1 TAD BLCK SPA CLA DCA BLCK DCA DFLAG /ZERO DISPLAY FLAG TAD UFLAG SNA CLA JMP READF /READ BLOCK FROM PS/8 DEVICE JMP READL /READ BLOCK FROM LINCTAPE /
/MAGSPY.SB, PAGE 26 / /ROUTINE TO DIVIDE SIGNED # IN AC BY DIVISR, WHICH IS <0. /THE RESULT IS MULTIPLIED BY 400 AND RETURNED IN THE AC. /THE MAGNITUDE OF DIVISR IS >= THAT OF THE # IN THE AC. /THE RESULT IS A NUMBER BETWEEN -377 AND +377 DIVIDE, 0 CLL CML SPA CMA IAC CML DCA DIVDND CMA RAR DCA SIGN DCA QUOT TAD (-11 DCA CONT3 /2**10=400 (OCTAL) DLUP, TAD DIVDND SMA JMP DLUP1A TAD DIVISR JMP DLUP1B DLUP1A, TAD DIVISR SPA JMP DLUP1C DLUP1B, DCA DIVDND INC QUOT DLUP1C, CLA ISZ CONT3 JMP DLUP1D JMP DLUP1E DLUP1D, TAD QUOT CLL RAL DCA QUOT TAD DIVDND CLL RAL DCA DIVDND JMP DLUP DLUP1E, TAD QUOT TAD (-377 SMA CLA TAD (377 ISZ SIGN CIA AABEND, JMP I DIVIDE 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