--- /dev/null
+TITLE FLOATB--CONVERT FLOATING NUMBER TO ASCII STRING\r
+\r
+RELOCA\r
+\r
+.GLOBAL FLOATB\r
+\r
+ACNUM==1\r
+\r
+IRP A,,[A,B,C,D,E,F,G,H,I,J]\r
+A==ACNUM\r
+ACNUM==ACNUM+1\r
+TERMIN\r
+\r
+P==17\r
+\r
+TEM1==I\r
+\r
+EXPUNGE ACNUM\r
+\r
+FLOATB: PUSH P,B\r
+ PUSH P,C\r
+ PUSH P,D\r
+ PUSH P,F\r
+ PUSH P,G\r
+ PUSH P,H\r
+ PUSH P,I\r
+ PUSH P,0\r
+ PUSH P,J\r
+ MOVSI 0,440700 ; BUILD BYTEPNTR\r
+ HLRZ J,A ; POINT TO BUFFER\r
+ HRRI 0,1(J)\r
+ MOVE A,(A) ; GET NUMBER\r
+ MOVE D,A\r
+ SETZM (J) ; Clear counter\r
+ PUSHJ P,NFLOT\r
+ POP P,J\r
+ POP P,0\r
+ POP P,I\r
+ POP P,H\r
+ POP P,G\r
+ POP P,F\r
+ POP P,D\r
+ POP P,C\r
+ POP P,B\r
+ POPJ P,\r
+\r
+; at this point we enter code abstracted from DDT.\r
+NFLOT: JUMPG A,TFL1\r
+ JUMPE A,FP1A\r
+ MOVNS A\r
+ PUSH P,A\r
+ MOVEI A,"-\r
+ PUSHJ P,CHRO\r
+ POP P,A\r
+ TLZE A,400000\r
+ JRST FP1A\r
+\r
+TFL1: MOVEI B,0\r
+TFLX: CAMGE A,FT01\r
+ JRST FP4\r
+ CAML A,FT8\r
+ AOJA B,FP4\r
+FP1A:\r
+FP3: SETZB C,TEM1 ; CLEAR DIGIT CNTR, C TO RECEIVE FRACTION\r
+ MULI A,400\r
+ ASHC B,-243(A)\r
+ MOVE A,B\r
+ PUSHJ P,FP7\r
+ PUSH P,A\r
+ MOVEI A,".\r
+ PUSHJ P,CHRO\r
+ POP P,A\r
+ MOVNI A,10\r
+ ADD A,TEM1\r
+ MOVE E,C\r
+FP3A: MOVE D,E\r
+ MULI D,12\r
+ PUSHJ P,FP7B\r
+ SKIPE E\r
+ AOJL A,FP3A\r
+ POPJ P, ; ONE return from OFLT here\r
+\r
+FP4: MOVNI C,6\r
+ MOVEI F,0\r
+FP4A: ADDI F,1(F)\r
+ XCT FCP(B)\r
+ SOSA F\r
+ FMPR A,@FCP+1(B)\r
+ AOJN C,FP4A\r
+ PUSH P,EXPSGN(B)\r
+ PUSHJ P,FP3\r
+ PUSH P,A\r
+ MOVEI A,"E\r
+ PUSHJ P,CHRO\r
+ POP P,A\r
+ POP P,D\r
+ PUSHJ P,FDIGIT\r
+ MOVE A,F\r
+\r
+FP7: SKIPE A ; AVOID AOSING TEM1, NOT SIGNIFICANT DIGIT\r
+ AOS TEM1\r
+ IDIVI A,12\r
+ HRLM B,(P)\r
+ JUMPE A,FP7A1\r
+ PUSHJ P,FP7\r
+\r
+FP7A1: HLRZ D,(P)\r
+FP7B: ADDI D,"0\r
+\r
+; type digit\r
+FDIGIT: PUSH P,A\r
+ MOVE A,D\r
+ PUSHJ P,CHRO\r
+ POP P,A\r
+ POPJ P,\r
+\r
+CHRO: AOS (J) ; COUNT CHAR\r
+ IDPB A,0 ; STUFF CHAR\r
+ POPJ P,\r
+\r
+; constants\r
+ 1.0^32.\r
+ 1.0^16.\r
+FT8: 1.0^8\r
+ 1.0^4\r
+ 1.0^2\r
+ 1.0^1\r
+FT: 1.0^0\r
+ 1.0^-32.\r
+ 1.0^-16.\r
+ 1.0^-8\r
+ 1.0^-4\r
+ 1.0^-2\r
+FT01: 1.0^-1\r
+FT0=FT01+1\r
+\r
+; instructions\r
+FCP: CAMLE A, FT0(C)\r
+ CAMGE A, FT(C)\r
+ 0, FT0(C)\r
+\r
+EXPSGN: "-\r
+ "+\r
+\r
+\r
+EXPUNGE A,B,C,D,E,F,G,H,I,J,TEM1,P\r
+\r
+END\r
+\f
\ No newline at end of file