File COND14.

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

/LAB-8E CONVERT PROGRAM-CONVERTS LAB-8E MS DATA
/AND SINGLE, DOUBLE, AND FLOATING TO SING,DOUB,AND FLOATING.
/
/DEC-8E-ACVTA-A-LA
/
/COPYRIGHT 1972
/DIGITAL EQUIPMENT CORPORATION
/MAYNARD, MASSACHUSETTS 01754
/

/FILE CON.14 /CONVERT PROGRAM FOR LAB-8E PROGRAMS /RUNNING UNDER PS-8 /LAB-8E CONVERT SET1= CLL CLA IAC SET2= CLL CLA IAC RAL SET3= CLL CLA IAC CML RAL SET4= CLL CLA IAC RTL SET6= CLL CLA IAC CML RTL SETM2= CLL CLA CMA RAL SETM3= CLL CLA CMA RTL FIELD 0 *7200 /TELETYPE DEVICE HANDLES AND /INPUT FILE DEVICE HANDLER. /7200 - 7577 *6600 /OUTPUT DEVICE HANDLER. /6600 - 7177 *5200 BUFJOB, 0 /BUFFER FOR JOB LIST OF AVERAGER. *5600 BUFOUT, 0 /BUFFER FOR OUTPUT. *6200 BUFIN, 0 /BUFFER FOR INPUT. FIELD 1 *20 OUTTYP, 0 /TYPE = 1,2,3,4,5,6,7 FOR F4, F2 INTYP, 0 /SI, DO, DA, AV, HI. SWITCH, 0 0 /SWITCH VALUES,0 AFTER LAST VALUE. 0 0 0 0 ENTRYI, 0 /ENTRY POINT TO INPUT DEVICE HANDLES ENTRYO, 0 /ENTRY POINT TO OUTPUT D.H. FILESZ, 0 /FILE SIZE OF INPUT FILE. READNO, 0 /NUMBER OF CHARACTERS IN READ BUF. WRITNO, 0 /NUMBER OF CHARACTERS ON WRITE BUF. CONVTY, 0 /CONVERT TYPE FOR CONVERT ROUTINE CONINP, 0 /INPUT & OUTPUT FOR CONVERT ROUTINE. 0 0 0 0 0 BLKOSZ, 0 /LOGICAL SIZE OF THE OUTPUT BLOCK. BLKISZ, 0 /LOGICAL SIZE OF THE INPUT BLOCK. TEMP1, 0 TEMP2, 0 TEMP3, 0 BLKIN, 0 /INPUT BLOCK NUMBER. BLKOUT, 0 /OUTPUT BLOCK NUMBER FILOSZ, 0 /-SIZE OF OUTPUT FILE. AVHBKA, 0 /ADDRESS OF NEXT HEADER BLOCK. AVHBBA, 0 /HEADER BLOCK BUFFER ADDRESS AVHBBC, 0 /HEADER BLOCK BUFFER COUNT. AVTMP1, 0 AVTMP2, 0 AVTMP3, 0 AVTMP4, 0 AVBACT, 0 /BLOCK ADDRESS OF # OF DATA POINTS /FOR AVERAGE AVLACT, 0 /LOCATION IN BUFFER OF # OF DATA /POINTS FOR AVERAGE FIOBUF, 0 /OUTPUT BUFFER POINTER. FIOBFS, 0 /SAVED LAST LOC. WRITTEN TO MS. AVDQFG, 0 /DAQUAN FLAG TO CYCLE ON DATA AVDALK, 0 /FLAG TO DETERMINE IF THERE IS A /LINKED DATA BLOCK. AVDATY, 0 /TYPE OF DATA GOING OUT, 1,2, OR 3 /FOR AVG, CONF.L. OR TREND AVDTYV, 0 /DATA TYPE VARIABLE, - DATA TYPE AVDQBS, 0 /BLOCK SAME FOR DAQUAN REREAD. AVDQLS, 0 /LOCATION SAVE FOR DAQUAN REREAD. AVF2SP, 0 /FORTRAN 2 SINGLE PRECISION POSITION PT. SIDOFG, 0 /=0,FLAG OFF;=1,THEN A 12 BIT # /IS CONSIDERED POSITIVE 0-4095. DARDS, 0 /END TELE INPUT CHAR. CRDGET, 0 /# OF NUMBERS TO READ /FOR SI AND DO ONLY. 0 CRDSKP, 0 /# OF NUMBERS TO SKIP, /FOR SI AND DO ONLY. 0 REDSF, 0 /DONE FLAG FOR REDSU ROUTINE. *2000 START, CDF 0 CLA CLL TAD (4003 /SET JOB CONTROL WORD DCA I (7746 CDF 10 JMS CRLF JMS I (7700 /LOCK IN USR 10 JMS I (200 /CALL COMMAND DECODER 5 0 0
TAD (7201 DCA DHCT4 TAD I (7617 /LOAD INPUT AND OUTPUT DEVICE HANDLERS. SNA /TEST FOR BAD COMMAND JMP COMERR AND (17 JMS I (200 1 DHCT4, 7201 /ENTRY POINT TO INPUT HANDLER JMP ERR /HANDLER AT 7200 FIELD 0 TAD (6601 DCA DHCT5 TAD I (7600 /LOAD OUTPUT HANDLER. SNA /TEST FOR BAD COMMAND. JMP COMERR AND (17 JMS I (200 1 DHCT5, 6601 /ENTRY POINT FOR OUTPUT HANDLER. JMP ERR /IS AT 6600 OF FIELD 0. TAD (7601 DCA DHCT6 TAD I (7600 /CREATE OUTPUT FILE. JMS I (200 3 DHCT6, 7601 /RETURN STARTING BLOCK FOR OUTPUT. DHCT7, 0 /RETURN FILE SIZE JMP ERR JMS I (200 /UNLOCK USR. 11
CLL CLA KCC TAD (252 JMS PRTCH /PRINT VALUE TAD (-2 DCA 15 JMS TTYIN1 /SET UP TTY READ. TAD (-6 /DETERMINE OUTPUT TYPE. CON3, DCA 10 DCA 14 TAD (COMLST-1 /SET LIST ADDRESS DCA 11 JMS TTYINP /READ FIRST CHAR. CLL RTL RTL RTL DCA 12 JMS TTYINP /2ND CHAR. TAD 12 DCA 12
CON2, TAD 12 /COMPARE INPUT TO LIST. CIA TAD I 11 ISZ 14 /SET TYPE. SNA CLA /SEARCH FOR COMPARISON JMP CON1 ISZ 10 JMP CON2 JMP COMERR CON1, ISZ 15 /TEST IF DONE. JMP .+2 JMP CON4 TAD 14 /DO TEST ON INPUT TYPE DCA OUTTYP JMS TTYINP /READ < /INPUT IS IN THE FORM XX<XX/X CLA TAD (-11 JMP CON3 CON4, TAD 14 DCA INTYP TAD (SWITCH DCA TEMP1 CON5, DCA I TEMP1 JMS TTYINP /READ / TAD (-15 SNA CLA JMP CON6 JMS TTYINP /READ SWITCH. DCA I TEMP1 /STORE INPUT SWITCHES. ISZ TEMP1 JMP CON5 CON6, JMS CRLF TAD DHCT4 DCA ENTRYI TAD DHCT5 DCA ENTRYO TAD I (7617 /GET FILE LENGTH OF INPUT FILE CMA TAD (20 JMP DHCT13 PAGE DHCT13, AND (7760 CLL RTR RTR CIA DCA FILESZ /SAVE NEG. FILE SIZE DCA READNO /0 BUFFER IN COUNT TAD I (7620 DCA BLKIN /SET INPUT FILE BLOCK. DCA WRITNO /0 BUFFER OUT COUNT DCA SIDOFG /0 12 BIT # POS. FLAG.
DHCT12, CMA /SET OUTPUT LOGICAL FILE SIZE TAD OUTTYP /F4 USES 85, FLOATING PER BLOCK. SZA CLA IAC TAD (377 /255 DECIMAL DCA BLKOSZ CMA /SET INPUT LOGICAL FILE SIZE TAD INTYP SZA CLA /F4=1, F2=2, SI=3, DO=4 IAC /DA=5, AV=6, HI=7 TAD (377 DCA BLKISZ SETM2 TAD OUTTYP /TEST FOR FORTRAN 2 SINGLE SNA /PRECISION OR FLOATING POINT OUTPUT. JMP DHCT11 TAD (-4 SZA CLA JMP DHCT10 DHCT11, TAD (374 /SET BLOCK SIZE=252 DCA BLKOSZ DHCT10, TAD DHCT6 /SET OUTPUT BLOCK ADDRESS DCA BLKOUT TAD DHCT7 /SAME OUTPUT FILE SIZE DCA FILOSZ DCA CRDGET /0 # OF POINTS TO READ /FOR SI AND DO ONLY. DCA CRDGET+1 JMP SWITVA /GET SWITCHES. DHCT14, TAD JMPTYP /CREATE JMP TO INPUT ROUTINE TAD INTYP DCA .+1 0 /JUMP TO ROUTINE. JMPTYP, JMP I . JMPLST, F4 /=1 F2 /=2 DO /=3 SI /=4 SI /=5, DA FS /=6 HI /=7 AV /=10 CO /=11 COMLST, 0664 /F4 0662 /F2 0417 /DO 2311 /SI 0401 /DA 0623 /FS 1011 /HI 0126 /AV 0317 /CO FILDON, TAD WRITNO /TEST IF LAST BLOCK WRITTEN SNA CLA JMP FILD1 JMS FILOUT /WRITE THE LAST BLOCK 1 FILD1, TAD DHCT6 /GET SIZE OF FILE CIA TAD BLKOUT DCA FILD2 TAD I (7600 /CLOSE FILE AND (17 JMS I (7700 4 7601 FILD2, 0 JMP ERR CDF 10 /RESTART PROGRAM JMP START
COMERR, IAC /COMMAND ERROR. ERRRW, IAC /READ OR WRITE ERROR NOROOM, IAC /DEVICE FULL. ERR, DCA ERRM /ERROR 0, CLOSE, CREATE, HANDLER JMS CRLF JMS I (7700 7 ERRM, 0 SI, TAD (SICOD-1 /SETUP CONVERT TYPE JMS SETCON DCA REDSF /0 COUNT DONE FLAG. SI1, JMS REDSU2 /READ INPUT JMS CONVRT /OUTPUT DATA JMP SI1 SICOD, 4 3 2 1 1 15 CRLF, 0 /OUTPUT A CR. LF. CLA TAD (215 JMS PRTCH TAD (212 JMS PRTCH JMP I CRLF PAGE HI, TAD (HICOD-1 /SETUP CONVERT TYPE JMS SETCON JMS CREAD /READ FIRST BLOCK OF -1 /HISTOGRAM HLT ISZ SIDOFG /SET FLAG,12 BIT # IS ALL POS 0-4095. CDF 0 TAD I (BUFIN+23 /GET - SIZE OF 0TH HISTOGRAM DCA CRDGET+1 /SET # OF POINTS TO TRANSFER. TAD CRDGET+1 CIA DCA CONINP TAD I (BUFIN+57 /GET 0TH HISTOGRAM-BIN WIDTH CIA DCA CONINP+1 TAD I (BUFIN+25 /GET - SIZE OF HISTOGRAM TAD CRDGET+1 /ADD TO POINTS TO TRANS. DCA CRDGET+1 TAD I (BUFIN+25 CIA DCA CONINP+2 CDF 10 JMS HI6TST CDF 0 TAD I (BUFIN+21 /GET - BINW WIDTH OF HISTOG. CIA DCA CONINP TAD I (BUFIN+30 /GET MIN TIME CIA DCA CONINP+1 TAD I (BUFIN+56 CMA DCA CONINP+2 /OUTPUT A ORDER FOR PST. CDF 10 JMS HI6TST DCA SIDOFG /0 12 BIT POS FLAG. CMA /DONE WITH BLOCK 1 DCA READNO /READ NEXT BLOCK AND JMS CREAD -1 HLT TAD (-41 /SKIP 132 WORDS. DCA AVTMP1 HI3, JMS CREAD -4 HLT ISZ AVTMP1 JMP HI3 CLA CMA /SET HIGH ORDER COUNT. DCA CRDGET DCA REDSF /0 COUNT DONE FLAG. HI1, JMS REDSU2 /READ DATA FROM /THE HISTOGRAMS TAD HSCAL /TEST FOR SCALE SWITCH SNA CLA JMP HI2 TAD CONINP /SCALE DATA CLL RAR DCA CONINP TAD CONINP+1 CLL RAR
DCA CONINP+1 TAD CONINP+2 CLL RAR DCA CONINP+2 HI2, JMS CONVRT JMP HI1 HI6TST, 0 TAD OUTTYP /TEST FOR FORTRAN 2 TAD (-6 /SINGLE PRECISION OUTPUT SZA CLA JMP HI6T1 HI6T2, JMS CONVRT /OUTPUT IN PACKED /FORTRAN 2 FORMAT. JMP I HI6TST HI6T1, TAD CONINP+1 /SAVE OTHER 2 VALUUES DCA HI6TT1 TAD CONINP+2 DCA HI6TT2 JMS CONVRT /OUTPUT EACH VALUE /BY ITSELF TAD HI6TT1 DCA CONINP JMS CONVRT TAD HI6TT2 DCA CONINP JMP HI6T2 HI6TT1, 0 HI6TT2, 0 HSCAL, 0 FS, TAD (FSCOD-1 /SET CONVERT TYPE. JMS SETCON DCA UNPT1 /0 UNPACK ASCII SWITCH. FS1, JMS UNPK32 /READ 1 WORD. -1 JMP FILDON JMS CONVRT JMP FS1 F2, TAD (F2TAD-1 /TEST FOR COMMAND JMS SETCON DCA UNPT1 F2A, JMS UNPK32 -3 /READ 3 WORDS FOR FLOATING INPUT. JMP FILDON /FILE DONE RETURN. JMS CONVRT /CALL CONVERT JMP F2A /GET NEXT FLOATING DATA F2TAD, 13 0 12 11 11 0
PAGE AV, TAD (BUFJOB /READ BLOCK 1 INTO 6200 DCA CRBUFP JMS CREAD -1 HLT TAD BLKIN IAC DCA AVHBKA /SAVE NEXT HEADER BLOCK /ADDRESS TAD (BUFJOB+2 /SET POINTER TO BUFFER DCA AVHBBA TAD (-375 DCA AVHBBC TAD (BUFIN /RESET THE READ BUFFER DCA CRBUFP AV1, ISZ BLKIN DCA READNO CDF 0 TAD I (BUFJOB+1 /CHECK IF THERE IS CDF 10 SNA CLA /ANOTHER HEADER BLOCK JMP AV2 JMS CREAD -1 HLT JMP AV1 AV2, DCA AVF2CT /0 STORE PACK COUNTER AV21, TAD (HICOD-1 /SET UP CONVERT TYPE. JMS SETCON JMS AVRJLS /READ 1ST JOB LIST CHAR. SNA /TEST FOR END OF JOB LIST. JMP AV22 DCA TEMP1 TAD TEMP1 /SET 1ST OUTPUT WORD 1 IF SPA CLA /LOW RESOLUTION IAC JMS AVSTOU TAD TEMP1 /SAVE CHANNEL #. AND (3700 CLL RTR RTR RTR JMS AVSTOU JMS AVRJLS /READ 2ND JOB LIST CHAR. DCA AVTMP1 TAD AVTMP1 /DETERMINE DATA TYPE AND (7400 CLL RTL RTL RAL DCA AVDATY TAD AVDATY /SAVE DATA TYPE JMS AVSTOU /OUTPUT DATA TAD AVTMP1 /GET SORT CODE AND (377 JMS AVSTOU JMS AVRJLS /READ 3RD JOB LIST CHAR. CIA /# OF POINTS, RECP DCA AVTMP1 /AS POS. NUMBER. TAD AVTMP1 JMS AVSTOU
TAD WRITNO /TEST IF BLOCK WAS SNA CLA /WRITTEN CMA TAD BLKOUT DCA AVBACT /SAVE BLOCK OF # OF POINTS DCA TEMP1 TAD OUTTYP /CALCULATE LOCATION TO TAD (-3 /WRITE INTO. SMA SZA JMP AV31 /DETERMINE IF SINGLE SZA CLA /DOUBLE OR FLOATING OUTPUT IAC IAC DCA TEMP1 AV31, SETM2 /TEST FOR F2 FLOATING OUTPUT. TAD OUTTYP SNA CLA IAC /ADJUST ADD DECREMENT. TAD TEMP1 /FOR 4 WORDS IF SO. DCA TEMP1 TAD TEMP1 /SUBTRACT FROM LAST CIA /LOCATION WRITTEN. TAD FIOBFS DCA AVLACT TAD OUTTYP /TEST IF FORTRAN 2. TAD (-6 /SINGLE PRECISION OUTPUT SZA CLA JMP AV4 TAD AVF2CT /CALCULATE POSITION OF ADD TAD (2 /INSIDE 3 VALUES FOR DCA AVF2SP /THE # OF POINTS TAD AVF2CT /CHANGE BLOCK ADDRESS SZA CLA /AND ADDRESS OF 4 WORDS JMP AV32 /OF 3/2 PACKED WORDS TAD AVLACT /AVBACT IS THE BLOCK TAD (-3 /ADDRESS DCA AVLACT /AVLACT IS THE ADD. OF JMP AV4 /THE 4 WORD PACKET AV32, TAD WRITNO /AVF2SP IS THE POSITION SZA CLA /OF THE WORD DESIRED JMP AV33 /WITHIN THE 3 WORD TAD (BUFOUT /CONVERTED PACKET. DCA AVLACT ISZ AVBACT JMP AV4 AV33, ISZ AVLACT JMP AV4 PAGE AV4, TAD (-4 DCA TEMP1 AV3, JMS AVRJLS /READ UP TO THE NEXT CLA CLL ISZ TEMP1 /JOB LIST JMP AV3 JMS CREAD /READ # OF SWEEPS -1 HLT TAD CONINP /WRITE # OF SWEEPS. JMS AVSTOU TAD READNO /TEST FOR LAST CHAR IN INPUT BLOCK. SNA CLA CMA TAD BLKIN /SAVE THE BLOCK DCA AVDQBS /ADDRESS FOR DAQUAN /REREAD. /ADDRESS IS FIXED. DCA AVDQFG /SET DAQUAN CYCLE FLAG DCA AVDALK /CLEAR DATA LINK FLAG. TAD AVTMP1 CIA DCA AVTMP2 /SET COUNT OF # POINTS IN DATA BLOCK. TAD AVTMP2 /SAVE LENGTH OF 1ST DATA BLOCK. DCA AVTMP4
AV7, TAD AVDATY /GET DATA TYPE CIA DCA AVDTYV TAD OUTTYP /TEST FOR OUTPUT TYPE TAD (-5 SNA CLA JMP AVDQA JMS CREAD /STANDARD OUTPUT -2 /READ AVERAGE VALUE HLT /NOTE IF OUTPUT IS SINGLE TAD (AVCOD1-1 /PRECISION THE HIGH ORDER JMS SETCON /WILL BE TAKEN AS DESIRED. /SET CONVRT TYPE TAD CONINP JMS AVSTOU ISZ AVDTYV /TEST DATA TYPE JMP .+2 JMP AV6 JMS CREAD /READ CONFIDENCE LIMITS -2 /HAS SAME CONVERT TYPE HLT TAD CONINP JMS AVSTOU ISZ AVDTYV /TEST DATA TYPE FOR TREND JMP .+2 JMP AV6 JMS CREAD -1 HLT TAD (HICOD-1 /SET CONVERT TYPE FOR JMS SETCON /SINGLE INPUT TAD CONINP JMS AVSTOU AV6, ISZ AVTMP2 JMP AV7 JMS CREAD /READ LINK WORD -1 HLT TAD CONINP /TEST LINK BLOCK SNA CLA JMP AV8 /NO MORE LINK BLOCKS TAD AVDQFG /TEST FOR DAQUAN CYCLE. SZA CLA JMP AV12 TAD CONINP CIA /SAVE # OF POINTS IN TAD AVTMP1 /LINK DATA BLOCK AND DCA AVTMP1 /ADD TO TOTAL COUNT. AV12, TAD CONINP /SET COUNT FOR THIS DCA AVTMP2 /DATA BLOCK. IAC /SET DATA LINK FLAG DCA AVDALK TAD READNO /SET TO READ NEXT SNA CLA /BLOCK JMP AV7 DCA READNO ISZ BLKIN JMP AV7
AV8, TAD OUTTYP /TEST FOR DAQUAN TAD (-5 SZA CLA JMP AV10 /NOT DAQUAN OUTPUT. ISZ AVDQFG /TEST CYCLE FLAG, IF /NEW VALUE=TYPE THEN TAD AVDQFG /DONE CIA TAD AVDATY SNA CLA JMP AV10 TAD AVDQBS /REREAD BLOCK TO GET DCA BLKIN /NEXT DATA FROM A POINT DCA READNO /SET TO READ FROM /BEGINNING OF BLOCK IAC /NEGATE FILE SIZE LIMIT DCA FILESZ JMS CREAD /THIS READS # OF SWEEPS -1 HLT TAD AVTMP4 /SET COUNT OF 1ST DATA BLOCK. DCA AVTMP2 JMP AV7 PAGE AVDQA, IAC /SET CONVERT TYPE DCA CONVTY JMS CREAD /READ AVG VALUE -2 HLT TAD AVDQFG /TEST CYCLE FLAG SNA CLA /TO CONVERT. JMS CONVRT ISZ AVDTYV /TEST FOR END OF DATA POINT JMP .+2 JMP AV6 JMS CREAD /READ CONFIDENCE LIM -2 HLT CMA TAD AVDQFG /TEST TO WRITE CON. LIM. SNA CLA JMS CONVRT ISZ AVDTYV /TEST FOR END OF DATA POINT JMP .+2 JMP AV6 JMS CREAD /READ TREND -1 HLT TAD (-2 /TEST TO WRITE TREND TAD AVDQFG SNA CLA JMS CONVRT JMP AV6 AV10, TAD AVDALK /TEST IF THERE WAS SNA CLA /A LINK BLOCK JMP AV13 DCA AVTMP2 TAD AVBACT /YES, TEST IF BLOCK CIA /WITH # OF POINTS ADD TAD BLKOUT /IS STILL IN CORE SNA CLA JMP AV14 /YES TAD AVBACT /NO READ BLOCK IN DCA AV15
CIF 0 JMS I ENTRYO 0200 BUFIN AV15, 0 JMP ERRRW TAD (400 /SET TO ADJUST LOC FROM DCA AVTMP2 /BUFOUT TO BUFIN. AV14, TAD AVLACT /ADJUST ADD OF NUMBER TO BE UPDATED TAD AVTMP2 /W.R.T. BUF. ADD. DCA AVTMP3 /THIS PART WILL STORE THE ACTUAL NUMBER /OF DATA POINTS IN THE OUTPUT FILE /SINCE THE BLOCK IN WHICH IT GOES /PROBABLY HAS BEEN WRITTEN. TAD OUTTYP /TEST FOR SINGLE FORTRAN 2 TAD (-6 SNA CLA JMP AV17 TAD AVTMP1 DCA CONINP /SET # OF POINTS IN AVERAGE TO BE CONVERTED. TAD OUTTYP /SET OUTPUT TYPE. CIA DCA TEMP2 ISZ TEMP2 /TEST FOR SF4 JMP AV26 JMS SDSUB JMS DF4SUB /CONVERT TO F4 TAD (-3 JMP AV25 AV26, ISZ TEMP2 /TEST FOR SF2 JMP AV27 JMS SDSUB /CONVERT TO F2 FLOATING. JMS DF4SUB JMS F4F2SU JMP AV29 AV27, ISZ TEMP2 /TEST FOR SD JMP AV28 JMS SDSUB SETM2 JMP AV25 AV28, CMA JMP AV25
AV17, TAD (-4 /GET 4 WORD PACKED DCA TEMP1 /PACKET OF DATA TAD (CONINP-1 DCA 12 CMA TAD AVTMP3 DCA 13 AV18, CDF 0 TAD I 13 CDF 10 DCA I 12 ISZ TEMP1 JMP AV18 JMS UNPACK /CONVERT TO 3 WORD /6 BIT ASCII TAD (CONINP /GET POINTER TO WORD TAD AVF2SP /WITHIN 3 WORD PACKET DCA TEMP1 TAD AVTMP1 /STORE # OF POINTS IN AVERAGE DCA I TEMP1 JMP AV24 PAGE AV24, JMS PACK32 /REPACK IN 3/2 ASCII AV29, TAD (-4 /MOVE BACK TO AV25, DCA TEMP1 /BUFFER TAD (CONINP-1 DCA 12 CMA TAD AVTMP3 DCA 13 AV19, TAD I 12 CDF 0 DCA I 13 CDF 10 ISZ TEMP1 JMP AV19 AV16, TAD AVBACT /TEST IF BUFFER IS CIA /STILL IN CORE TAD BLKOUT SNA CLA JMP AV13 /YES TAD AVBACT /WRITE DATA BACKOUT. DCA AV20 CIF 0 JMS I ENTRYO 4200 BUFIN
AV20, 0 JMP ERRRW AV13, TAD READNO /SET TO READ THE SNA CLA /NEXT BLOCK JMP AV21 DCA READNO ISZ BLKIN JMP AV21 AV22, CLA CMA /OUTPUT -1 TO END FILE. JMS AVSTOU TAD AVF2CT /OUTPUT ANY PARTIAL SNA CLA /FORTRAN 2 SINGLE JMP AV23 /PRECISION DATA JMS AVF2SU JMP AV22 AV23, JMP FILDON AVSTOU, 0 DCA CONINP TAD OUTTYP /TEST FOR FORTRAN 2 TAD (-6 /SINGLE PRECISION SZA CLA JMP AVSTU2 /CALL FORTRAN 2 PARK JMS AVF2SU /ROUTINE JMP I AVSTOU AVSTU2, JMS CONVRT /OUTPUT VALUE JMP I AVSTOU AVF2SU, 0 /ROUTINE TO HOLD DATA /FOR PACKING TAD AVF2CT /TEST IF BUFFER NEEDS SZA CLA /TO BE RESET JMP AVF2S1 TAD (-3 /YES DCA AVF2CT TAD (AVF2BU DCA AVF2BP AVF2S1, TAD CONINP /STORE DATA DCA I AVF2BP ISZ AVF2BP ISZ AVF2CT /TEST FOR 3 CHAR. JMP I AVF2SU TAD AVF2BU /STORE CHARACTERS FOR DCA CONINP /CONVERT TAD AVF2BU+1 DCA CONINP+1 TAD AVF2BU+2 DCA CONINP+2 JMS CONVRT JMP I AVF2SU AVF2BU, 0 0 0 AVF2CT, 0 AVF2BP, 0
AVRJLS, 0 ISZ AVHBBC /TEST IF HEADER BUF EMPTY JMP AVRJL2 TAD AVHBKA /YES STORE BLOCK TO READ. DCA AVRJL1 CIF 0 /READ BLOCK JMS I ENTRYI 0200 BUFJOB AVRJL1, 0 JMP ERRRW TAD (BUFJOB+2 /SET POINTER AND COUNT DCA AVHBBA TAD (-375 DCA AVHBBC ISZ AVHBKA /SET TO NEXT BLOCK ADD. AVRJL2, CDF 0 TAD I AVHBBA CDF 10 ISZ AVHBBA JMP I AVRJLS AVCOD1, 10 7 6 1 1 15 PAGE DO, TAD (DOCOD-1 /SET UP CONVERT TYPE JMS SETCON TAD OUTTYP /TEST FOR FORTRAN 2 TAD (-6 /SINGLE PRECISION OUTPUT SNA CLA JMP DO1 DO2, JMS CREAD /READ A DOUBLE PRECISION -2 /VALUE. JMP FILDON JMS DOCNO JMP FILDON JMS CONVRT JMP DO2 DO1, TAD (-3 /MUST READ 3 VALUES DCA DOV1 TAD (DOSTR DCA DOV2 DO3, JMS CREAD -2 JMP DO4 JMS DOCNO /TEST FOR END OF DATA. JMP DO4 TAD CONINP+1 DCA I DOV2 /SAVE THE SINGLE PRECISION ISZ DOV2 /PART OF THE NUMBER ISZ DOV1 JMP DO3 TAD DOSTR /PUT IN CONVRT DCA CONINP /BUFFER TAD DOSTR+1 DCA CONINP+1 TAD DOSTR+2 DCA CONINP+2 JMS CONVRT JMP DO1
DO4, TAD DOV1 /TEST IF LAST READ HAD CIA /ANYTHING IN IT. TAD (-3 SNA CLA JMP FILDON /NO JMS CONVRT /OUTPUT PARTIAL VALUE JMP FILDON DOV1, 0 DOV2, 0 DOSTR, 0 0 0 DOCOD, 10 7 6 5 5 15 DOCNO, 0 /SUB. TO TEST FOR END OF DATA ISZ CRDGET+1 /FO R SWITCH. JMP DOCNO1 ISZ CRDGET JMP DOCNO1 JMP I DOCNO DOCNO1, ISZ DOCNO JMP I DOCNO F4, TAD (F4COD-1 /SET CONVERT TYPE. JMS SETCON F4A, JMS CREAD -3 JMP FILDON /FILE DONE RETURN JMS CONVRT JMP F4A REDSU2, 0 /READ 1 OR 3 WORDS /FROM INPUT FILE. TAD REDSF /TEST IF COUNT FLAG SET. SZA CLA JMP FILDON /DONE IF SO. TAD OUTTYP TAD (-6 SNA CLA TAD (-2 /SET 3 WORD FOR FORTRAN TAD (-1 /2 SINGLE PRECISION. DCA REDS1 JMS CREAD REDS1, 0 JMP REDS2 REDS3, JMS DOCNO /TEST FOR END OF DATA BY COUNT JMP REDS4 /TEST IF DONE. ISZ REDS1 JMP REDS3 JMP I REDSU2 REDS4, ISZ REDSF /SET COUNT DONE FLAG. TAD OUTTYP /TEST FOR FS OUTPUT. TAD (-6 SZA CLA JMP FILDON /DONE IF NOT. SET3 /TEST FOR PARTIAL DATA. TAD REDS1 SNA CLA JMP FILDON /NO MORE DATA TO OUTPUT. JMP I REDSU2 /PARTIAL FS DATA TO OUTPUT. REDS2, TAD REDS1 /TEST IF ANY CHAR. GOTTEN ON READ. CIA TAD 10 SNA CLA JMP FILDON JMP I REDSU2 SETCON, 0 /SETUP CONVRT TYPE TAD OUTTYP DCA TEMP1 TAD I TEMP1 SNA JMP COMERR DCA CONVTY JMP I SETCON
PAGE FILOUT, 0 /ROUTINE TO STORE IN THE /OUTPUT BUFFER AND WRITE /THE DATA. TAD I FILOUT SPA /TEST FOR FILE CLOSE. JMP FIL9 CLA CMA DCA 10 JMP FIL8 FIL9, DCA 10 TAD (CONINP-1 DCA 11 FIL2, TAD FILOSZ SNA CLA JMP NOROOM /FILE IS FULL. TAD WRITNO /TEST IF OUTPUT BUFFER NEEDS SZA CLA /TO BE RESET. JMP FIL1 TAD (BUFOUT /SET BUFFER START. DCA FIOBUF TAD BLKOSZ /SET BUFFER SIZE CIA DCA WRITNO FIL1, TAD I 11 /STORE DATA IN OUTPUT BUFFER. CDF 0 DCA I FIOBUF CDF 10 TAD FIOBUF /SAVE LAST LOCATION DCA FIOBFS /WRITTEN FOR AV ROUTINE ISZ FIOBUF ISZ WRITNO /TEST IF BUFFER FULL JMP FIL3 FIL8, SETM2 TAD OUTTYP /TEST FOR FORTRAN 2 SNA /SINGLE OR FLOATING. JMP FIL7 TAD (-4 SZA CLA JMP FIL4 FIL7, TAD (AVF2EN-1 /MOVE BLOCK DCA 12 /ENDING TO BLOCK TAD (-4 DCA 13 FIL5, TAD I 12 CDF 0 DCA I FIOBUF CDF 10 ISZ FIOBUF ISZ 13 JMP FIL5
FIL4, TAD BLKOUT /SET ADD OF BLOCK TO WRITE TO. DCA FILADD CIF 0 /WRITE DATA. JMS I ENTRYO 4200 BUFOUT /BUFFER AT BUFOUT OF FIELD 0. FILADD, 0 JMP ERRRW ISZ FILOSZ /TEST FOR FILE FULL CLA ISZ BLKOUT /SET NEXT BLOCK TO WRITE CLA FIL3, ISZ 10 /TEST IF DONE JMP FIL2 ISZ FILOUT JMP I FILOUT AVF2EN, 6300 /F2 FLOATING OUTPUT IS 63A6, 2A2, CR. LF. 0300 /F2 SINGLE OUTPUT IS 189A2,2A2,CR.LF. 4300 /2A2 PART IS DUMMY OUTPUT. 5215 CREAD, 0 /READS FROM THE INPUT FILE TAD I CREAD DCA 10 TAD (CONINP-1 DCA 11 ISZ CREAD CR5, TAD FILESZ /TEST IF FILE DONE SNA CLA JMP I CREAD TAD READNO /TEST IF ANY CHARACTERS IN BUFFER SZA CLA JMP CR1 CR3, TAD BLKIN DCA CRBLK /STORE BLOCK TO READ. CIF 0 /READ THE NEXT BLOCK JMS I ENTRYI 0200 /READ 2 RECORDS INTO FIELD 0
CRBUFP, BUFIN /AT BUFIN CRBLK, 0 JMP ERRRW TAD BLKISZ /SET BLOCK SIZE CIA DCA READNO TAD (BUFIN /SET BUFFER POINTER. DCA CRBUF CR1, CDF 0 TAD I CRBUF /GET VALUE CDF 10 DCA I 11 ISZ CRBUF CR2, ISZ READNO /TEST IF BUFFER EMPTY JMP CR4 ISZ BLKIN /YES, INCREMENT BLOCK ADD. CLA ISZ FILESZ /TEST FOR LAST BLOCK CLA CR4, ISZ 10 /TEST IF ALL WORDS GOTTON JMP CR5 ISZ CREAD /YES NORMAL EXIT JMP I CREAD CRBUF, 0
PAGE UNPK32, 0 /UNPACKS 3/2 ASCII FROM FORTRAN /2 AND STORES DATA AS ASCII /THEN CHANGES IT INTO PACKED 6 ASCII TAD I UNPK32 DCA UNPCT /SAVE # OF WORDS WANTED. TAD (UNPBF2 /SET STORAGE BUF. FOR RETURN WORDS. DCA UNPT3 CMA DCA UNPT4 /SET 6 BIT ASCII PACK FLAG. UNP7, TAD UNPT1 /TEST TO READ MORE DATA. SZA CLA JMP UNP2 JMS CREAD /READ 4 WORDS OF 3/2 PACKED DATA. -4 JMP UNP6 /END OF INPUT FILE. TAD (CONINP DCA UNPT2 TAD (UNPBUF-1 DCA 11 SETM2 DCA 12 UNP1, TAD I UNPT2 /UNPACK INPUT INTO ASCII. AND (377 DCA I 11 TAD I UNPT2 AND (7400 CLL RTR RTR DCA TEMP1 /SAVE TOP 4 BITS. ISZ UNPT2 /GET 2ND WORD. TAD I UNPT2 AND (377 DCA I 11 /STORE NEXT 8 BIT ASCII. TAD I UNPT2 AND (7400 CLL RTL RTL RAL TAD TEMP1 DCA I 11 /STORE NEXT 8 BIT ASCII. ISZ UNPT2 /POINT TO NEXT INPUT WORD. ISZ 12 /TEST TO DO 2ND 2 WORDS. JMP UNP1 TAD (-6 DCA UNPT1 TAD (UNPBUF DCA UNPT2 /SET COUNTERS TO USE 8 BIT ASCII. UNP2, TAD I UNPT2 /TEST FOR CR. LF. ^Z TAD (-215 SNA JMP UNP4 TAD (215-212 SNA JMP UNP4 TAD (212-232 SNA CLA JMP UNP6 /END OF FILE. TAD I UNPT2 /COMBINE 2 8 BIT ASCII AND (77 /INTO 1 WORD 6 BIT PACKED. ISZ UNPT4 JMP UNP8 CLL RTL RTL RTL DCA I UNPT3 JMP UNP4 UNP8, TAD I UNPT3 DCA I UNPT3 ISZ UNPT3 CMA DCA UNPT4 ISZ UNPCT /TEST REQUIRED COUNT CLA UNP4, ISZ UNPT2 ISZ UNPT1 /TEST TO READ MORE DATA. CLA TAD UNPCT /TEST IF DONE SZA CLA JMP UNP7 TAD I UNPK32 /MORE OUTPUT DATA TO CONINP BUF. DCA UNPCT TAD (UNPBF2-1 DCA 11 TAD (CONINP-1 DCA 12 UNP5, TAD I 11 DCA I 12 ISZ UNPCT JMP UNP5 ISZ UNPK32 UNP6, ISZ UNPK32 /END OF FILE EXIT. JMP I UNPK32 UNPBF2, 0 0 0 UNPT3, 0 UNPCT, 0 UNPT1, 0 UNPT2, 0 UNPT4, 0 UNPBUF, 0 0 0 0 0 0
PAGE CONVRT, 0 TAD CONVTY /JUMP TO CONVERT ROUTINE TAD CONJPL DCA .+1 0 CONJPL, JMP I . SS /CONVTY=1 SD /=2 SF2 /=3 SF4 /=4 DS /=5 DD /=6 DF2 /=7 DF4 /=10 F2S /=11 F2D /=12 F2F4 /=13 F4F2 /=14 SF2S /=15 F4S /=16 F4D /=17 SS, JMS FILOUT /SINGLE INPUT IS PUT IN CONINP -1 /DOUBLE INPUT IS PUT IN CONINP JMP I CONVRT SD, JMS SDSUB /AND CONINP+1. /FLOATING IS INPUT IN FIRST /3 LOCATIONS. DD, JMS FILOUT -2 JMP I CONVRT SF2, JMS SDSUB DF2, JMS DF4SUB F4F2, JMS F4F2SU JMS FILOUT -4 JMP I CONVRT SF4, JMS SDSUB DF4, JMS DF4SUB F3OUT, JMS FILOUT -3 JMP I CONVRT DS, JMS DSSUB JMP SS F2S, JMS F2F4SU JMS F4DSU JMS DSSUB JMP SS F2D, JMS F2F4SU JMS F4DSU JMP DD F2F4, JMS F2F4SU JMP F3OUT SF2S, JMS PACK32 /PACK INTO PS-8 3/2 JMS FILOUT -4 JMP I CONVRT F4S, JMS F4DSU JMP DS F4D, JMS F4DSU JMP DD
F4COM, 0 /SUBROUTINE TO NEGATE MANTISSA OF F4 #. CLA CLL TAD CONINP+2 CIA DCA CONINP+2 TAD CONINP+1 CMA DCA CONINP+1 SZL ISZ CONINP+1 JMP I F4COM
PAGE F4F2SU, 0 /CONVERT F4 TO F2 AND /STORE IN PS-8 PACKED ASCII DCA TEMP1 TAD CONINP+1 SMA CLA /TEST FOR NEG VALUE. JMP F42U8 JMS F4COM TAD (4000 DCA TEMP1 /SAVE SIGN F42U8, TAD CONINP /TEST EXPONENT FOR OVERFLOW SPA JMP F42U1 /NEGATIVE AND (7600 SNA CLA JMP F42U5 TAD (177 /SET TO MAX VALUE JMP F42U2 F42U1, TAD (200 SPA CLA JMP F42U3 /SET TO MAX NEG VALUE. TAD CONINP /GET NEGATIVE VALUE. AND (177 JMP F42U3 F42U5, TAD CONINP F42U2, TAD (200 /ADD 200 FOR FORTRAN 2 F42U3, DCA TEMP2 /SAVE EXPONENT DCA CONINP /CLEAR EXPONENT TAD CONINP+1 /USE FOR 0 MANTISSA SZA CLA JMP F42U6 TAD CONINP+2 SNA CLA JMP F42U7 /SET EXPONENT=0 F42U6, TAD (-4 DCA TEMP3 F42U4, TAD CONINP+2 /ROTATE BITS 4 PLACES CLL RAL DCA CONINP+2 TAD CONINP+1 RAL DCA CONINP+1 TAD CONINP RAL DCA CONINP ISZ TEMP3 JMP F42U4 TAD TEMP2 /STORE SIGN, AND EXPONENT. CLL RTL RAL TAD TEMP1 TAD CONINP F42U7, DCA CONINP JMS PACK32 JMP I F4F2SU
F42SB1, 0 /CONVERT A WORD OF PACKED TAD TEMP1 /6 BIT ASCII TO 2 WORDS AND (77 /OF ASCII JMS F42SB2 DCA TEMP2 TAD TEMP1 RTR RTR RTR AND (77 JMS F42SB2 /RETURN WITH LEFT 6 BIT VALUE JMP I F42SB1 /IN AC. F42SB2, 0 /CONVERT STRIPPED ASCII TO TAD (-40 /ASCII SPA TAD (100 TAD (240 JMP I F42SB2
PAGE F4DSU, 0 /SUBROUTINE TO CONVERT FORTRAN CLA CLL /4 TO DOUBLE PRECISION DCA TEMP1 TAD CONINP+1 /TEST FOR NEGATIVE NUMBER. SMA CLA JMP F4DSU1 ISZ TEMP1 F4DSU1, TAD CONINP /ROTATE BITS TO FIXED POINT. TAD (-27 DCA CONINP F4DSU2, TAD TEMP1 /CARRY SIGN FOR NEG #S. RAR CLA TAD CONINP+1 RAR DCA CONINP+1 TAD CONINP+2 RAR DCA CONINP+2 ISZ CONINP JMP F4DSU2 TAD CONINP+1 /STORE IN DOUBLE PRECISION WORDS DCA CONINP TAD CONINP+2 DCA CONINP+1 JMP I F4DSU
PACK32, 0 TAD CONINP /CONVERT F2 FLOATING TO DCA TEMP1 /PS-8 ASCII FORMAT. JMS F42SB1 DCA CONINP /MUST TAKE 3 WORDS OF PACKED TAD CONINP+1 /6 BIT ASCII AND DCA TEMP1 /CONVERT TO 4 WORDS OF TAD TEMP2 /PS-8 3/2 PACKING. DCA CONINP+1 JMS F42SB1 CLL RTL RTL DCA TEMP1 TAD TEMP1 AND (7400 TAD CONINP DCA CONINP TAD TEMP1 CLL RTL RTL AND (7400 TAD CONINP+1 DCA CONINP+1 /OUTPUT WORDS 1 & 2 DONE. TAD CONINP+2 /DO 2ND 2 WORDS DCA TEMP1 TAD TEMP2 DCA CONINP+2 JMS F42SB1 DCA CONINP+3 TAD TEMP2 CLL RTL RTL AND (7400 TAD CONINP+2 DCA CONINP+2 TAD TEMP2 CLL RTR RTR RAR AND (7400 TAD CONINP+3 DCA CONINP+3 JMP I PACK32 /EXIT
PAGE SDSUB, 0 /CONVERT SINGLE TO DOUBLE TAD CONINP DCA CONINP+1 TAD SIDOFG /TEST IF 12 BIT WORD IS POS 0-4095. SZA CLA JMP SDSU1 TAD CONINP /TEST FOR NEG. SPA CLA CMA SDSU1, DCA CONINP JMP I SDSUB DSSUB, 0 /CONVERT DOUBLE TO SINGLE TAD CONINP+1 DCA CONINP JMP I DSSUB DF4SUB, 0 /CONVERT DOUBLE TO F4. DCA TEMP2 TAD CONINP /TO RIGHT. SMA /TEST FOR NEGATIVE. JMP DF4S1 CMA /SET POSITIVE DCA CONINP ISZ TEMP2 /SET NEG # FLAG. CLL TAD CONINP+1 CIA DCA CONINP+1 SZL ISZ CONINP DF4S1, CLL CLA TAD CONINP+1 /CHECK FOR 0 VALUE,AND SZA /MOVE MANTISSA DOWN. JMP DF4S2 TAD CONINP SZA CLA JMP DF4S2 DCA CONINP+2 JMP I DF4SUB DF4S2, DCA CONINP+2 TAD CONINP DCA CONINP+1 TAD (27 DCA CONINP DF4S3, TAD CONINP+1 /SHIFT DECIMAL POINT AND AND (2000 /CHANGE EXPONENT SZA CLA JMP DF4S4 /DONE WHEN BIT 1 SET TAD CONINP+2 CLL RAL DCA CONINP+2 TAD CONINP+1 RAL DCA CONINP+1 CMA /REDUCE EXPONENT TAD CONINP DCA CONINP JMP DF4S3 DF4S4, TAD TEMP2 /SET SIGN SZA CLA /TEST FOR NEG #. JMS F4COM JMP I DF4SUB
F2F4SU, 0 /CONVERT F2 FORMAT TO F4 /FLOATING. F2 MUST HAVE BEEN TAD (-4 /WRITTEN IN A6 FORMAT. AND DCA TEMP1 /UPACKED TO 3 WORDS IN THE /CALLING ROUTINE. DCA TEMP2 TAD CONINP /SAVE SIGN OF NUMBER SPA CLA ISZ TEMP2 TAD CONINP /SAVE EXPONENT AND (3770 DCA TEMP3 TAD CONINP /KEEP ONLY MANTISSA NOW AND (7 DCA CONINP F24SU1, TAD CONINP /SHIFT FROM 27 BIT MANTISSA CLL RAR /TO 23 BIT MANTISSA DCA CONINP TAD CONINP+1 RAR DCA CONINP+1 TAD CONINP+2 RAR DCA CONINP+2 ISZ TEMP1 JMP F24SU1 TAD CONINP+1 /TEST FOR 0 SZA CLA /MATISSA JMP F24SU2 TAD CONINP+2 SNA CLA JMP F24SU3 F24SU2, TAD TEMP2 /SET VALUE NEG IF ENTERED SO. SZA CLA JMS F4COM TAD TEMP3 /RESTORE EXPONENT CLL RTR RAR TAD (-200 /SUBTRACT 200 AND STORE F24SU3, DCA CONINP JMP I F2F4SU

PAGE UNPACK, 0 /UNPACK 4 WORDS TO 3 TAD CONINP /UNPACK TO 3 WORD FLOATING AND (1400 /POINT CLL RTL DCA TEMP1 TAD CONINP /DATA IS INPUT IN 3/2 PS-8 AND (77 /ASCII PACKING CLL RTL RTL RTL DCA CONINP TAD CONINP+1 AND (77 TAD CONINP DCA CONINP TAD CONINP+1 AND (7400 CLL RTR TAD TEMP1 DCA CONINP+1 TAD CONINP+2 AND (77 TAD CONINP+1 DCA CONINP+1 TAD CONINP+2 AND (1400 CLL RTR RTR DCA CONINP+2 TAD CONINP+3 AND (7400 CLL RTL RTL RAL TAD CONINP+2 DCA CONINP+2 TAD CONINP+3 AND (77 CLL RTL RTL RTL TAD CONINP+2 DCA CONINP+2 JMP I UNPACK PAGE TTYROU, 0 /TELETYPE INPUT SUB. KSF JMP .-1 KRB DCA TTYROS TAD TTYROS TAD (-377 SNA JMP I TTYROU /RESTART INPUT ON RUBOUT. TAD (-203+377 SNA JMP PSOUT /^C RETURN TO PS8. TAD (203 JMS PRTCH TAD TTYROS JMP I TTYROU TTYROS, 0
PRTCH, 0 /SUB TO PRINT CHAR. TLS TSF JMP .-1 CLA CLL JMP I PRTCH TTYINP, 0 /SUB TO GET TTY INPUT. CDF 0 TAD I AVTMP1 /GET TTY INPUT. ISZ AVTMP1 CDF 10 AND (77 JMP I TTYINP TTYIN1, 0 /SUB TO SET UP READ OF TTY INPUT. TAD (-215 DCA DARDS JMS DARD /READ TTY. TAD (BUFOUT DCA AVTMP1 JMP I TTYIN1 PSOUT, CLA CLL CDF CIF 0 JMP I (7600
DARD, 0 /SUB TO ACCEPT DATA FROM TTY. DARD1, TAD (BUFOUT /SET BUF IN AND COUNT DCA AVTMP1 TAD (-400 DCA AVTMP2 /UP TO 255 CHAR ACCEPTED. SWTC10, JMS TTYROU /GET CHAR SNA /TEST FOR RUBOUT JMP SWITC5 TAD DARDS /TEST FOR END SNA JMP DARD2 CIA TAD DARDS CIA CDF 0 DCA I AVTMP1 /STORE INPUT CHAR. CDF 10 ISZ AVTMP1 ISZ AVTMP2 /TEST FOR BUFFER FULL JMP SWTC10 TAD (277 /FULL,PRINT ? JMS PRTCH SWITC5, CLA CMA /RUBOUT MOVE BACK A CHAR TAD AVTMP1 DCA AVTMP1 CMA TAD AVTMP2 DCA AVTMP2 TAD (BUFOUT /TEST FOR FRONT OF BLOCK. CIA TAD AVTMP1 SPA CLA JMP DARD1 TAD (334 /OUTPUT A BACK SLASH. JMS PRTCH JMP SWTC10 DARD2, TAD DARDS /OUTPUT TERMINATOR. CIA CDF 0 DCA I AVTMP1 CDF 10 JMP I DARD
PAGE SWITC, JMS SWTCK /CHECK FOR H SWITCH. -10 DCA HSCAL JMS SWTCK /TEST FOR D SWITCH. -04 SNA CLA JMP SWITC2 /NO D. /D SWITCH, DELETE BLOCK 1. JMS CREAD /READ IN BLOCK 1 -1 HLT CLA CMA DCA READNO /READ LAST WORD OF BLOCK JMS CREAD /NEXT READ IS FROM BLOCK 2. -1 HLT JMP SWITC1 SWITC2, JMS SWTCK /CHECK FOR S SWITCH -23 SNA CLA JMP SWITC1 /NO S. TAD (-100 /SKIP 1 BLOCK. DCA AVTMP1 SWITC3, JMS CREAD /TRANSFER BLOCK 1 TO OUTPUT. -4 HLT JMS FILOUT /4 WORDS AT A TIME. -4 ISZ AVTMP1 JMP SWITC3 JMP SWITC4 SWITC1, JMS SWTCK /TEST FOR T SWITCH. -24 SNA CLA JMP SWITC4 SWTC11, JMS CRLF /T SWITCH. /PUT TITLE IN BLOCK 1. TAD (TITLE-1 JMS MESPRT /PRINT MES.'TITLE'. TAD (-232 /SET INPUT TERMINATOR. DCA DARDS JMS DARD /GET TTY INPUT. TAD (BUFOUT /PACK IN PS-8 3-2 PACKING. DCA TEMP1 TAD (BUFOUT-1 DCA 10 DCA CZCK1 /0 END OF INPUT FLAG. SWTC12, CDF 0 TAD I 10 JMS CZCK DCA I TEMP1 /PACK 1 OF 3 ISZ TEMP1 TAD I 10 JMS CZCK DCA I TEMP1 /PACK 2 OF 3. CLA CMA /PACK 3 OF 3 TAD TEMP1 DCA TEMP1 TAD I 10 /GET 3RD CHAR. JMS CZCK DCA TEMP2 TAD TEMP2 CLL RTL RTL AND (7400 /GET HIGH 4 BITS TAD I TEMP1 DCA I TEMP1 /STORE IN WORD 1. ISZ TEMP1 TAD TEMP2 /GET LOW 4 BITS. CLL RTR RTR RAR AND (7400 TAD I TEMP1 DCA I TEMP1 /STORE IN WORD 2. ISZ TEMP1 JMP SWTC12 SWTC13, CDF 10 TAD BLKOUT /WRITE OUT THE TITLE. DCA SWTC14 CIF 0 JMS I ENTRYO 4200 BUFOUT SWTC14, 0 JMP ERRRW ISZ FILOSZ CLA ISZ BLKOUT CLA SWITC4, JMS SWTCK /TEST FOR R SWITCH. -22 SNA CLA JMP DHCT14 JMP SWTC30
PAGE SWTC30, TAD INTYP /TEST IF INPUT CORRECT TAD (-6 /GOOD FOR ONLY SI,DA AND DO. SMA CLA JMP COMERR TAD INTYP TAD (-3 SPA CLA JMP COMERR SWTC21, JMS CRLF TAD (MESS1-1 /PRINT MES. # TO SKIP. JMS MESPRT JMS NUMGET /GET NUMBER +1 CRDSKP /HIGH ORDER VALUE ADD. JMP SWTC21 SWTC20, JMS CRLF /PRINT MES. # TO READ. TAD (MESS2-1 JMS MESPRT JMS NUMGET /GET NUMBER +1 CRDGET /HIGH ORDER TO STORE ADD. JMP SWTC20 TAD INTYP /READ 1 OR 2 WORDS. TAD (-3 /1 FOR SI ,2 FOR DO. SNA CLA IAC IAC CIA DCA SWTC15 SWTC17, ISZ CRDSKP+1 /COUNT # TO SKIP. JMP SWTC16 /COUNT DOUBLE PRE. ISZ CRDSKP JMP SWTC16 JMP DHCT14 /DONE SKIPPING. SWTC16, JMS CREAD /READ 1 OR 2 WORDS AT A TIME. SWTC15, 0 JMP COMERR JMP SWTC17 SWTCK, 0 /SUB TO TEST FOR SWITCH. TAD (SWITCH-1 DCA 10 SWTCK1, TAD I 10 /GET VALUE IN INPUT SWITCH TABLE. SNA /TEST FOR END. JMP SWTCK2 /0,NO MATCH. TAD I SWTCK /GET VALUE TO SEARCH FOR. SZA CLA JMP SWTCK1 IAC /RETURN 1 IF FOUND. SWTCK2, ISZ SWTCK /RETURN AC=0 IF NOT FOUND. JMP I SWTCK CZCK, 0 /SUB TO TEST FOR END OF TITLE. TAD CZCK1 /TEST IF DONE. SZA CLA JMP SWTC13 TAD (-232 SNA ISZ CZCK1 /SET DONE FLAG ON CNTR.Z. TAD (232 JMP I CZCK CZCK1, 0 TITLE, 311 /ID= 304 275 0 MESS1, 323 /SKIP #= 313 311 320 240 243 275 0 MESS2, 322 /READ #= 305 301 304 240 243 275 0
PAGE MESPRT, 0 /SUBROUTINE TO PRINT A MESSAGE. DCA 10 MESPT1, TAD I 10 SNA /TEST FOR END,0. JMP I MESPRT JMS PRTCH JMP MESPT1 NUMGET, 0 /SUB. TO GET INPUT NUMBER. TAD I NUMGET DCA NUMGT1 /HIGH ORDER ADD. ISZ NUMGET DCA I NUMGT1 /0 VALUE. TAD NUMGT1 /GET LOW ORDER ADD. IAC DCA NUMGT2 DCA I NUMGT2 /0 VALUE. TAD (-215 /SET INPUT TERMINATOR. DCA DARDS JMS DARD /READ TTY INPUT. TAD (BUFOUT DCA NUMGT3 NUMG2, CDF 0 TAD I NUMGT3 /READ 8 BIT ASCII. CDF 10 TAD (-215 /TEST FOR END OF INPUT. SNA CLA JMP NUMG3 CDF 0 TAD I NUMGT3 /TEST FOR A NUMBER. CDF 10 TAD (-260 SPA CLA JMP I NUMGET /COMMAND ERROR. CDF 0 TAD I NUMGT3 CDF 10 TAD (-272 SMA CLA JMP I NUMGET /ERROR. TAD I NUMGT1 /SACE VALUE SO FAR. DCA NUMGT4 TAD I NUMGT2 DCA NUMGT5 TAD (-11 /MULTIPLY CURRENT VALUE BY 10. DCA TEMP1 NUMG1, CLL TAD NUMGT5 TAD I NUMGT2 DCA I NUMGT2 SZL /TEST FOR CARRY. IAC TAD NUMGT4 TAD I NUMGT1 DCA I NUMGT1 ISZ TEMP1 JMP NUMG1 CDF 0 /ADD NEW DIGIT. TAD I NUMGT3 CDF 10 TAD (-260 CLL TAD I NUMGT2 DCA I NUMGT2 /STORE LOW ORDER. SZL /TEST FOR CARRY. ISZ I NUMGT1 ISZ NUMGT3 JMP NUMG2 NUMG3, CLL CLA /MAKE NUMBER #+1 TAD I NUMGT2 CMA /AND NEGATIVE. DCA I NUMGT2 TAD I NUMGT1 CMA DCA I NUMGT1 ISZ NUMGET JMP I NUMGET NUMGT1, 0 /HIGH ORDER ADD NUMGT2, 0 /LOW ORDER ADD. NUMGT3, 0 NUMGT4, 0 NUMGT5, 0 HICOD, 4 3 2 1 1 15 F4COD, 0 14 17 16 16 0
PAGE CO, TAD (HICOD-1 /SET CONVERT TYPE. JMS SETCON JMS CREAD /READ BLOCK 1. -1 HLT CDF 0 TAD I (BUFIN+23 /GET AUTO FLAG. DCA CONINP TAD I (BUFIN+21 /GET RATE. CIA DCA CONINP+1 TAD I (BUFIN+20 /GET # OF POINTS. DCA CONINP+2 TAD CONINP+2 CIA DCA AVTMP1 /SAVE # OF POINTS. CDF 10 JMS HI6TST /OUTPUT DATA. CMA TAD AVTMP1 DCA AVTMP3 CDF 0 TAD I (BUFIN+74 /GET HIGH ORDER SWEEP. DCA CONINP TAD I (BUFIN+75 /LOW ORDER SWEEP. DCA CONINP+1 CDF 10 TAD OUTTYP /TEST F2 SING. PRE. TAD (-6 SZA CLA JMP CO1 /NO JMS HI6TST /OUTPUT F2S FORMAT JMP CO2 CO1, TAD (DOCOD-1 /SET CONVERT TYPE DO IN. JMS SETCON JMS CONVRT /OUTPUT SWEEP COUNT. CDF 0 TAD I (BUFIN+74 CDF 10 DCA CONINP+1 /MOVE HIGH ORDER FOR SI OUTPUT. JMS CONVRT JMS CONVRT /OUTPUT 2 DUMMY NUMBERS. CO2, CMA /SET TO READ NEXT BLOCK. DCA READNO JMS CREAD -1 HLT CO3, JMS CREAD /SKIP POINTS IN TEMP BUFFER -1 HLT ISZ AVTMP3 JMP CO3 TAD (DOCOD-1 /SEND DO INPUT TO CONVRT. JMS SETCON TAD OUTTYP /TEST FOR FS TAD (-6 SNA CLA JMP CO4 CO5, JMS CREAD /READ DATA AND CONVERT. -2 JMP FILDON JMS CONVRT ISZ AVTMP1 JMP CO5 JMP FILDON /FILE DONE ON COUNT. CO7, DCA AVTMP1 CO4, JMS CREAD /OUTPUT FS ,READ 3 DOUBLE PRE. -6 /AT A TIME. CLA /DON'T HALT IF END OF FILE READ. TAD CONINP+1 /CHANGE DOUBLE TO SING. PRE. DCA CONINP TAD CONINP+3 DCA CONINP+1 TAD CONINP+5 DCA CONINP+2 JMS CONVRT SETM3 /TEST IF ALL POINTS DONE. TAD AVTMP1 SPA JMP CO7 /NO CLA JMP FILDON FSCOD, 4 0 2 1 1 0
PAGE SWITVA, JMS SWTCK /TEST THE SWITCHES,1ST H. -10 SNA CLA JMP SWTV1 TAD INTYP /GOOD ONLY WITH H INPUT. TAD (-7 SZA CLA JMP COMERR SWTV1, JMS SWTCK /TEST D . -04 SNA CLA JMP SWTV2 JMS SWTCK /S CAN'T BE ON. -23 SNA CLA JMP SWTV3 JMP COMERR SWTV2, JMS SWTCK /TEST FOR S -23 SNA CLA JMP SWITC JMS SWTCK /T CAN'T BE ON -24 SZA CLA JMP COMERR SWTV3, TAD INTYP /INPUT CAN'T BE HI,CO,OR AV. TAD (-7 SMA CLA JMP COMERR JMP SWITC $



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