クロック周波数の定義を追加
[YACASL2.git] / as / summary.casl
1 SUMMARY START
2         RPUSH
3 ; カウンタ領域と出力バッファを初期化
4         LD    GR2,=0
5         LD    GR3,=' '
6         LD    GR4,=0          ; ループカウンタ
7         LAD   GR5,PBUF        ; 出力バッファのポインタ
8 LOOP1   ST    GR2,COUNTR,GR4  ; カウンタ領域を初期化
9         ST    GR3,0,GR5       ; 出力バッファを空白で初期化
10         ST    GR3,1,GR5
11         ST    GR3,2,GR5
12         LAD   GR5,3,GR5       ; 出力バッファのポインタを更新
13         LAD   GR4,1,GR4       ; ループカウンタを更新
14         CPA   GR4,=16
15         JMI   LOOP1
16 ; 項目ごとに "はい" と答えた人数を集計
17         LD    GR5,=0          ; GR5: "はい" の人数の最大値
18 LOOP2   LD    GR4,=0          ; カウンタ領域のポインタ
19         LD    GR2,0,GR1       ; GR2 ←1人分の回答
20 LOOP3   SLL   GR2,1           ; 回答は "はい" ?
21         JOV   ON
22         JZE   NEXTW           ; 残りの項目はすべて "いいえ"
23         JUMP  OFF
24 ON      LD    GR3,COUNTR,GR4  ; カウンタに1を加算
25         ADDA  GR3,=1
26         ST    GR3,COUNTR,GR4
27         CPA   GR3,GR5         ; 最大値と比較
28         JPL   CHANGE
29         JUMP  OFF
30 CHANGE  LD    GR5,GR3         ; 最大値を入替え
31 OFF     LAD   GR4,1,GR4       ; 次の項目
32         JUMP  LOOP3
33 NEXTW   LAD   GR1,1,GR1
34         SUBA  GR0,=1          ; 全回答処理済?
35         JPL   LOOP2
36 ; 集計結果を棒グラフで出力
37         LD    GR5,GR5
38         JZE   FIN
39         LD    GR0,='*'
40 LOOP4   LD    GR3,=1          ; 出力バッファのポインタ
41         LD    GR4,=0          ; カウンタ領域のポインタ
42 LOOP5   CPA   GR5,COUNTR,GR4  ; "はい" の人数と比較
43         JNZ   NOTSET
44         ST    GR0,PBUF,GR3    ; 出力バッファに "*" を設定
45 NOTSET  LAD   GR3,3,GR3       ; 出力バッファのポインタを更新
46         LAD   GR4,1,GR4       ; カウンタ領域のポインタを更新
47         CPA   GR4,=16
48         JMI   LOOP5
49         OUT   PBUF,PLEN
50         SUBA  GR5,=1
51         JPL   LOOP4
52 FIN     OUT   FOOTER,PLEN
53         RPOP
54         RET
55 COUNTR  DS    16              ; カウンタ領域
56 PLEN    DC    48
57 PBUF    DS    48              ; 出力バッファ
58 FOOTER  DC    '01 02 03 04 05 06 07 08 09 10 11 12 13 '
59         DC    '14 15 16 '
60         END