



       NAM CVTBLS-C 4/6/76
*FILE  20, C-3 CONVERSION TABLES
*TWO   PASS ASSEMBLY ( WDS,171 BYTES, MS)
       ORG $8040 CONVERSION TABLES

*ENTER WITH TABLE# IN ACCA B7,B6
*&     X VALUE IN COUNT,COUNT+1
*RETURNWITH Y IN COUNT, COUNT+1

*      SUBROUTINE CALLED+ MPY8

**************
*ESTABLISHCONVERSION TABLES
**************

CVTBLS BRA CVTBL1 DATA GUARD
TABLE1 FDB 00000 0-ELEMENTS FOR...
       FDB 00403 1-WATTMETTER CONVERSION
       FDB 01029 2- ( YN VALUES )
       FDB 01790 3-
       FDB 02636 4-
       FDB 03557 5-
       FDB 04579 6-
       FDB 05752 7-
       FDB 07123 8-
       FDB 08696 9-
       FDB 10391 10-

TABLE2 FDB 0 0-ELEMENTS FOR...
       FDB 0 1-THERMOCOUPLE CONVERSION
       FDB 0 2- ( YN VALUES )
       FDB 0 3-
       FDB 0 4-
       FDB 0 5-
       FDB 0 6-
       FDB 0 7-
       FDB 0 8-
       FDB 0 9-
       FDB 0 10-

TABLE3 FDB 0 0-ELEMENTS FOR...
       FDB 0 1-DC TO RMS CONVERSION
       FDB 0 2- ( YN VALUES )
       FDB 0 3-
       FDB 0 4-
       FDB 0 5-
       FDB 0 6-
       FDB 0 7-
       FDB 0 8-
       FDB 0 9-
       FDB 0 10-

TABLES FDB TABLE1 TABLE 1 ADDRESS
       FDB TABLE2
       FDB TABLE3
TBLSHB EQU TABLES/256 TABLES HI BYTE
TBTEMP EQU TBLSHB*256
TBLSLB EQU TABLES-TBTEMP TABLES LO BYTE
CVTBL1 CLR TEMP1
       LDAB #TBLSHB TABLES HI BYTE TO TEMP0
       STA B TEMP0
       ASL A MOVE TABLE# FROM ACCA...
       ROL TEMP1 B7,B6 TO TEMP1
       ROL TEMP1
       ASL TEMP1 MULTIPLY BY 2
       LDX TEMP0 XH=TABLES HB, XL=TABLE#*2

*TBLSLB-2,XPOINTS TO TABLE ADDRESS...
*WHERE XH=TBLSHB, XL=TABLE#*2

       LDX TBLSLB-2,X TABLE BASE ADD. IN X REG
       STX TEMP0
       LDA A COUNT HI BYTE
       LDA B COUNT+1 LO BYTE
       LSR A
       ROR B
       LSR A /4 GIVES TABLE ELEMENT#
       ROR B
       STA B SAVEB ((X-XN)/4)=SMALL A /4
       ASL A 2*ELEMENT# 
       ADD A TEMP1 ADD 2*ELEMENT# TO XL
       STA A TEMP1
       LDA A TEMP0
       ADC A #0 ADD CARRY TO XH
       STA A TEMP0
       LDX TEMP0 POINTS TO TABLE ELEMENT YN
       STX SAVEX
       LDA A 2,X Y(N+1) LO BYTE
       LDA B 3,X
       SUB B 1,X Y(N+1)-YN
       SBC A 0,X Y(N+1)-YN-C= DELTA Y
       LSR A /8 TO SCALE DELTA Y...
       ROR B TO < 8 BITS FULL SCALE
       LSR A
       ROR B
       LSR A
       ROR B
       LDA A SAVEB RESTORE SMALL A /4
       JSR MPY8 A TIMES B =A,B
       LSR A /32
       ROR B
       LSR A
       ROR B
       LSR A
       ROR B
       LSR A
       ROR B
       LSR A
       ROR B
       STA A TEMP0 STORE PRODUCT AS...
       STA B TEMP1 SMALL B
       LDX SAVEX RESTORE YN POINTER
       LDA A 0,X LOAD YN
       LDA B 1,X
       ADD B TEMP1 FORM Y=YN+SMALL B
       ADC A TEMP0
       STA A COUNT
       STA B COUNT+1
       RTS
       PAGE
*FILE  16,C-15, 8B*8B=16B MULTIPLY
*TWO   PASS ASSEMBLY (373WDS,27BYTES, MS)

*A     TIMES B, RESULT IN A,B

MPY8   STA B TEMP1 MULTIPLICAND
       STA A TEMP0 MULTIPLIER
       LDA A #8
       STA A TEMP3
       CLR A
       CLR B
MPY81  ASL B SHIFT RESULT LEFT
       ROL A
       ASL TEMP1 TEST NEXT MSB OF MPYCAND
       BCC MPY82
       ADD B TEMP0 ADD MULTIPLIER TO RESULT
       ADC A #0
MPY82  DEC TEMP3 DECREMENT BIT COUNT
       BNE MPY81 COUNT NOT ZERO
       RTS
       PAGE
*      FILE 19,C-3 TEST CONVERSION TABLES
*      ONE PASS ASSEMBLY

*      THIS ROUTINE TESTS THE CONVERSION TABLES
*      ROUTINE BY STACKING Y VALUES CORRESPONDING
*      TO X=N*256, FOR N=1 TO 40. THE DATA STACK
*      BEGINS AT 128, WITH XH(N=1).


        ORG $1
*      VARIABLES USED:
TEMP0  RMB 1
TEMP1  RMB 1
TEMP3  RMB 1
TEMP4  RMB 1
COUNT  RMB 2
SAVEB  RMB 1
SAVEX  RMB 2
SAVESP RMB 2
SAVSP1 RMB 2

       ORG $8000
*      EXECUTE PROGRAM BY ENTERING MAID; SET
*      BREAKPOINT AT BRA* INSTRUCTION, THEN ;G.

TCVTBL LDS #207 SP=127+80=207
       STS SAVSP1 INITIALIZE DATA POINTER

       LDA A #40 INITIALIZE COUNT TO 10,240
       STA A TEMP4 
       LDAA #$7F INITIALIZE SUBROUTINE STACK
TCTBL1 STS SAVESP SAVE SUBROUTINE STACK
       LDS SAVSP1 LOAD DATA POINTER
       LDA A TEMP4 LOAD NEW INPUT COUNT
       STA A COUNT
       CLR COUNT+1 INPUT COUNT LOW BYTE
       LDA A #01000000B TABLE#=1 IN B7,B6
       JSR CVTBLS CALL CONVERSION TABLES
       LDA A COUNT STACK RESULT
       PSH A
       LDA A COUNT+1
       PSH A
       STS SAVSP1 SAVE DATA STACK POINTER
       LDS SAVESP RESTORE SUBROUTINE POINTER
       DEC TEMP4 SUBTRACT 256 FROM INPUT COUNT
       BNE TCTBL1 CONVERT ANOTHER VALUE
       BRA * EXORCISER BREAK POINT
       ORG $83FE
       FDB $8000 SET RESTART VECTOR FOR EXOR.
       END
