の呟きは 1
FIZZBUZZ START
OUT LB1,LL1 ; Print "Limit?"
IN TB1,TL1 ; Input c
LAD GR1,TB1
LD GR2,TL1
CALL C1
ST GR0,I2
LAD GR7,1 ; c = Max(1, Min(100, c))
LAD GR6,100
LD GR5,I2
PUSH 0,GR5
LD GR1,GR6
POP GR2
CALL C3
LD GR6,GR0
PUSH 0,GR6
LD GR1,GR7
POP GR2
CALL C2
LD GR7,GR0
ST GR7,I2
LD GR7,I2 ; For i = 1 To c Step 1
ST GR7,T1
LAD GR7,1
ST GR7,I1
J6 NOP
LD GR1,I1
CPA GR1,T1
JPL J8
LD GR7,I1 ; Select Case (i Mod 15)
LAD GR6,15
PUSH 0,GR6
LD GR2,GR7
POP GR3
CALL C7
LD GR0,GR1
LD GR7,GR0
CPA GR7,=0 ; Case 0
JZE J9
CPA GR7,=3 ; Case 3, 6, 9, 12
JZE J10
CPA GR7,=6
JZE J10
CPA GR7,=9
JZE J10
CPA GR7,=12
JZE J10
CPA GR7,=5 ; Case 5, 10
JZE J11
CPA GR7,=10
JZE J11
JUMP J12 ; Case Else
J9 NOP
OUT LB2,LL2 ; Print "FizzBuzz"
JUMP J27
J10 NOP
OUT LB3,LL3 ; Print "Fizz"
JUMP J27
J11 NOP
OUT LB4,LL4 ; Print "Buzz"
JUMP J27
J12 NOP
LD GR7,I1 ; Print i
LD GR3,GR7
LAD GR1,TB1
LAD GR2,TL1
CALL C5
OUT TB1,TL1
J27 NOP
J7 NOP
LD GR1,I1
LAD GR1,1,GR1
ST GR1,I1
JUMP J6 ; Next i
J8 NOP
RET
C0 LD GR0,GR1 ; FuncAbs
JMI J26
RET
J26 XOR GR0,GR0
SUBA GR0,GR1
RET
C1 PUSH 0,GR1 ; FuncCInt
PUSH 0,GR2
PUSH 0,GR3
PUSH 0,GR4
PUSH 0,GR5
ADDL GR2,GR1
XOR GR0,GR0
XOR GR4,GR4
CPL GR1,GR2
JZE J1
LD GR3,0,GR1
CPL GR3,='+'
JNZ J3
LAD GR1,1,GR1
JUMP J2
J3 CPL GR3,='-'
JNZ J2
LAD GR4,-1
LAD GR1,1,GR1
J2 CPL GR1,GR2
JZE J1
LD GR3,0,GR1
SUBL GR3,='0'
JMI J1
CPL GR3,=9
JPL J1
LD GR5,GR0
SLL GR0,3
ADDL GR0,GR5
ADDL GR0,GR5
ADDL GR0,GR3
LAD GR1,1,GR1
JUMP J2
J1 XOR GR0,GR4
SUBL GR0,GR4
POP GR5
POP GR4
POP GR3
POP GR2
POP GR1
RET
C2 CPA GR1,GR2 ; FuncMax
JMI J5
LD GR0,GR1
RET
J5 LD GR0,GR2
RET
C3 CPA GR1,GR2 ; FuncMin
JMI J4
LD GR0,GR2
RET
J4 LD GR0,GR1
RET
C5 AND GR3,GR3 ; FuncCStrArgInt
JNZ J28
LAD GR3,1
ST GR3,0,GR2
LAD GR3,='0'
ST GR3,0,GR1
XOR GR3,GR3
RET
J28 PUSH 0,GR1
PUSH 0,GR2
PUSH 0,GR3
PUSH 0,GR4
PUSH 0,GR5
JPL J29
LAD GR4,='-'
ST GR4,0,GR1
LAD GR1,1,GR1
XOR GR3,=#FFFF
LAD GR3,1,GR3
J29 LAD GR4,V1
LD GR5,GR1
LD GR2,GR3
LAD GR3,10
J30 CALL C7
ADDL GR1,='0'
ST GR1,0,GR4
LAD GR4,1,GR4
LD GR2,GR0
JPL J30
LAD GR2,V1
LAD GR4,-1,GR4
J31 LD GR1,0,GR4
ST GR1,0,GR5
LAD GR5,1,GR5
LAD GR4,-1,GR4
CPL GR4,GR2
JPL J31
JZE J31
LD GR0,GR5
POP GR5
POP GR4
POP GR3
POP GR2
POP GR1
SUBL GR0,GR1
ST GR0,0,GR2
RET
V1 DS 6
C7 AND GR3,GR3 ; UtilDivMod
JNZ J13
XOR GR0,GR0
LAD GR1,-1
RET
J13 PUSH 0,GR2
PUSH 0,GR3
PUSH 0,GR4
PUSH 0,GR5
LD GR4,GR2
LD GR1,GR2
CALL C0
LD GR5,GR0
LD GR1,GR3
CALL C0
LD GR1,GR0
LAD GR0,1
J14 ADDL GR1,GR1
JOV J15
ADDL GR0,GR0
JUMP J14
J15 SRL GR1,1
LAD GR1,#8000,GR1
XOR GR2,GR2
J16 CPL GR5,GR1
JMI J17
SUBL GR5,GR1
ADDL GR2,GR0
J17 SRL GR0,1
JZE J18
SRL GR1,1
JUMP J16
J18 LD GR5,GR4
XOR GR5,GR3
SRA GR5,15
XOR GR2,GR5
SUBA GR2,GR5
CALL C8
LD GR1,GR4
SUBA GR1,GR0
LD GR0,GR2
POP GR5
POP GR4
POP GR3
POP GR2
RET
C8 PUSH 0,GR2 ; UtilMul
PUSH 0,GR3
PUSH 0,GR4
PUSH 0,GR5
XOR GR0,GR0
XOR GR1,GR1
LD GR4,GR2
LD GR5,GR3
J19 SRL GR2,1
JOV J20
JNZ J22
JUMP J23
J20 ADDL GR0,GR3
JOV J21
JUMP J22
J21 LAD GR1,1,GR1
J22 SLL GR3,1
JUMP J19
J23 SRL GR5,1
SLL GR4,1
JOV J24
JNZ J23
JUMP J25
J24 ADDL GR1,GR5
JUMP J23
J25 POP GR5
POP GR4
POP GR3
POP GR2
RET
I1 DS 1 ; Dim i As Integer
I2 DS 1 ; Dim c As Integer
T1 DS 1
TL1 DS 1
TB1 DS 256
LL1 DC 6
LB1 DC 'Limit?'
LL2 DC 8
LB2 DC 'FizzBuzz'
LL3 DC 4
LB3 DC 'Fizz'
LL4 DC 4
LB4 DC 'Buzz'
ENDSelect Caseの展開のしかた
少し変えようかなあ(omitted)