File BLOCK9.

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

/BLIP BLOCKS CDN 17/11/72



N=5	/MAX NUMBER OF WORDS PRECISION





*51



WORDCT,	-N
INPOI,	0
OUTPOI,	0
COUNT,	0
TM1POI,	0
TM2POI,	0
TM3POI,	0
TM1ADD,	TEMP1
TM2ADD,	TEMP2
TM3ADD,	TEMP3
NM14,	-14
NN,	N




*2000

LOC1,	ZBLOCK N	/INTER BLOCK STORAGE AREA
LOC2,	ZBLOCK N
LOC3,	ZBLOCK N
LOC4,	ZBLOCK N
LOC5,	ZBLOCK N
LOC6,	ZBLOCK N
LOC7,	ZBLOCK N
LOC8,	ZBLOCK N

NNX14,	N^14
CN,	N

/************************* CHOPPER **************************** /CALL: CHOP / INPUT /INPUT ADDRESS / PRECIS /NUMBER OF BITS REQUIRED / OUTPUT /OUTPUT ADDRESS CHOP, 3 BLOUT JMS ARGET1 JMS CHOPSR INEND CHOPSR, 0 TAD WORDCT DCA COUNT CHOPLP, TAD PRECIS DCA PRECIS TAD PRECIS SPA SNA CLA JMP CHPNUL TAD PRECIS TAD NM14 SPA CLA JMP CUT TAD I INPOI CHPNUL, DCA I OUTPOI TAD NM14 ISZ INPOI ISZ OUTPOI ISZ COUNT JMP CHOPLP CLA CLL JMP I CHOPSR CUT, JMS MASKSR JMP CHPNUL MASKSR, 0 SWAB CLA CMA MQL SHL PRECIS, 0 AND I INPOI JMP I MASKSR ARGET1, 0 GETAD 1 DCA INPOI ACUM 2 DCA PRECIS GETAD 3 DCA OUTPOI JMP I ARGET1
/*********************** ADDER *************************** /CALL: ADDER / INPUT1 /INPUT ADDRESS 1 / PRECIS1 /PRECISION OF INPUT 1 / INPUT2 /INPUT ADDRESS 2 / PRECIS2 /PRECISION OF INPUT 2 / INCR. /NUMBER TO BE ADDED TO LOWER END OF SUM / OUTPUT /OUTPUT ADDRESS ADDER, 6 BLOUT JMS ARGET2 JMS CHOPSR JMS ARGET3 JMS CHOPSR TAD TM1ADD DCA TM1POI TAD TM2ADD DCA TM2POI TAD WORDCT DCA COUNT GETAD 6 DCA OUTPOI ACUM 5 CLL ADDRLP, TAD I TM1POI TAD I TM2POI DCA I OUTPOI RAL ISZ TM1POI ISZ TM2POI ISZ OUTPOI ISZ COUNT JMP ADDRLP INEND ARGET2, 0 GETAD 1 DCA INPOI ACUM 2 DCA PRECIS TAD TM1ADD DCA OUTPOI JMP I ARGET2 PAGE ARGET3, 0 GETAD 3 DCA INPOI ACUM 4 DCA PRECIS TAD TM2ADD DCA OUTPOI JMP I ARGET3
/********************** COMPLEMENTER ***************************** /CALL: COMPLM / INPUT /INPUT ADDRESS / OUTPUT /OUTPUT ADDRESS COMPLM, 2 BLOUT GETAD 1 DCA INPOI GETAD 2 DCA OUTPOI TAD WORDCT DCA COUNT COMPLP, TAD I INPOI CMA DCA I OUTPOI ISZ INPOI ISZ OUTPOI ISZ COUNT JMP COMPLP INEND
/********************** PRESGN ************************** /CALL: PRESGN / INPUT /INPUT ADDRESS / PRECIS /NUMBER OF BITS REQUIRED / OUTPUT /OUTPUT ADDRESS PRESGN, 3 BLOUT JMS ARGET1 JMS PRSNSR INEND PRSNSR, 0 TAD WORDCT DCA COUNT DCA SGNMSK PRSNLP, TAD PRECIS DCA PRECIS TAD PRECIS SPA SNA CLA JMP PRSNUL TAD PRECIS TAD NM14 SPA SNA CLA JMP PRSCUT TAD I INPOI PRSNUL, TAD SGNMSK PRSRET, DCA I OUTPOI TAD NM14 ISZ INPOI ISZ OUTPOI ISZ COUNT JMP PRSNLP JMP I PRSNSR PRSCUT, JMS MASKSR DCA I OUTPOI MQA DCA CUTMSK TAD CUTMSK CLL CML RAR AND I OUTPOI SZA CLA CMA DCA SGNMSK TAD SGNMSK SNA CLA JMP PRSRET+1 TAD I OUTPOI TAD CUTMSK JMP PRSRET SGNMSK, 0 CUTMSK, 0
/***************** MULTIPLIER ***************************** /SIGNED OR UNSIGNED /CALL: MULTSG OR MULTUN / MULTIPLICAND / PRECIS1 /NO OF BITS IN MULTIPLICAND / MULTIPLICATOR / PRECIS2 /NO OF BITS IN MULTIPLICATOR / PRODUCT / PRECISO /NO OF BITS IN PRODUCT MULTSG, 6 /SIGNED MULTIPLY BLOUT JMS DESIGN JMP MULTIP DESIGN, 0 DCA MULFLG JMS ARGET2 TAD PRECIS DCA MULCT1 JMS PRSNSR JMS ARGET3 TAD PRECIS DCA MULCTB JMS PRSNSR JMS MINUSR TEMP1 JMS MINUSR TEMP2 JMP I DESIGN MINUSR, 0 CLA CLL TAD WORDCT CMA TAD I MINUSR DCA OUTPOI TAD I OUTPOI SMA CLA JMP POSITV TAD I MINUSR DCA OUTPOI ISZ MULFLG JMS MINSR POSITV, ISZ MINUSR JMP I MINUSR MINSR, 0 CLA CLL TAD WORDCT DCA COUNT MINSLP, TAD I OUTPOI CIA DCA I OUTPOI CML RAL ISZ OUTPOI ISZ COUNT JMP MINSLP JMP I MINSR PAGE MULFLG, 0 MULCT1, 0 MULCT2, 0 MULCTB, 0 MULTOT, 0 OUTCNT, 0 OVERFL, 0 ENDCHK, 0 N24, 24 ARGET5, 0 DCA MULFLG JMS ARGET2 TAD PRECIS DCA MULCT1 JMS CHOPSR JMS ARGET3 TAD PRECIS DCA MULCTB JMS CHOPSR JMP I ARGET5 MULSR1, 0 GETAD 5 DCA INPOI TAD INPOI DCA OUTPOI ACUM 6 DCA PRECIS TAD WORDCT DCA COUNT MULCLR, DCA I OUTPOI ISZ OUTPOI ISZ COUNT JMP MULCLR JMP I MULSR1 MULTUN, 6 /UNSIGNED MULTIPLY BLOUT JMS ARGET5 MULTIP, CLA CLL TAD TM1ADD DCA TM1POI JMS MULSR1 TAD MULCT1 TAD MULCTB TAD N24 CIA DCA MULTOT SWAB DCA OUTCNT DCA OVERFL MULLP1, TAD MULCT1 SPA SNA JMP MULEND DCA MULCT1 TAD TM2ADD DCA MULMUL TAD OUTCNT TAD WORDCT DCA ENDCHK TAD OUTCNT TAD INPOI DCA OUTMUL TAD OUTMUL DCA INMUL TAD OVERFL SZA TYDER /PROGRAMMING ERROR TAD MULCTB DCA MULCT2 MULLP2, TAD MULCT2 SPA SNA JMP LOPEND DCA MULCT2 TAD MULCT1 TAD MULCT2 TAD MULTOT SMA CLA JMP LOPEND TAD I TM1POI MQL MUY MULMUL, 0 TAD OVERFL ISZ MULMUL PROPGT, ISZ ENDCHK SKP JMP MULCUT DAD INMUL, 0 DST OUTMUL, 0 CLA RAL ISZ INMUL ISZ OUTMUL DCA OVERFL TAD NM14 JMP MULLP2 LOPEND, CAM TAD OVERFL SZA JMP PROPGT ISZ OUTCNT TAD NM14 ISZ TM1POI JMP MULLP1 MULCUT, CLA MQA TAD I OUTMUL DCA I OUTMUL DCA OVERFL JMP LOPEND MULEND, CLA CLL TAD MULFLG RAR SNL CLA JMP POSANS TAD INPOI DCA OUTPOI JMS MINSR POSANS, CLA CLL TAD INPOI DCA OUTPOI JMS CHOPSR INEND
PAGE /************************ SHFTRG ************************** /CALL: SHFTRG / NAME /NAME OF SHIFT REGISTER / INPUT /ADDRESS OF INPUT /NAME: ADDRESS OF STORAGE AREA / ADDRESS OF LENGTH OF SHIFT REGISTER IN CELLS / ADDRESS OF NUMBER OF WORDS PER CELL / ADDRESS OF POINTER FOR USE BY BLOCK SHFTRG, 2 BLOTNT SHFINT JMS ARGET4 GETAD 2 DCA INPOI TAD I CLSZAD CIA DCA COUNT SHFTLP, TAD I INPOI DCA I SHFPOI ISZ INPOI ISZ SHFPOI ISZ COUNT JMP SHFTLP TAD SHFPOI CIA TAD MAXADD SPA SNA CLA JMP RESET RESTRT, TAD SHFPOI PUT 101 INEND RESET, TAD REGSIZ CIA JMP RESTRT SHFINT, JMS ARGET4 TAD SHFTST DCA SHFPOI TAD SHFTST DCA INPOI TAD REGSIZ CIA DCA COUNT DCA I INPOI ISZ INPOI ISZ COUNT JMP .-3 JMP RESTRT ARGET4, 0 GETAD 21 /ADDRESS OF STORAGE AREA DCA SHFTST SWAB GETAD 61 /CELSIZ DCA CLSZAD ACUM 41 /LENGTH MQL MUY CLSZAD, 0 SZA CLA TYDER MQA DCA REGSIZ TAD REGSIZ TAD SHFTST DCA MAXADD ACUM 101 /POINTER DCA SHFPOI JMP I ARGET4 SHFTST, 0 /STARTING ADDRESS OF TABLE MAXADD, 0 /POINTS TO NEXT UNUSED LOC AFTER STORAGE AREA SHFPOI, 0 /POINTER TO NEXT FREE CELL REGSIZ, 0 /LENGTH X CELLSIZE
/********************** TAPSET ****************************** /CALL: TAPSET / NAME /AS IN SHFTRG TAPSET, 1 BLOTNT SHFINT JMS ARGET4 INEND /************************ TAP **************************** /CALL: TAP / POSITION /ADDRESS OF TAP NUMBER REQUIRED / OUTPUT /ADDRESS OF OUTPUT TAP, 2 BLOUT GETAD 2 DCA OUTPOI TAD I CLSZAD CIA DCA ARGET4 /TEMP LOC TAD WORDCT DCA COUNT SWAB GETAD 1 DCA TAPINS TAD I CLSZAD MQL MUY TAPINS, 0 SZA CLA TYDER MQA CIA TAD SHFPOI DCA INPOI REWDRT, TAD INPOI CIA TAD SHFTST SMA SZA CLA JMP REWIND TAPLOP, TAD I INPOI DCA I OUTPOI ISZ INPOI ISZ OUTPOI ISZ ARGET4 SKP JMP TAPFIL ISZ COUNT JMP TAPLOP INEND TAPFIL, ISZ COUNT SKP INEND DCA I OUTPOI ISZ OUTPOI JMP TAPFIL REWIND, TAD INPOI TAD REGSIZ DCA INPOI JMP REWDRT
/************************** SCALE ******************************* /CALL: SCALUN /UNSIGNED / INPUT /ADDRESS OF INPUT / FACTOR /ADDRESS OF POWER OF TWO TO MULTIPLY BY / OUTPUT /ADDRESS OF OUTPUT / OR: /CALL: SCALSG /SIGNED / INPUT / PRECISION /NUMBER OF BITS IN INPUT / FACTOR / OUTPUT /OUTPUT IS PRESIGNED SCALUN, 3 BLOUT JMS ARGET1 JMS SCALE INEND PAGE SCALSG, 4 BLOUT GETAD 1 DCA INPOI ACUM 3 DCA PRECIS TAD PRECIS DCA SLTEM3 GETAD 4 DCA OUTPOI TAD OUTPOI DCA SLTEM1 ACUM 2 TAD PRECIS DCA SLTEM2 JMS SCALE TAD SLTEM1 DCA OUTPOI TAD SLTEM1 DCA INPOI TAD SLTEM2 DCA PRECIS JMS PRSNSR CLA TAD WORDCT DCA COUNT TAD SLTEM3 SMA CLA INEND TAD FNDPIC RAL SNL INEND SLCARY, ISZ I SLTEM1 INEND ISZ SLTEM1 ISZ COUNT JMP SLCARY INEND SLTEM1, 0 SLTEM2, 0 SLTEM3, 0 SCALE, 0 SWAB CLA CMA DCA SCLFLG TAD WORDCT DCA COUNT TAD TM1ADD DCA SCLPOI TAD TM2ADD DCA TM2POI TAD TM3ADD DCA TM1POI SCLLP1, DCA I TM1POI TAD I INPOI DCA I TM2POI DCA I SCLPOI ISZ TM1POI ISZ INPOI ISZ TM2POI ISZ SCLPOI ISZ COUNT JMP SCLLP1 TAD PRECIS SPA CIA DCA SHFTNM TAD PRECIS SMA CLA CLA CLL CMA RAL IAC DCA POSNEG SKEW, TAD SHFTNM TAD NM14 SPA SNA JMP INLINE DCA SHFTNM TAD SCLPOI TAD POSNEG DCA SCLPOI JMP SKEW INLINE, TAD N14 DCA SHFTNM TAD PRECIS SPA CLA JMP RIGHT CLA CMA TAD SCLPOI DCA SCLPOI RIGTRT, TAD WORDCT DCA COUNT LEFT, CAM DAD SCLPOI, 0 SHL SHFTNM, 0 DCA I OUTPOI CLA MQA ISZ SCLFLG SKP DCA FNDPIC CLA ISZ OUTPOI ISZ SCLPOI ISZ COUNT JMP LEFT JMP I SCALE RIGHT, TAD SHFTNM CIA TAD N14 DCA SHFTNM JMP RIGTRT N14, 14 POSNEG, 0 FNDPIC, 0 SCLFLG, 0 ONE, 1 ZERO, ZBLOCK N /ZERO MUST FOLLOW ONE PAGE /*********************** BLNOP ***************************** /CALL: BLNOP BLNOP, 0 BLEND
/******************** LIMIT **************************** /CALL: LIMIT / INPUT /ADDRESS OF INPUT / PRECIS /NUMBER OF SIGNIFICANT BITS IN INPUT / MAXMIN /MAX AND MIN NUMBER ALLOWED / OUTPUT /ADDRESS OF OUTPUT LIMIT, 4 BLOUT JMS ARGET2 JMS PRSNSR GETAD 3 DCA INPOI TAD WORDCT CMA TAD INPOI DCA TM2POI CLA CMA TAD OUTPOI DCA OUTPOI TAD WORDCT DCA COUNT TAD I OUTPOI SPA CLA JMP NEGLOP POSLOP, TAD I OUTPOI CIA TAD I TM2POI SPA JMP POSLIM JMS ZERSUB JMP POSLOP NEGLOP, TAD I OUTPOI IAC TAD I TM2POI SPA JMP NEGLIM JMS ZERSUB JMP NEGLOP ZERSUB, 0 SZA CLA JMP NOLIM CLA CMA TAD OUTPOI DCA OUTPOI CLA CMA TAD TM2POI DCA TM2POI ISZ COUNT JMP I ZERSUB NOLIM, TAD TM1ADD DCA OUTPOI LIMOUT, GETAD 4 COPYRO, DCA TM1POI TAD WORDCT DCA COUNT OUTLOP, TAD I OUTPOI DCA I TM1POI ISZ OUTPOI ISZ TM1POI ISZ COUNT JMP OUTLOP INEND POSLIM, CLA TAD INPOI DCA OUTPOI JMP LIMOUT NEGLIM, CLA GETAD 4 DCA TM1POI RCTEND, TAD WORDCT DCA COUNT CLL NGLMLP, TAD I INPOI CIA DCA I TM1POI CML RAL ISZ INPOI ISZ TM1POI ISZ COUNT JMP NGLMLP INEND /********************* COPY ************************** /CALL: COPY / INPUT / OUTPUT COPY, 2 BLOUT GETAD 1 DCA OUTPOI GETAD 2 JMP COPYRO
/******************** DIVIDE ****************************** /SIGNED OR UNSIGNED DIVIDE /CALL: DIVSG OR DIVUN / DIVIDEND / PRECIS / DIVSOR / PRECIS / QUOTIENT / PRECIS / ERROR /ERROR RET WHEN DIVISOR=0 INCREM, 0 TAD OUTPOI DCA TM2POI ISZ TM2POI SZL ISZ I TM2POI SKP JMP .-4 CLL JMP I INCREM DIVSG, 7 /SIGNED BLOUT JMS DESIGN JMP DIVIDE DIVUN, 7 /UNSIGNED BLOUT JMS ARGET5 DIVIDE, CAM JMS MULSR1 TAD WORDCT CMA TAD TM1ADD DCA TM1POI TAD WORDCT CMA TAD TM2ADD DCA TM2POI DCA SIGNIF TAD WORDCT DCA COUNT JMP DVLOP1 PAGE DVLOP1, TAD I TM2POI SZA CLA JMP CKDVND CLA CMA TAD TM2POI DCA TM2POI ISZ SIGNIF ISZ COUNT JMP DVLOP1 INBLIP BLJUMP 7 /ERROR RET, DIVSOR=0 NOP NOP CKDVND, TAD SIGNIF TAD WORDCT DCA DSRCNT CLA IAC TAD DSRCNT DCA SUBCOR CLA CMA TAD DSRCNT DCA DSCNT1 TAD SIGNIF CMA DCA SIGNIF DVLOP2, TAD I TM1POI SZA CLA JMP DINLIN CLA CMA TAD TM1POI DCA TM1POI ISZ SIGNIF JMP DVLOP2 INEND /DIVSOR > DIVIDEND : ANS=0 DINLIN, TAD SIGNIF CMA TAD INPOI DCA OUTPOI TAD ZEROI DCA LASTPO SWBA TAD I TM2POI IAC DCA DIVSOR DVLOP3, TAD DIVSOR SNA CLA JMP TENTHO TAD I TM1POI SWP DVI DIVSOR, 0 TENTHO, CLA MQA CLL SNA JMP NXTDIG TAD I OUTPOI DCA I OUTPOI JMS INCREM CLA SWP DCA DIVMUL TAD TM1POI TAD SUBCOR DCA TM3POI TAD TM2ADD DCA TM2POI TAD DSRCNT DCA COUNT CLL CML DVLOP4, TAD I TM2POI SWP SNL IAC MUY DIVMUL, 0 SWP CIA TAD I TM3POI DCA I TM3POI ISZ TM3POI ISZ TM2POI ISZ COUNT JMP DVLOP4 NXDGRT, TAD I LASTPO MQL JMP DVLOP3 NXTDIG, CLA CLL TAD DSCNT1 DCA DSRCNT TAD TM1POI DCA LASTPO CLA CMA TAD OUTPOI DCA OUTPOI ISZ SIGNIF SKP JMP DIVEND CLA CMA TAD TM1POI DCA TM1POI JMP NXDGRT DIVEND, TAD TM1ADD DCA TM1POI TAD TM2ADD DCA TM2POI TAD WORDCT DCA COUNT DVLOP5, CLL TAD I TM2POI CIA TAD I TM1POI DCA I TM1POI CML RAL ISZ TM1POI ISZ TM2POI ISZ COUNT JMP DVLOP5 RAR CMA CLA JMS INCREM JMP MULEND SIGNIF, 0 DSCNT1, 0 SUBCOR, 0 DSRCNT, 0 LASTPO, 0 ZEROI, ZERO
PAGE TEMP1, ZBLOCK N TEMP2, ZBLOCK N TEMP3, ZBLOCK N /TEMP2+3 MUST FOLLOW TEMP1 CONSECUTIVELY /********************** DELAY ***************************** /CALL: DELAY / ADDRESS /ADDRESS OF STORAGE SPACE / INPUT /ADDRESS OF INPUT / OUTPUT /ADDRESS OF OUTPUT DELAY, 3 BLOTNT DELINT GETAD 2 DCA INPOI GETAD 3 DCA OUTPOI TAD WORDCT DCA COUNT GETAD 1 DCA TM1POI DELLOP, TAD I INPOI MQL TAD I TM1POI DCA I OUTPOI MQA DCA I TM1POI ISZ TM1POI ISZ INPOI ISZ OUTPOI ISZ COUNT JMP DELLOP INEND DELINT, GETAD 1 DCA TM1POI GETAD 3 DCA TM2POI TAD WORDCT DCA COUNT DLNTLP, DCA I TM1POI DCA I TM2POI ISZ TM2POI ISZ TM1POI ISZ COUNT JMP DLNTLP INEND /********************** NOISE GENERATOR ************************ /USING A FEEDBACK SHIFT REGISTER, 12 BITS TAPS AT 2007 /CALL: NOISE / STATE / NO. OF BITS IN OUTPUT / OUTPUT ADDRESS NOISE, 3 BLOTNT NOIINT JMS ARGET1 TAD I INPOI DCA TEMP1 TAD WORDCT DCA COUNT TAD NM14 DCA TM2POI TAD PRECIS SNA JMP NOISRT CIA DCA TM3POI NOISLP, DCA I OUTPOI JMS PSULNK ISZ TM2POI JMP NOICON NOSNEX, TAD TEMP1 DCA I OUTPOI ISZ OUTPOI ISZ COUNT JMP NOSEND TAD NM14 DCA TM2POI JMP NSNXRT NOICON, TAD I OUTPOI CLL CML RAL NSNXRT, ISZ TM3POI JMP NOISLP AND TEMP1 NOISRT, DCA I OUTPOI ISZ OUTPOI ISZ COUNT JMP NOISRT NOSEND, TAD TEMP1 SNA TYDER /S.R.=0 PUT 1 INEND NOIINT, JMS ARGET1 CLA CMA DCA TEMP1 TAD PHASE CIA DCA COUNT JMS PSULNK ISZ COUNT JMP .-2 TAD WORDCT DCA COUNT JMP NOISRT PSULNK, 0 CLA CLL TAD TEMP1 AND NOITAP MOD2LP, SPA TAD N4000N RAR SZA JMP MOD2LP TAD TEMP1 RAR DCA TEMP1 JMP I PSULNK PHASE, 100 /NO. OF CALLS IN INITIALIZATION NOITAP, 2007 /TAPS FOR MAX LENGTH S.R N4000N, 4000



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