%QUIET_ON %INCLUDE {sysrom.i41} %QUIET_OFF .KHP Page 4 Library %INITPAGE 4 %ORG 4000 .Service module poll %TURBODIS C=0 ALL RAMSEL PERSEL LDI =01A %LABEL CLKPATCHLP C=C-1 X JNC CLKPATCHLP LDI =27A A=C X READ D RCR 6 ?A#C X .Return if cold start constant is not ours RTNC %TURBOEN XQNC RESTCSC C=0 ALL LDI =182 RCR 11 A=C ALL POP PUSH ?A#C M .Return if calculator waked from deep sleep RTNC POP .Fall to WAITKEYL .Wait for key press and return its keycode .Output hw keycode in A[X]. .Output index of keycode table entry in B[X]. .Output status set 0 in ST. .Goes thru light sleep, going to deep sleep exits. .Checks battery status and refreshes annunciators .on each wakeup. .Uses A and C. .Uses one subroutine level. %LABEL WAITKEYL ?LOWBAT JNC WKRFRANN READ E ST=C SF 6 C=ST WRIT E %LABEL WKRFRANN XQNC ANNOUT ?KEY JC WKKEYPR .Modify cold start constant in reg D READ D RCR 6 LDI =27A RCR 8 WRIT D .Go to light sleep GONC =018C %LABEL WKKEYPR C=0 ALL C=KEY RCR 3 XQNC WKRDKTAB CON =037 .00: 0 / spc CON =036 .01: 1 / 'Z' CON =076 .02: 2 / '=' CON =086 .03: 3 / '?' CON =035 .04: 4 / 'V' CON =075 .05: 5 / 'W' CON =085 .06: 6 / 'X' CON =034 .07: 7 / 'R' CON =074 .08: 8 / 'S' CON =084 .09: 9 / 'T' CON =010 .0A: SIGMA+ / 'A' CON =030 .0B: 1/x / 'B' CON =070 .0C: SQRT / 'C' CON =080 .0D: LOG / 'D' CON =0C0 .0E: LN / 'E' CON =011 .0F: X<>Y / 'F' CON =031 .10: RDN / 'G' CON =071 .11: SIN / 'H' CON =081 .12: COS / 'I' CON =0C1 .13: TAN / 'J' CON =032 .14: XEQ / 'K' CON =072 .15: STO / 'L' CON =082 .16: RCL / 'M' CON =013 .17: ENTER / 'N' CON =073 .18: CHS / 'O' CON =083 .19: EEX / 'P' CON =014 .1A: - / 'Q' CON =015 .1B: + / 'U' CON =016 .1C: * / 'Y' CON =017 .1D: / / ':' CON =077 .1E: . / ',' CON =087 .1F: R/S CON =0C3 .20: BACKARR CON =0C2 .21: SST CON =012 .22: SHIFT CON =0C4 .23: ALPHA CON =0C5 .24: PRGM CON =0C6 .25: USER CON =018 .26: ON CON =000 .27: End of table %LABEL WKRDKTAB POP A=C X B=0 X %LABEL WKKTABLP RROM ?A#C X JNC RESTCSC ?C#0 X JNC WKNOKEY C=C+1 M C=B X C=C+1 X B<>C X JNC WKKTABLP %LABEL WKNOKEY C=C-1 X A=C X %LABEL RESTCSC .Restore cold start constant in reg D READ D RCR 6 LDI =169 RCR 8 WRIT D RTN .Error exit with message .Message length in the word following the call, .then the message as required for MSGX. .No return, goes to ERR110. %LABEL ER_EXITL XQNC ERRSUB POP A=C ALL RROM C=0 M RCR 11 C=A+C M SF 8 XQNC MSGX GONC ERR110 .Find first non-zero character in ALPHA .Output zero in C if ALPHA is empty. .Else: .Output found non-zero character in C and G. .Output lower nibble address of the character .found in A[3..0] and in reg 8[13..10]. .Uses PT. .Uses one subroutine level. %LABEL FIRSTCHRL PT= 3 LC 4 LDI =008 PT= 3 A=C WPT JNC NEXTCHRLPE .Find next non-zero character in ALPHA .Input lower nibble address of the last .non-zero character found in reg 8[13..10]. .Output zero in C if there is no non-zero .character in ALPHA after the last found. .Else: .Output found non-zero character in C and G. .Output lower nibble address of the character .found in A[3..0] and in reg 8[13..10]. .Uses PT. .Uses one subroutine level. %LABEL NEXTCHRL READ 8 RCR 10 PT= 3 A=C WPT %LABEL NEXTCHRLP C=0 PT LDI =005 ?A#C WPT JNC NEXTCHRZ XQNC INCADA %LABEL NEXTCHRLPE XQNC GTBYTA C=0 XS ?C#0 X JNC NEXTCHRLP PT= 0 G=C PT= 3 READ 8 RCR 10 A<>C WPT A=C WPT RCR 4 WRIT 8 C=0 ALL PT= 0 C=G RTN %LABEL NEXTCHRZ C=0 ALL RTN .Binary to decimal .Let n = hexadecimal digit count <= 8. .Input binary number in B[n - 1..0]. .Input PT = n - 1. .Output decimal number in C. .Output PT = 12. .Uses A and B. %LABEL BINDECL SETDEC C=0 ALL JNC BDLOOPE %LABEL BDLOOP CSR ALL C=C+C ALL C=C+C ALL C=C+C ALL C=C+C ALL %LABEL BDLOOPE A=0 ALL A<>B PT A=A+1 ALL A=A-1 ALL C=A+C ALL DECPT ?PT= 13 JNC BDLOOP RCR 11 LDI =009 A=C ALL PT= 12 %LABEL BDXLOOP ?A#0 PT JC BDRDY ASL M A=A-1 X JNC BDXLOOP A=0 ALL %LABEL BDRDY A<>C ALL SETHEX RTN .Maskedbinary to decimal/hexalpha .Input word size mask + 1 in M. .Input maskedbinary number in B. .Input flag 2 = hexalpha output preferred. .Input flag 3 = signed output. .Output decimal/hexalpha number in C. .Output flag 9 = negative input. .Output Q = 12. .Selects Q as active pointer. .Uses A and B. .Uses one subroutine level. %LABEL MBIDEHL ?FS 2 JNC MBIDECL C=M C=C-1 ALL A=C ALL C=0 ALL C=C+1 ALL RCR 8 ?AC WPT A=A-C PT RCR 13 INCPT LC 4 JNC BINHEXLP1 %LABEL BINHEX30 A<>C WPT RCR 13 INCPT LC 3 %LABEL BINHEXLP1 A<>C WPT INCPT INCPT ?P=Q JNC BINHEXLP PT= 13 LC 1 C=0 PQ RTN .Maskedbinary to decimal .Input word size mask + 1 in M. .Input binary number in B. .Input flag 3 = signed output. .Output decimal number in C. .Output flag 9 = negative input. .Output Q = 12. .Selects Q as active pointer. .Uses A and B. .Uses one subroutine level. %LABEL MBIDECL SELQ C=B ALL CF 9 ?FS 3 .Signed? JNC MBIDEC1 C=C+C ALL A=C ALL C=M C=C&A ?C#0 ALL JNC MBIDEC1 B<>C ALL C=-C ALL B<>C ALL SF 9 %LABEL MBIDEC1 A<>B ALL C=M C=C-1 ALL C=C&A PT= 7 B<>C ALL XQNC BINDECL ?FS 9 RTNNC SETDEC C=C-1 S SETHEX RTN .Decimal/hexalpha to binary .Input decimal/hexalpha in B. .Output binary number in C. .If input is decimal, . Checks for exponent < 10. . Absolute value of input is used. . Output flag 9 = negative input. . Uses A and B. .If input is hexalpha, . Converts anything. . Clears flag 9. . Output P = Q = 5. . Selects P as active pointer. . Uses A. %LABEL DEHBINL C=B ALL CF 9 C=C-1 S JC DBCHK C=C-1 S JC DEHBIN1 SF 9 JNC DBCHK %LABEL DEHBIN1 SELP PT= 5 .Fall to HEXBINL .Hexalpha to binary .Let n = hexadecimal digit count <= 6. .Input hexalpha in C. .Converts anything. .Input P = n - 1. .Output binary number in C. .Output Q = n - 1. .Selects P as active pointer. .Uses A. %LABEL HEXBINL A=0 ALL SETDEC A=A-1 ALL SETHEX SELQ PT= 1 JNC HEXBINLP1 %LABEL HEXBINLP INCPT INCPT %LABEL HEXBINLP1 C=C+C PT C=C+C PT JC HEXBIN40 %LABEL HEXBIN30 DECPT JNC HEXBINLP2 %LABEL HEXBIN40 DECPT C=A+C PT %LABEL HEXBINLP2 A=C PT CSR ALL ?P=Q JNC HEXBINLP SELP C=0 ALL A<>C WPT RTN .Decimal to binary .Input decimal number in B. .Checks for non-alpha data and exponent < 10. .Absolute value of input is used. .Output binary number in C. .Uses A and B. %LABEL DECBINL C=B ALL C=C-1 S C=C-1 S GOC ERRAD %LABEL DBCHK A=C ALL C=0 ALL ?A#0 XS RTNC LDI =00A ?AC ALL C=0 ALL C=B S RCR 13 C=A+C ALL A<>B ALL A=A-1 X JNC DBLOOP RTN .Decimal/hexalpha to maskedbinary .Input word size mask + 1 in M. .Input decimal/hexalpha in B. .Output maskedbinary number in C. .If input is decimal, . Checks for exponent < 10 and range. . Signed value of input is used. . Output flag 9 = negative input. . Uses A and B. .If input is hexalpha, . Checks for range. . Converts anything. . Clears flag 9. . Output P = Q = 5. . Selects P as active pointer. . Uses A. .Uses one subroutine level. %LABEL DEHMBIL XQNC DEHBINL A=C ALL C=M C=C-1 ALL C=C&A ?A#C ALL JC ERTOOBIGNL ?FS 9 RTNNC C=-C ALL A=C ALL C=M C=C-1 ALL C=C&A RTN %LABEL ERTOOBIGNL XQNC ER_EXITL CON =00B %MESSAGE {TOO BIG NUM} .Decimal/hexalpha to maskedbinary, .one argument in stack .Input decimal/hexalpha in reg 3. .Checks as in DEHMBIL. .Input word size in user flags 6..10, .where flag 10 is the least significant bit .and all of flags 6..10 zero mean word size 32. .Output word size mask + 1 in M. .Output maskedbinary number in C. .Sets ST = reg E[13..12], meanings as in WSMASKL. .Uses A and B. .Clears flags 6 and 7. .Uses flag 9. .Uses two subroutine levels. %LABEL DEHMBIXL XQNC WSMASKL READ 3 B<>C ALL XQNC DEHMBIL CF 6 CF 7 RTN .Decimal/hexalpha to maskedbinary, .two arguments in stack .Input decimal/hexalpha in reg 2. .Input decimal/hexalpha in reg 3, . interpreted as a signed bit number. .Checks as in DEHMBIL. .Input word size in user flags 6..10, .where flag 10 is the least significant bit .and all of flags 6..10 zero mean word size 32. .Check: -ws <= reg 3 < ws. .Output word size mask + 1 in M. .Output word size in C and reg 9. .Output maskedbinary number from reg 2 in B and N. .Output bit# in A[X], sign indicator in A[S]. .Sets ST = reg E[13..12], meanings as in WSMASKL. .Uses A. .Clears flags 6 and 7. .Uses flag 9. .Uses two subroutine levels. %LABEL DEHMBIYBNL XQNC WSMASKL READ 2 B<>C ALL C=0 S C=0 M WRIT 9 XQNC DEHMBIL N=C READ 3 B<>C ALL XQNC DEHBINL ?C#0 M JC ERTOOBIGNL A=C ALL READ 9 ?FS 9 JNC DEHMBIYBN1 A=A-1 S C=C+1 X %LABEL DEHMBIYBN1 ?AC ALL READ 9 CF 6 CF 7 RTN .Decimal/hexalpha to maskedbinary, .two arguments in stack .Input decimal/hexalpha in reg 2 & reg 3. .Checks as in DEHMBIL. .Input word size in user flags 6..10, .where flag 10 is the least significant bit .and all of flags 6..10 zero mean word size 32. .Output word size mask + 1 in M. .Output maskedbinary number from reg 2 in A and N. .Output maskedbinary number from reg 3 in C and B. .Sets ST = reg E[13..12], meanings as in WSMASKL. .Clears flags 6 and 7. .Uses flag 9. .Uses two subroutine levels. %LABEL DEHMBIYXL XQNC WSMASKL READ 2 B<>C ALL XQNC DEHMBIL N=C READ 3 B<>C ALL XQNC DEHMBIL B<>C ALL %LABEL DEHMBIYXF C=N A=C ALL C=B ALL CF 6 CF 7 RTN .Decimal/hexalpha to maskedbinary, .two arguments in stack .Input decimal/hexalpha in reg 2 & reg 3. .Checks as in DEHMBIL. .Input word size in user flags 6..10, .where flag 10 is the least significant bit .and all of flags 6..10 zero mean word size 32. .Output word size mask + 1 in M. .Output absolute value of maskedbinary number .from reg 2 in A and N. .Output absolute value of maskedbinary number .from reg 3 in C and B. .Sets ST = reg E[13..12], meanings as in WSMASKL. .Clears flag 6. .Sets flag 7 if the number in reg 3 is negative, .clears it otherwise. .Sets flag 8 if numbers in reg 2 and reg 3 have .different sign, clears it otherwise. .Uses flag 9. .Uses two subroutine levels. %LABEL DEHMBIYXAL XQNC WSMASKL READ 2 B<>C ALL XQNC DEHMBIL B<>C ALL C=B ALL C=C+C ALL A=C ALL C=M C=C&A CF 8 ?C#0 ALL JNC DEHMBIYXA1 A=C ALL A=A-B ALL B=A ALL SF 8 %LABEL DEHMBIYXA1 C=B ALL N=C READ 3 B<>C ALL XQNC DEHMBIL B<>C ALL C=B ALL C=C+C ALL A=C ALL C=M C=C&A CF 7 ?C#0 ALL JNC DEHMBIYXAF A=C ALL A=A-B ALL B=A ALL SF 7 .Invert flag 8 ?FS 8 JNC DEHMBIYXA2 CF 8 JNC DEHMBIYXAF %LABEL DEHMBIYXA2 SF 8 %LABEL DEHMBIYXAF C=N A=C ALL C=B ALL CF 6 RTN .Double absolute maskedbinary number to double .maskedbinary number .Input word size mask + 1 in M. .Input higher abs maskedbinary number in N. .Input lower abs maskedbinary number in B. .Input flag 8 = negative input. .Output higher maskedbinary number in C and N. .Output lower maskedbinary number in B. .Uses A. %LABEL ABS2MBI2L C=M A=C ALL ?FS 8 JNC A2M2ADJ %LABEL A2M2NEG C=N ?C#0 ALL JNC A2M2NEG0 C=A-C ALL N=C ?B#0 ALL JNC A2M2ADJ %LABEL A2M2NEG0 C=C-1 ALL JNC A2M2NEG1 C=A+C ALL %LABEL A2M2NEG1 N=C C=B ALL C=A-C ALL B<>C ALL %LABEL A2M2ADJ C=B ALL C=C+C ALL C=C&A ?C#0 ALL JNC A2M2RDY C=N C=C+1 ALL ?A#C ALL JC A2M2ADJ0 C=0 ALL %LABEL A2M2ADJ0 N=C %LABEL A2M2RDY C=N RTN .Double maskedbinary number to double absolute .maskedbinary number .Input word size mask + 1 in M. .Input higher maskedbinary number in N. .Input lower maskedbinary number in B. .Output higher abs maskedbinary number in C and N. .Output lower abs maskedbinary number in B. .Output flag 9 = negative input. .Uses A. %LABEL MBI2ABS2L C=M A=C ALL %LABEL M2A2SGN C=N C=C+C ALL C=C&A CF 9 ?C#0 ALL JNC M2A2ADJ SF 9 %LABEL M2A2ADJ C=B ALL C=C+C ALL C=C&A ?C#0 ALL JNC M2A2ABS C=N C=C-1 ALL JNC M2A2ADJ0 C=A+C ALL SF 9 %LABEL M2A2ADJ0 N=C %LABEL M2A2ABS ?FS 9 JNC M2A2RDY C=N C=A-C ALL N=C ?B#0 ALL JNC M2A2RDY C=C-1 ALL N=C C=B ALL C=A-C ALL B<>C ALL %LABEL M2A2RDY C=N RTN .BFNCRTN2L: .Two argument function return .Drops stack. .Otherwise works as BFNCRTN1L. .BFNCRTN1L: .One argument function return .Copies reg 3 in reg 4. .Otherwise works as BFNCRTN0L. .BFNCRTN0L: .One argument function return .Input word size mask + 1 in M. .Input binary result in A. .Input flag 2 = hexalpha output preferred. .Input flag 3 = signed output. .Sets reg E[13..12] = ST, meanings as in WSMASKL. .Output maskedbinary result in N. .Output decimal/hexalpha in C and reg 3. .Output Q = 12. .Selects Q as active pointer. .Uses A and B. .Uses flag 9. .Uses two subroutine levels. %LABEL BFNCRTN2L READ 1 WRIT 2 C=0 ALL RAMSEL RDATA WRIT 1 %LABEL BFNCRTN1L READ 3 WRIT 4 %LABEL BFNCRTN0L C=M C=C-1 ALL C=C&A N=C B<>C ALL READ E RCR 12 C=ST RCR 2 WRIT E XQNC MBIDEHL WRIT 3 RTN .BFNCRTN3L: .Two argument function return, two results .Copies reg 3 in reg 4. .Input word size mask + 1 in M. .Input binary results in A and C. .Input flag 2 = hexalpha output preferred. .Input flag 3 = signed output. .Sets reg E[13..12] = ST, meanings as in WSMASKL. .Output decimal/hexalpha from A in reg 2. .Output maskedbinary result from C in N. .Output decimal/hexalpha from C in C and reg 3. .Output Q = 12. .Selects Q as active pointer. .Uses A and B. .Uses flag 9. .Uses two subroutine levels. %LABEL BFNCRTN3L N=C C=M C=C-1 ALL C=C&A B<>C ALL XQNC MBIDEHL WRIT 2 C=N A=C ALL JNC BFNCRTN1L .Make word size mask .Cuts word size to fit into display. .Input word size in user flags 6..10, .where flag 10 is the least significant bit .and all of flags 6..10 zero mean word size 32. .Output word size mask + 1 in M. .Output word size in B[X]. .Output word size in user flags 6..10. .Sets ST = reg E[13..12], meanings: . User flag 0 = flag 7 = carry . User flag 1 = flag 6 = overflow . User flags 2&3 = flags 5&4 = DEC/BIN/OCT/HEX . User flag 4 = flag 3 = signed output . User flag 5 = flag 2 = hexalpha output preferred .Uses A. %LABEL WSMASKL READ E RCR 12 ST=C RCR 13 C=C+C X C=C+C X C=0 XS C=C+C X CSR X ?C#0 X JC WSRDY LDI =020 %LABEL WSRDY A=C X B=A X C=0 ALL C=C+1 ALL A=A-1 X %LABEL WSMLOOP C=C+C ALL A=A-1 X JNC WSMLOOP M=C .M = ws mask + 1 ?FS 4 JC WSMBH %LABEL WSMOD ?FS 5 RTNNC %LABEL WSMOCT ?FS 3 .Signed? RTNNC %LABEL WSMOCTS .30 bits allowed in OCT mode with sign LDI =01E A=C X ?AC X RTN .Octal output formatting .Input binary number (absolute value) in C, .at most 33 bits .Output binary number in C so formatted that: .- C[M] = the number shifted so that the most . significant triple is next to C[S]; .- C[X] = the number of digits to output - 1. .Uses A[X]. %LABEL FMTOCTL ?C#0 ALL RTNNC C=C+C ALL C=C+C ALL RCR 9 LDI =00A A=C X C=0 X ?C#0 S JC FMTOCTF %LABEL FMTOCTLP C=C+C ALL C=C+C ALL C=C+C ALL A=A-1 X ?C#0 S JNC FMTOCTLP %LABEL FMTOCTF C=C+C ALL RCR 1 A<>C X RTN .Hexadecimal output formatting .Input binary number (absolute value) in C, .at most 32 bits .Output binary number in C so formatted that: .- C[M] = the number shifted so that the most . significant nybble is next to C[S]; .- C[X] = the number of digits to output - 1. .Uses A[X]. %LABEL FMTHEXL ?C#0 ALL RTNNC RCR 8 LDI =007 A=C X C=0 X ?C#0 S JC FMTHEXF %LABEL FMTHEXLP RCR 13 A=A-1 X ?C#0 S JNC FMTHEXLP %LABEL FMTHEXF RCR 1 A<>C X RTN .If key pressed down, display function name .which ends at three words before the return .address (MESSAGE format). .Clears flag 8. .Any register may be used. .If the key is nulled, goes to BINVIEWXSE. %LABEL DISFNAME XQNC RSTMS1 CF 8 POP PUSH C=C-1 M C=C-1 M C=C-1 M CLRKEY ?KEY RTNNC XQNC MSGX %TURBODIS LDI =240 C=C+C X %LABEL NULT10 CLRKEY ?KEY GONC RST05 C=C-1 X JNC NULT10 %TURBOEN XQNC MSGA CON MSGNL %TURBODIS LDI =3E8 %LABEL NULT20 C=C-1 X JNC NULT20 %TURBOEN XQNC RSTKB GONC BINVIEWXSE %LABEL DECMODEL C=0 X JNC SETMODE %LABEL BINMODEL LDI =010 JNC SETMODE %LABEL OCTMODEL LDI =020 JNC SETMODE %LABEL HEXMODEL LDI =030 %LABEL SETMODE B<>C X C=0 ALL LDI =0F0 C=-C-1 ALL A=C ALL READ E RCR 12 C=C&A A=C ALL C=B X C=C|A RCR 2 WRIT E JNC BMODESL %LABEL STOWSL READ 3 B<>C ALL XQNC DEHBINL ?C#0 ALL GONC ERRDE A=C ALL C=0 ALL LDI =020 A<>C ALL ?AC ALL READ E RCR 11 A=C ALL LDI =3C1 C=C&A A<>B ALL C=C|A RCR 3 WRIT E .Fall to BMODESL %LABEL BMODESL XQNC WSMASKL ?FS 13 .Running? RTNC READ E ST=C ?FS 5 .Message in display? RTNC RCR 12 ST=C XQNC ENLCD ?FS 4 JC BMODBH %LABEL BMODOD ?FS 5 JNC BMODDEC %LABEL BMODOCT XQNC MESSL %DMESSAGE {OCT-} JNC BMODSN&WS %LABEL BMODDEC XQNC MESSL %DMESSAGE {DEC-} JNC BMODSN&WS %LABEL BMODBH ?FS 5 JC BMODHEX %LABEL BMODBIN XQNC MESSL %DMESSAGE {BIN-} JNC BMODSN&WS %LABEL BMODHEX XQNC MESSL %DMESSAGE {HEX-} %LABEL BMODSN&WS ?FS 3 .Signed? JC BMODS %LABEL BMODN LDI =00E .'N' JNC BMODSN %LABEL BMODS LDI =013 .'S' %LABEL BMODSN WRIT F XQNC MESSL %DMESSAGE {-WS=} A<>B X .Divide wordsize by 10 C=0 ALL LDI =00A A=A-C X JC BMODWS C=C+1 M A=A-C X JC BMODWS C=C+1 M A=A-C X JC BMODWS C=C+1 M A=A-C X %LABEL BMODWS A=A+C X RCR 3 ?C#0 X JNC BMODWS1 B=A X A=C X LDI =030 C=A+C X WRIT F A<>B X %LABEL BMODWS1 LDI =030 C=A+C X WRIT F XQNC LEFTJ SF 8 .Message ready GONC MSG105 %LABEL RCLWSL XQNC RSTCOFLGS ?FS 11 XQC R^SUB XQNC WSMASKL PT= 1 XQNC BINDECL WRIT 3 RTN %LABEL BNORML XQNC DEHMBIXL JNC BRTN0 %LABEL BCHSL XQNC DEHMBIXL C=-C ALL %LABEL BRTN0 A=C ALL GONC BFNCRTN0L %LABEL BNOTL XQNC DEHMBIXL C=-C-1 ALL NOP JNC BRTN0 %LABEL BINCL XQNC DEHMBIXL C=C+1 ALL NOP JNC BRTN0 %LABEL BDECL XQNC DEHMBIXL C=C-1 ALL NOP JNC BRTN0 %LABEL BBITL XQNC WSMASKL READ 3 B<>C ALL C=0 S C=0 M N=C XQNC DEHBINL A=C ALL C=N ?FS 9 JC BBITL1 ?AC ALL A=A-C ALL JC BBITERR %LABEL BBITL2 C=0 ALL C=C+1 ALL JNC BBITLPE %LABEL BBITLP C=C+C ALL %LABEL BBITLPE A=A-1 ALL JNC BBITLP %LABEL BBITF CF 6 CF 7 A=C ALL GONC BFNCRTN1L %LABEL BABSL XQNC DEHMBIXL A=C ALL B=A ALL C=C+C ALL A=C ALL C=M SF 6 ?A#C ALL JNC BRTN1 CF 6 C=C&A ?C#0 ALL JNC BRTN1 C=B ALL C=-C ALL B<>C ALL %LABEL BRTN1 A<>B ALL GONC BFNCRTN1L %LABEL BSHFLL XQNC DEHMBIXL C=C+C ALL A=C ALL B=A ALL .B=result C=M C=C&A ?C#0 ALL JNC BSHFL1 SF 7 %LABEL BSHFL1 .F7=carry N=C .N=carry C=B ALL C=C+C ALL A=C ALL C=M C=C&A .C=sign A=C ALL C=N ?A#C ALL JNC BRTN1 SF 6 JNC BRTN1 %LABEL BSSHFRL XQNC DEHMBIXL C=C+C ALL A=C ALL B=A ALL C=M C=C&A .C=sign C=C+C ALL A=C ALL C=B ALL C=C|A JNC BSHFRF %LABEL BSHFRL XQNC DEHMBIXL C=C+C ALL %LABEL BSHFRF C=C+C ALL C=C+C ALL RCR 1 A=C ALL GONC BFNCRTN1L %LABEL BSSHFXL SF 8 JNC BSHFX1 %LABEL BSHFXL CF 8 %LABEL BSHFX1 XQNC DEHMBIYBNL ?AB ALL %LABEL BSHFRLPE A=A-1 X JNC BSHFRLP A=C ALL GONC BFNCRTN2L %LABEL BROTLL XQNC DEHMBIXL C=C+C ALL A=C ALL C=M C=C-1 ALL C=C&A ?A#C ALL JNC BROTF C=C+1 ALL %LABEL BROTF A=C ALL GONC BFNCRTN1L %LABEL BROTRL XQNC DEHMBIXL C=C+C ALL C=C+C ALL C=C+C ALL RCR 1 ?C#0 S JNC BROTF A=C ALL C=M C=C+C ALL C=C+C ALL C=C+C ALL RCR 1 C=C|A JNC BROTF %LABEL BROTXL XQNC DEHMBIYBNL %LABEL BROTMODLP A=A-C X JNC BROTMODLP A=A+C X ?A#0 S JNC BROTMODF ?A#0 X JNC BROTMODF A<>C X C=A-C X A<>C X %LABEL BROTMODF C=B ALL JNC BROTLLPE %LABEL BROTLLP B=A ALL C=C+C ALL A=C ALL C=M C=C-1 ALL C=C&A ?A#C ALL JNC BROTLLP1 C=C+1 ALL %LABEL BROTLLP1 A<>B ALL %LABEL BROTLLPE A=A-1 X JNC BROTLLP A=C ALL GONC BFNCRTN2L %LABEL BANDL XQNC DEHMBIYXL %LABEL BAND1 C=C&A %LABEL BANDORF A=C ALL GONC BFNCRTN2L %LABEL BORL XQNC DEHMBIYXL C=C|A JNC BANDORF %LABEL BXORL XQNC DEHMBIYXL C=C|A B<>C ALL C=C&A C=-C-1 ALL A<>B ALL JNC BAND1 %LABEL BTESTL XQNC DEHMBIYXL C=C&A B<>C ALL XQNC RSTCOFLGS ?B#0 ALL JC BNOSKPL %LABEL BSKPL ?FS 13 JC BDOSKP READ E ST=C ?FS 4 JC BDOSKP XQNC MSG CON MSGNO RTN %LABEL BDOSKP XQNC GETPC XQNC SKPLIN GONC PUTPCX %LABEL BNOSKPL ?FS 13 RTNC READ E ST=C ?FS 4 RTNC XQNC MSG CON MSGYES RTN %LABEL B+L XQNC DEHMBIYXL A=A+B ALL JNC BADD1 %LABEL B-L XQNC DEHMBIYXL A=A-B ALL %LABEL BADD1 B=A ALL .B=result C=C+C ALL A=C ALL C=M C=C&A WRIT 9 C=N C=C+C ALL A=C ALL C=M C=C&A A=C ALL READ 9 C=A+C ALL WRIT 9 C=B ALL C=C+C ALL A=C ALL C=M C=C&A A=C ALL READ 9 C=A+C ALL WRIT 9 .R9=sum of signs C=B ALL A=C ALL C=M C=C&A ?C#0 ALL JNC BADD2 SF 7 .Carry %LABEL BADD2 A=C ALL READ 9 A=A+C ALL C=M C=C&A ?C#0 ALL JNC BADDF SF 6 .Overflow %LABEL BADDF A<>B ALL GONC BFNCRTN2L %LABEL BSMULL XQNC DEHMBIYXAL CF 7 SF 9 JNC BMULMIN %LABEL BMULL XQNC DEHMBIYXL CF 9 %LABEL BMULMIN ?AC ALL %LABEL BMULMINF ?C#0 ALL JNC BMULZ B=A ALL PT= 7 .Multiply B[7..0] by C[7..4] to N[11..0]. A=0 ALL JNC BMULLP1E %LABEL BMULLP1 A=A+B ALL %LABEL BMULLP1E C=C-1 PT JNC BMULLP1 ASL ALL DECPT ?PT= 3 JNC BMULLP1E ASR ALL A<>C ALL N=C A<>C ALL .Multiply B[7..0] by C[3..0] to A[11..0]. A=0 ALL JNC BMULLP2E %LABEL BMULLP2 A=A+B ALL %LABEL BMULLP2E C=C-1 PT JNC BMULLP2 ASL ALL DECPT ?PT= 13 JNC BMULLP2E ASR ALL .N[11..0] << 16 | A[11..0] to N[7..0]B[7..0]. C=N B=0 ALL PT= 3 B<>C WPT RCR 4 B<>C ALL RCR 10 C=A+C ALL A=0 ALL PT= 7 A<>C WPT RCR 8 A<>C ALL B<>C ALL C=A+C ALL N=C C=0 ALL PT= 8 C=C+1 PT A=C ALL JNC BBMOVLPE %LABEL BMULZ CLRABC GONC BFNCRTN3L .Move extra bits in B to N. %LABEL BBMOVLP A<>C ALL C=C+C ALL C=C+C ALL C=C+C ALL RCR 1 A=C ALL C=B ALL C=C&A ?C#0 ALL JNC BBMOVLP1 C=N C=C+C ALL C=C+1 ALL JNC BBMOVLP2 %LABEL BBMOVLP1 C=N C=C+C ALL %LABEL BBMOVLP2 N=C %LABEL BBMOVLPE C=M ?A#C ALL JC BBMOVLP C=N ?C#0 ALL JNC BMULF SF 7 %LABEL BMULF ?FS 9 JNC BSMULF .Absolute value of results in N & B. .Sign of result indicated by flag 8. ?FS 7 JC BSMULOVFL C=B ALL C=C+C ALL A=C ALL C=M C=C&A ?C#0 ALL JNC BSMULF1 C=M C=C-1 ALL A=C ALL C=0 ALL C=C+1 ALL ?A#C ALL JNC BSMULSPEC %LABEL BSMULOVFL SF 6 %LABEL BSMULF1 XQNC ABS2MBI2L %LABEL BSMULF A=C ALL C=B ALL GONC BFNCRTN3L %LABEL BSMULSPEC A=0 ALL GONC BFNCRTN3L %LABEL BSDIVL XQNC DEHMBIYXAL SF 9 JNC BDIVCHKZ %LABEL BDIVL XQNC DEHMBIYXL CF 9 %LABEL BDIVCHKZ ?C#0 ALL GONC ERRDE B=0 ALL PT= 0 ?AC ALL %LABEL BDIVLP0 BSR ALL DECPT JNC BDIVLPE %LABEL BDIVLP C=C+1 PT %LABEL BDIVLPE A=A-B ALL JNC BDIVLP A=A+B ALL ?PT= 0 JNC BDIVLP0 B<>C ALL %LABEL BDIVF A<>C ALL N=C ?FS 9 JNC BSDIVF .Divider in A. .Absolute value of div result in B. .Sign of div result indicated by flag 8. .Absolute value of mod result in C and N. ?FS 8 JNC BSDIVF1 B<>C ALL C=-C ALL B<>C ALL ?C#0 ALL JNC BSDIVF1 B<>C ALL C=C-1 ALL B<>C ALL C=A-C ALL N=C %LABEL BSDIVF1 ?FS 7 JNC BSDIVF2 CF 7 C=N C=-C ALL N=C %LABEL BSDIVF2 C=B ALL C=C+C ALL A=C ALL C=M ?A#C ALL JC BSDIVF3 SF 6 %LABEL BSDIVF3 C=N %LABEL BSDIVF A=C ALL C=B ALL GONC BFNCRTN3L %LABEL BSQRTL XQNC DEHMBIXL N=C .Root approx ?C#0 ALL JNC BSQRTF M=C .Root argument SELQ PT= 13 SELP PT= 0 A=C ALL C=0 ALL C=C+1 PT %LABEL BSQRTLENLP RCR 13 INCPT INCPT ?A#0 PQ JC BSQRTLENLP A=0 ALL A=A+1 PT PT= 0 %LABEL BSQRTPTLP INCPT ?C#0 PT JNC BSQRTPTLP RCR 1 DECPT ASR ALL ASR ALL N=C .Root approx JNC BSQRTLPE %LABEL BSQRTLP C=N %LABEL BSQRTLP0 B=A ALL A=C ALL C=0 ALL C=C+1 PT C=A+C ALL N=C A=A+C ALL C=0 ALL C=C+1 PT %LABEL BMULILP ASL ALL RCR 1 ?C#0 S JNC BMULILP ASR ALL A<>B ALL A=A+B ALL %LABEL BSQRTLPE C=M ?A#C ALL JNC BSQRTF ?AB ALL DECPT ?PT= 13 JNC BSQRTLP0 %LABEL BSQRTF XQNC WSMASKL CF 6 CF 7 C=N A=C ALL GONC BFNCRTN1L %LABEL BVIEW1 XQNC DEHMBIXL N=C B<>C ALL XQNC MBIDEHL JNC BVWSAVX %LABEL BVW1 .C = maskedbinary number (absolute value) .C[S] = sign ?C#0 S JNC BVWNORM C=-C ALL A=C ALL C=M C=C-1 ALL C=C&A ?FS 3 .Signed? JC BVWNORM .Set temporary signed mode SF 3 %LABEL BVWNORM N=C B<>C ALL XQNC MBIDECL %LABEL BVWSAVX WRIT 3 %LABEL BVW2 .N = maskedbinary number XQNC CLLCDE C=N ?FS 3 .Signed? JNC BVWABS C=C+C ALL A=C ALL C=M C=C&A ?C#0 ALL JC BVWNEG %LABEL BVWPLUS LDI =02B .'+' JNC BVWSIGN %LABEL BVWNEG C=N C=-C ALL A=C ALL C=M C=C-1 ALL C=C&A N=C %LABEL BVWMINUS LDI =02D .'-' %LABEL BVWSIGN XQNC ASCLCD C=N %LABEL BVWABS ?FS 4 JC BVWBH %LABEL BVWOD ?FS 5 JNC BVWDEC %LABEL BVWOCT XQNC FMTOCTL N=C LDI =04F .'O' XQNC ASCLCD C=N %LABEL BVWOLP C=0 S A=C X C=C+C ALL C=C+C ALL C=C+C ALL A<>C X N=C RCR 13 PT= 1 LC 3 XQNC ASCLCD C=N C=C-1 X JNC BVWOLP JNC BVWF %LABEL BVWDEC PT= 7 B<>C ALL XQNC BINDECL %LABEL BVWDLP C=0 S A=C X RCR 13 A<>C X N=C RCR 13 PT= 1 LC 3 XQNC ASCLCD C=N C=C-1 X JNC BVWDLP JNC BVWF %LABEL BVWBH ?FS 5 JC BVWHEX %LABEL BVWBIN XQNC FMTBINL N=C LDI =042 .'B' XQNC ASCLCD C=N %LABEL BVWBLP C=0 S A=C X C=C+C ALL A<>C X N=C RCR 13 PT= 1 LC 3 XQNC ASCLCD C=N C=C-1 X JNC BVWBLP %LABEL BVWF GONC ANNOUT %LABEL BVWHEX XQNC FMTHEXL N=C LDI =048 .'H' XQNC ASCLCD C=N %LABEL BVWHLP C=0 S B<>C X LDI =009 A=C X RCR 13 C=B X N=C RCR 13 PT= 1 LC 3 ?AC PT C=A-C PT %LABEL BVWH1 XQNC ASCLCD C=N C=C-1 X JNC BVWHLP JNC BVWF %LABEL BINL CF 13 .Stop program XQNC RSTCOFLGS ST=C CF 4 .Reset SST flag CF 7 .Reset ALPHA flag C=ST WRIT E XQNC BMODESL JNC BINLPNEW %LABEL BINVIEWX XQNC BVIEW1 %LABEL BINLPNEW C=0 ALL WRIT 9 CF 9 JNC BINLPE %LABEL BINLPBL XQNC BLINK %LABEL BINLP XQNC RSTKB %LABEL BINLPE .Reg 9[X] = #digits entered .Reg 9[M] = accumulated value .Reg 9[S] = sign .Flag 9 = max digit string length reached XQNC WAITKEYL SELP READ E RCR 1 ST=C ?A#0 XS GOC BINOUTNK A<>B X LDI =026 ?A#C X .Not ON? GONC BINOFF LDI =022 ?A#C X .Not SHIFT? GONC TOGSHIFT ?AB X A=A-1 X .0? GOC BABS A=A-1 X .1? GOC BSQRT A=A-1 X .2? GOC BSSHFR A=A-1 X .3? GOC BSSHFX A=A-1 X .4? GOC BSHFL A=A-1 X .5? GOC BSHFR A=A-1 X .6? GOC BSHFX A=A-1 X .7? GOC BROTL A=A-1 X .8? GOC BROTR A=A-1 X .9? GOC BROTX A=A-1 X .SIGMA+? GOC S/US A=A-1 X .1/x? GOC BINMODE A=A-1 X .SQRT? GOC OCTMODE A=A-1 X .LOG? GOC DECMODE A=A-1 X .LN? GOC HEXMODE A=A-1 X .X<>Y? GOC BX<>Y A=A-1 X .RDN? GOC BINR^ A=A-1 X .SIN? GOC BTEST A=A-1 X .COS? GOC BINLP A=A-1 X .TAN? GOC BINLP A=A-1 X .XEQ? JC BINOUTNKSH A=A-1 X .STO? GOC STOWS A=A-1 X .RCL? GOC RCLWS A=A-1 X .ENTER? GOC BINLP A=A-1 X .CHS? GOC BNOT A=A-1 X .EEX? GOC BINLP A=A-1 X .-? GOC BDEC A=A-1 X .+? GOC BINC A=A-1 X .*? GOC BSMUL A=A-1 X ./? GOC BSDIV A=A-1 X ..? GOC BLASTX A=A-1 X .R/S? GOC MODES A=A-1 X .BACKARR? GOC BCLX .SST is left %LABEL BINOUTNKSH READ E RCR 1 CF 1 .Reset MSG flag SF 4 .Set SHIFT flag C=ST RCR 13 WRIT E GONC NFRC %LABEL HEXDIGIT ?FS 9 .Display full? GOC BINLPBL A=0 S A=0 M READ E RCR 12 ST=C ?FS 4 JNC HDGOD %LABEL HDGBH ?FS 5 JNC HDGBIN %LABEL HDGHEX LDI =010 JNC HDGCHK %LABEL HDGOD ?FS 5 JC HDGOCT %LABEL HDGDEC LDI =00A JNC HDGCHK %LABEL HDGOCT LDI =008 JNC HDGCHK %LABEL HDGBIN LDI =002 %LABEL HDGCHK ?AC M ?C#0 X JNC 1STDIGIT ?C#0 M JC INC#DG JNC SAVAC %LABEL 1STDIGIT B<>C ALL ?FS 11 XQC R^SUB SF 11 READ E RCR 8 C<>ST SF 1 C<>ST RCR 6 WRIT E C=B ALL %LABEL INC#DG C=C+1 X %LABEL SAVAC WRIT 9 %LABEL SAVAC1 .Reg 9[X] = C[X] = #digits entered .Reg 9[M] = C[M] = accumulated value .Reg 9[S] = C[S] = sign C=0 S C=0 X RCR 3 A=C ALL READ 9 A=C S A<>C ALL .C = accumulated value .C[S] = sign .Save accumulated value in X and view it XQNC BVW1 A=0 ALL READ E RCR 12 ST=C XQNC BASMULADD CF 9 ?C#0 ALL JNC BINLPB SF 9 .Display full JNC BINRSTMSG %LABEL BINLPB XQNC ENLCD LDI =01F .'_' WRIT F C=0 ALL RAMSEL PERSEL JNC BINRSTMSG %LABEL BINBACKVW XQNC BVIEW1 CF 9 %LABEL BINRSTMSG READ E ST=C CF 5 .Reset MSG flag C=ST WRIT E GONC BINLP %LABEL BASMULADD .A = new digit B=A ALL READ 9 ?C#0 X JNC BMACHK2 .B = new digit C=0 S C=0 X RCR 3 A=C ALL .A = C = accumulated value ?FS 4 JNC BMAOD %LABEL BMABH ?FS 5 JNC BMABIN %LABEL BMAHEX .Multiply accumulated value by 16 ASL ALL JNC BMAADD %LABEL BMAOD ?FS 5 JC BMAOCT %LABEL BMADEC .Multiply accumulated value by 10 C=C+C ALL C=C+C ALL C=A+C ALL JNC BMABIN %LABEL BMAOCT .Multiply accumulated value by 8 C=C+C ALL C=C+C ALL %LABEL BMABIN .Multiply accumulated value by 2 C=C+C ALL A=C ALL %LABEL BMAADD A=A+B ALL B=A ALL ?FS 3 .Signed? JC BMACHK1 READ 9 ?C#0 S JNC BMACHK2 %LABEL BMACHK1 A=A+B ALL %LABEL BMACHK2 C=M C=-C ALL C=C&A .B = accumulated value .C = check that it equals zero! RTN %LABEL RSTCOFLGS READ E RCR 12 ST=C CF 6 CF 7 C=ST RCR 2 WRIT E RTN %LABEL BINBACK .If there is a message in display, reset it ?FS 1 JC BINBACKVW READ E RCR 12 ST=C READ 9 ?C#0 X JNC BCLX C=C-1 X ?C#0 X JNC BCLX1 WRIT 9 C=0 S C=0 X .C[M] = accumulated value ?FS 4 JNC BACKOD %LABEL BACKBH ?FS 5 JC BACKHEX JNC BACKBIN %LABEL BACKOD ?FS 5 JC BACKOCT %LABEL BACKDEC .Divide accumulated value in C[M] by 10 A=C ALL C=0 ALL PT= 3 LC A B=0 ALL PT= 3 %LABEL BDSHLP RCR 13 INCPT ?AC ALL %LABEL BDLP0 BSR ALL DECPT JNC BDLPE %LABEL BDLP C=C+1 PT %LABEL BDLPE A=A-B ALL JNC BDLP A=A+B ALL ?PT= 3 JNC BDLP0 JNC BINBACK1 %LABEL BACKBIN C=C+C ALL C=C+C ALL %LABEL BACKOCT C=C+C ALL %LABEL BACKHEX RCR 1 %LABEL BINBACK1 .C[M] = accumulated value divided by base A=C ALL READ 9 A<>C M ?C#0 M GOC SAVAC C=0 ALL GONC SAVAC %LABEL BCLX1 C=0 ALL WRIT 3 JNC BCLX %MESSAGE {CLX} %LABEL BCLX XQNC DISFNAME XQNC RSTCOFLGS C=0 ALL WRIT 3 %LABEL BINVIEWXSD CF 11 GONC BINVIEWX %LABEL BCHS1 READ 9 ?C#0 X JNC BCHS READ E RCR 12 ST=C READ 9 ?C#0 M GONC SAVAC1 C=0 S C=0 X RCR 3 A=C ALL READ 9 ?FS 3 .Signed? JC BCHS2 ?C#0 S JC BCHS3 %LABEL BCHS2 B=A ALL A=A+B ALL %LABEL BCHS3 C=M C=-C ALL C=C&A SF 9 ?C#0 ALL GOC BINLPBL READ 9 SETDEC C=-C-1 S SETHEX GONC SAVAC %MESSAGE {CHS} %LABEL BCHS XQNC DISFNAME XQNC BCHSL GONC BINVIEWX0 %MESSAGE {ENTER^} %LABEL BENTER XQNC DISFNAME XQNC RSTCOFLGS READ 1 WRIT 0 READ 2 WRIT 1 READ 3 WRIT 2 JNC BINVIEWXSD %MESSAGE {RDN} %LABEL BRDN XQNC DISFNAME XQNC RSTCOFLGS C=0 ALL RAMSEL RDATA B<>C ALL READ 3 WRIT 0 READ 2 WRIT 3 READ 1 WRIT 2 C=B ALL WRIT 1 GONC BINVIEWXSE %MESSAGE {R^} %LABEL BINR^ XQNC DISFNAME XQNC RSTCOFLGS C=0 ALL RAMSEL RDATA B<>C ALL READ 1 WRIT 0 READ 2 WRIT 1 JNC BXY %MESSAGE {X<>Y} %LABEL BX<>Y XQNC DISFNAME XQNC RSTCOFLGS READ 2 B<>C ALL %LABEL BXY READ 3 WRIT 2 C=B ALL WRIT 3 GONC BINVIEWXSE %MESSAGE {LASTX} %LABEL BLASTX XQNC DISFNAME XQNC RSTCOFLGS ?FS 11 XQC R^SUB READ 4 WRIT 3 GONC BINVIEWXSE %MESSAGE {S/US} %LABEL S/US XQNC DISFNAME READ E RCR 12 ST=C CF 6 CF 7 ?FS 3 .Signed? JNC SETSIGNED %LABEL RSTSIGNED CF 3 .Reset Signed JNC SAVSS12 %LABEL SETSIGNED SF 3 .Set Signed %LABEL SAVSS12 C=ST RCR 2 WRIT E JNC MODES1 %MESSAGE {MODES} %LABEL MODES XQNC DISFNAME %LABEL MODES1 XQNC BMODESL GONC BINLPNEW %MESSAGE {BINMODE} %LABEL BINMODE XQNC DISFNAME XQNC BINMODEL GONC BINLPNEW %MESSAGE {OCTMODE} %LABEL OCTMODE XQNC DISFNAME XQNC OCTMODEL GONC BINLPNEW %MESSAGE {DECMODE} %LABEL DECMODE XQNC DISFNAME XQNC DECMODEL GONC BINLPNEW %MESSAGE {HEXMODE} %LABEL HEXMODE XQNC DISFNAME XQNC HEXMODEL GONC BINLPNEW %MESSAGE {STOWS} %LABEL STOWS XQNC DISFNAME XQNC STOWSL GONC BINLPNEW %MESSAGE {RCLWS} %LABEL RCLWS XQNC DISFNAME XQNC RCLWSL GONC BINVIEWXSE %MESSAGE {TEST} %LABEL BTEST XQNC DISFNAME XQNC BTESTL SF 11 GONC BINLPNEW %MESSAGE {AND} %LABEL BAND XQNC DISFNAME XQNC BANDL GONC BINVIEWX0 %MESSAGE {OR} %LABEL BOR XQNC DISFNAME XQNC BORL GONC BINVIEWX0 %MESSAGE {XOR} %LABEL BXOR XQNC DISFNAME XQNC BXORL GONC BINVIEWX0 %MESSAGE {BIT} %LABEL BBIT XQNC DISFNAME XQNC BBITL GONC BINVIEWX0 %MESSAGE {-} %LABEL B- XQNC DISFNAME XQNC B-L JNC BINVIEWX0 %MESSAGE {+} %LABEL B+ XQNC DISFNAME XQNC B+L JNC BINVIEWX0 %MESSAGE {MUL} %LABEL BMUL XQNC DISFNAME XQNC BMULL JNC BINVIEWX0 %MESSAGE {DIV} %LABEL BDIV XQNC DISFNAME XQNC BDIVL JNC BINVIEWX0 %MESSAGE {SSHFR} %LABEL BSSHFR XQNC DISFNAME XQNC BSSHFRL JNC BINVIEWX0 %MESSAGE {SSHFX} %LABEL BSSHFX XQNC DISFNAME XQNC BSSHFXL JNC BINVIEWX0 %MESSAGE {SHFL} %LABEL BSHFL XQNC DISFNAME XQNC BSHFLL JNC BINVIEWX0 %MESSAGE {SHFR} %LABEL BSHFR XQNC DISFNAME XQNC BSHFRL %LABEL BINVIEWX0 XQNC BVW2 SF 11 GONC BINLPNEW %MESSAGE {SHFX} %LABEL BSHFX XQNC DISFNAME XQNC BSHFXL JNC BINVIEWX0 %MESSAGE {ROTL} %LABEL BROTL XQNC DISFNAME XQNC BROTLL JNC BINVIEWX0 %MESSAGE {ROTR} %LABEL BROTR XQNC DISFNAME XQNC BROTRL JNC BINVIEWX0 %MESSAGE {ROTX} %LABEL BROTX XQNC DISFNAME XQNC BROTXL JNC BINVIEWX0 %MESSAGE {NOT} %LABEL BNOT XQNC DISFNAME XQNC BNOTL JNC BINVIEWX0 %MESSAGE {DECX} %LABEL BDEC XQNC DISFNAME XQNC BDECL JNC BINVIEWX0 %MESSAGE {INCX} %LABEL BINC XQNC DISFNAME XQNC BINCL GONC BINVIEWX0 %MESSAGE {SMUL} %LABEL BSMUL XQNC DISFNAME XQNC BSMULL GONC BINVIEWX0 %MESSAGE {SDIV} %LABEL BSDIV XQNC DISFNAME XQNC BSDIVL GONC BINVIEWX0 %MESSAGE {ABS} %LABEL BABS XQNC DISFNAME XQNC BABSL GONC BINVIEWX0 %MESSAGE {SQRT} %LABEL BSQRT XQNC DISFNAME XQNC BSQRTL GONC BINVIEWX0 %ORG 4F77 %GLABEL ABS2MBI2 GONC ABS2MBI2L %GLABEL MBI2ABS2 GONC MBI2ABS2L %GLABEL WAITKEY GONC WAITKEYL %GLABEL ER_EXIT GONC ER_EXITL %GLABEL FIRSTCHR GONC FIRSTCHRL %GLABEL NEXTCHR GONC NEXTCHRL %GLABEL BINDEC GONC BINDECL %GLABEL DECBIN GONC DECBINL %GLABEL BINHEX GONC BINHEXL %GLABEL HEXBIN GONC HEXBINL %GLABEL DEHBIN GONC DEHBINL %GLABEL DEHMBI GONC DEHMBIL %GLABEL MBIDEC GONC MBIDECL %GLABEL MBIDEH GONC MBIDEHL %GLABEL ERTOOBIGN GONC ERTOOBIGNL %GLABEL WSMASK GONC WSMASKL %GLABEL MASK_4N GONC MASK_4NL %GLABEL MASK_4N+2 GONC MASK_4N+2L %GLABEL DEHMBIX GONC DEHMBIXL %GLABEL DEHMBIYX GONC DEHMBIYXL %GLABEL DEHMBIYXA GONC DEHMBIYXAL %GLABEL DEHMBIYBN GONC DEHMBIYBNL %GLABEL BFNCRTN0 GONC BFNCRTN0L %GLABEL BFNCRTN1 GONC BFNCRTN1L %GLABEL BFNCRTN2 GONC BFNCRTN2L %GLABEL BFNCRTN3 GONC BFNCRTN3L %GLABEL FMTBIN GONC FMTBINL %GLABEL FMTOCT GONC FMTOCTL %GLABEL FMTHEX GONC FMTHEXL %GLABEL BSKP GONC BSKPL %GLABEL BNOSKP GONC BNOSKPL %GLABEL BMODES0 GONC BMODESL %GLABEL STOWS0 GONC STOWSL %GLABEL RCLWS0 GONC RCLWSL %GLABEL DECMODE0 GONC DECMODEL %GLABEL BINMODE0 GONC BINMODEL %GLABEL OCTMODE0 GONC OCTMODEL %GLABEL HEXMODE0 GONC HEXMODEL %GLABEL BBIT0 GONC BBITL %GLABEL BNORM0 GONC BNORML %GLABEL BCHS0 GONC BCHSL %GLABEL BNOT0 GONC BNOTL %GLABEL BABS0 GONC BABSL %GLABEL BINC0 GONC BINCL %GLABEL BDEC0 GONC BDECL %GLABEL BSHFL0 GONC BSHFLL %GLABEL BSSHFR0 GONC BSSHFRL %GLABEL BSHFR0 GONC BSHFRL %GLABEL BSSHFX0 GONC BSSHFXL %GLABEL BSHFX0 GONC BSHFXL %GLABEL BROTL0 GONC BROTLL %GLABEL BROTR0 GONC BROTRL %GLABEL BROTX0 GONC BROTXL %GLABEL BAND0 GONC BANDL %GLABEL BOR0 GONC BORL %GLABEL BXOR0 GONC BXORL %GLABEL BTEST0 GONC BTESTL %GLABEL B+0 GONC B+L %GLABEL B-0 GONC B-L %GLABEL BSMUL0 GONC BSMULL %GLABEL BMUL0 GONC BMULL %GLABEL BSDIV0 GONC BSDIVL %GLABEL BDIV0 GONC BDIVL %GLABEL BSQRT0 GONC BSQRTL %GLABEL BVIEW0 GONC BVIEW1 %GLABEL BIN0 GONC BINL %ORG 4FFB CON =001 .A CON =031 .1 CON =010 .P CON =00B .K %EXPORT {khp4lib.i41} %OBJDUMP {khp4lib.rom}