2ae4b25e6d7c387ece7e88078929e12a9238cc11
[YACASL2.git] / as / casl2lib / outl_q15.casl
1 ;; GR1に格納された値を、10進数の符号なし小数値として表示
2 OUTLQ15 START
3         RPUSH
4         LAD     GR2,10          ; GR2に10進数の「10」を格納
5         XOR     GR4,GR4         ; 整数値の長さ
6 STDN    LD      GR3,='0'        ; 「0」をSTR領域に格納
7         ST      GR3,STR,GR4     ; ↓
8         AND     GR1,GR1         ; GR1が0の場合、PRTへジャンプ
9         JZE     PRT             ; ↓
10         LAD     GR4,1,GR4       ; ↓ GR4 <- GR4 + 1
11         LD      GR3,='.'        ; 「.」をSTR領域に格納
12         ST      GR3,STR,GR4     ; ↓
13         LAD     GR4,1,GR4       ; ↓ GR4 <- GR4 + 1
14 ;; GR1の内容を小数値と見なし、10進数の文字列に変換してSTRに格納
15 TODIG   AND     GR1,GR1         ; GR1が0の場合は、ループを脱出
16         JZE     PRT             ; ↓
17         CALL    MULL            ; GR1とGR2の、積をGR0、オーバーフロー値をGR3に格納
18         LD      GR1,GR0         ; GR0をGR1にコピー
19         ADDA    GR3,='0'        ; GR3を文字に変換
20         ST      GR3,STR,GR4     ; (STR + GR3) <- GR1
21         LAD     GR4,1,GR4       ; GR4 <- GR4 + 1
22         JUMP    TODIG           ; ループ
23 PRT     ST      GR4,LEN         ; LEN <- GR4
24         OUT     STR,LEN         ; 文字列を出力
25         RPOP
26         RET
27 STR     DS      20
28 LEN     DS      1
29         END