ASMB,R,B,L HED ** RTE-B DEV. SUBRT. HP 12556 40 BIT OUTPT. REG ** NAM FBTWR,7 09601-16022 REV A * * ********************************************** * * RELOC TAPE 09601-16022 * SOURCE TAPE 09601-18022 * ERS 09601-16022-1 * LISTING 09601-16022-2 * ********************************************** * * * A. WERNICK SEPT. 1974 REV. A * * * FBTWR MAY BE CALLED BY RTE BASIC OR FORTRAN PROGRAMS * TO PROGRAM THE 12556B 40 BIT OUTPUT REGISTER CARD * * CALL STATEMENT (BASIC/FORTRAN): * * FBTWR (U,A,B,C,X,M) (ALL PARMS ARE INTEGER) * * U = UNIT NO. (1 TO N) * A = MOST SIGNIFICANT DIGITS: * * OCTAL MODE: OCTAL NO. FROM 0-177777 * OR A DECIMAL EQUIVALENT * IN THIS RANGE * * BCD MODE: FOUR DECIMAL DIGITS FROM * 0-9 EACH * * B = NEXT MOST SIGNIFICANT DIGITS * * OCTAL MODE: OCTAL NO. FROM 0-177777 * OR DECIMAL EQUIVALENT * * BCD MODE: FOUR DECIMAL DIGITS FROM * 0-9 EACH * * C = LEAST SIGNIFICANT DIGITS * * OCTAL MODE: OCTAL NO. FROM 0-377 * OR DECIMAL EQUIVALENT * * BCD MODE: TWO DECIMAL DIGITS FROM * 0-9 EACH * * X = 41ST BIT: 0 OR 1 * * M = MODE: 0 FOR OCTAL * 1 FOR BCD * SKP EXT #FBT1,#FBTN,#ERRU,BCD6,FLOAT,.DST,ERROR EXT .ENTR,EXEC * * ENT FBTWR * * UNITN NOP UNIT NO. ADATA NOP MSD BDATA NOP NEXT MSD CDATA NOP LSD BIT41 NOP 41ST BIT MODEB NOP MODE * FBTWR NOP ******ENTRY POINT****** JSB .ENTR GET PARM ADDRS DEF UNITN LDA UNITN,I GET UNIT NO. CMA,INA -UNITN ADA #FBTN -UNITN + UMAX SSA UNITN > UMAX ? JMP ERR1 YES, ERROR CCA A=-1 ADA UNITN,I SET UP UNIT NO. ADA #FBT1 UNITN - 1 + 1ST UNIT NO. ADA BIT6 SET DVR54 FOR BINARY MODE STA IUNIT STORE UNIT NO TO BE PROG * LDA BIT41,I GET 41ST BIT CLE,ERA BIT41 = 0 OR 1 ? SZA JMP ERR1 NO, ERROR * LDA MODEB,I GET MODE CLE,ERA MODE = 0 OR 1 ? SZA JMP ERR1 NO, ERROR * LDA IDATA STORE 1ST DATA WD STA IADRS ADDRESS LDA ODATA STORE 1ST DATA OUTPT STA OADRS WD ADDRESS * CONT0 LDA IADRS,I GET DATA ADDRESS LDA A,I GET DATA WORD LDB MODEB,I GET MODE SZB,RSS OCTAL MODE? JMP OCTMD YES, SKIP BCD CONVERSION STA TEMP1 BCD MODE, TEST DATA & CONVERT TO OCTAL SSA DATA < 0 ? JMP ERR1 YES, ERROR ADA M100 DATA - 100 LDB OADRS GET OUTPT DATA ADDRESS CPB EDATA LAST DATA WORD ? RSS YES, 99 IS MAX VALUE ADA M9900 NO, 9999 IS MAX VALUE SSA,RSS DATA - (MAX VAL + 1) < 0 ? JMP ERR1 NO, ERROR * LDA TEMP1 DATA OK, CONVERT & STORE JSB FLOAT CONVT DATA TO FLTG PT AND JSB .DST STORE FOR BCD6 SUBRT DEF TEMP2 JSB BCD6 CONVT FLTG PT DATA TO BCD DEF *+3 DEF TEMP2 INPUT: FLTG PT DATA DEF TEMP1 OUTPT: BCD DATA (2 WDS) LDA TEMP1 GET BCD DATA * OCTMD LDB OADRS GET DATA STORE ADDRESS CPB EDATA LAST DATA WORD RSS YES, ONLY BITS 0-7 USED JMP CONT1 NO, STORE ALL 16 BITS CLB PUT DATA IN BITS 8-15 RRR 8 OF B REG SZA WAS OCTAL NO.> 377 ? JMP ERR1 YES, ERROR RRR 16 NO, PUT DATA IN BITS 8-15 ADA BIT41,I OF A REG & ADD BIT 41 CONT1 STA OADRS,I STORE DATA WORD LDB OADRS CPB EDATA LAST DATA WORD ? JMP OUTPT YES, OUTPT & EXIT ISZ OADRS NO, INCREMENT OUTPT DATA ADDRS ISZ IADRS INCREMENT INPUT DATA ADDRS JMP CONT0 CONTINUE-NEXT DATA WORD * OUTPT JSB EXEC OUTPUT DATA & EXIT DEF *+5 RETURN POINT DEF .2 WRITE REQUEST DEF IUNIT LOG. UNIT NO. & BINARY MODE DEF WORD1 1ST OUTPT DATA WD DEF .3 OUTPT 3 DATA WDS * JMP FBTWR,I *******EXIT******** * * ERR1 CLA,INA SET FOR ERROR 'FBT - 1' STA ERRNO JSB ERROR OUTPUT ERROR MESSAGE DEF *+5 RETURN POINT DEF ERRNO ERROR NO. DEF ERRMN ERROR MNEMONIC DEF LUERR OUTPT LOGICAL UNIT DEF ENDEF CALL PT JMP FBTWR,I ***********EXIT*********** * * * STORAGE AND CONSTANTS * ERRNO NOP ERROR NO. ERRMN DEC 3 ERROR MNEMONIC ASC 2,FBT ENDEF DEF FBTWR DEF TO ENTRY POINT LUERR EQU #ERRU LOGICAL UNIT FOR ERR MSG IUNIT NOP LOGICAL UNIT OF 12556 CARD A EQU 0 A REG .2 DEC 2 .3 DEC 3 BIT6 OCT 100 M100 DEC -100 M9900 DEC -9900 TEMP1 NOP 2 WDS OF STORAGE FOR FLTG NOP PT. OR BCD DATA TEMP2 NOP 2 MORE WDS OF STORAGE NOP * WORD1 NOP 1ST OUTPT DATA WD WORD2 NOP 2ND OUTPT DATA WD WORD3 NOP 3RD OUTPT DATA WD & 41ST BIT * IDATA DEF ADATA 1ST INPUT DATA WD ADDRS ODATA DEF WORD1 1ST OUTPT DATA WD ADDRS IADRS NOP INPUT DATA ADDRS COUNTER OADRS NOP OUTPT DATA ADDRS COUNTER EDATA DEF WORD3 ADDRS OF LAST DATA WORD * END