usakdsteen

ゆうさくですてぃーん

2021年03月27日(Sat)の独り言

の呟きは 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'
    END

    •  #

      Select Caseの展開のしかた
      少し変えようかなあ

      •  #

        (omitted)

 < の独り言 | の独り言 | の独り言 >