6 CHK1 CALL CHKVAL ; (GR1 < 0)の場合は正負を反転させ、GR0 <- 1
8 LD GR4,GR0 ; マイナスフラグをオン
9 CHK2 PUSH 0,GR1 ; GR1を退避
10 LD GR1,GR2 ; GR2をGR1へロード
11 CALL CHKVAL ; (GR1 < 0)の場合は正負を反転させ、GR0 <- 1
13 LD GR2,GR1 ; GR1をGR2へロード
14 XOR GR4,GR0 ; マイナスフラグを反転
20 MLOOP CPA GR2,GR3 ; ループ先頭。(GR2 = GR3)の場合、ループ脱出
22 ADDA GR0,GR1 ; GR0 <- GR0 + GR1
23 JOV MFIN ; オーバーフローした場合、ループ脱出
24 LAD GR3,1,GR3 ; GR3 <- GR3 + 1
26 MMIN AND GR4,GR4 ; マイナスフラグがオフの場合、MFINへジャンプ
29 LD GR1,GR0 ; GR1にGR0をロード
30 CALL MABS ; GR1を絶対値に変換
31 JOV MMF ; オーバーフロー(GR1 = -32768)の場合、MMFへジャンプ
32 LD GR0,GR1 ; GR0にGR1をロード
37 ;;; GR1が0未満の場合は、絶対値に変換し、GR0に1を設定
40 AND GR1,GR1 ; (GR1 >= 0)の場合は、CFINへジャンプ
44 CALL MABS ; GR1を絶対値に変換
48 ;;; 例: -10 -> 10、10 -> -10
50 XOR GR1,=#FFFF ; GR1のビット値を反転
51 ADDA GR1,=1 ; GR1 <- GR1 + 1