mirror of
https://github.com/sxpert/hp-saturn
synced 2024-11-16 19:50:19 +01:00
160 lines
No EOL
5 KiB
Text
160 lines
No EOL
5 KiB
Text
// Block 0x
|
|
|
|
0 0 // RTNSXM
|
|
0 1 // RTN
|
|
0 2 // RTNSC
|
|
0 3 // RTNCC
|
|
0 4 // SETHEX
|
|
0 5 // SETDEC
|
|
0 6 // RSTK=C
|
|
0 7 // C=RSTK
|
|
0 8 // CLRST
|
|
0 9 // C=ST
|
|
0 A // ST=C
|
|
0 B // CSTEX
|
|
0 C // P=P+1
|
|
0 D // P=P-1
|
|
0 E 0 0 // A=A&B P
|
|
0 E 1 0 // A=A&B WP
|
|
0 E 2 0 // A=A&B XS
|
|
0 E 3 0 // A=A&B X
|
|
0 E 4 0 // A=A&B S
|
|
0 E 5 0 // A=A&B M
|
|
0 E 6 0 // A=A&B B
|
|
0 E 7 0 // A=A&B W
|
|
0 E F 0 // A=A&B A
|
|
0 E 0 1 // B=B&C P
|
|
0 E 0 2 // C=C&A P
|
|
0 E 0 3 // D=D&C P
|
|
0 E 0 4 // B=B&A P
|
|
0 E 0 5 // C=C&B P
|
|
0 E 0 6 // A=A&C P
|
|
0 E 0 7 // C=C&D P
|
|
0 E 0 8 // A=A!B P
|
|
0 E 0 9 // B=B!C P
|
|
0 E 0 A // C=C!A P
|
|
0 E 0 B // D=D!C P
|
|
0 E 0 C // B=B!A P
|
|
0 E 0 D // C=C!B P
|
|
0 E 0 E // A=A!C P
|
|
0 E 0 F // C=C!D P
|
|
0 F // RTI
|
|
|
|
// Block 1[012]x saving and exchange with Rn registers
|
|
|
|
1 0 0 // R0=A (W)
|
|
1 0 1 // R1=A (W)
|
|
1 0 2 // R2=A (W)
|
|
1 0 3 // R3=A (W)
|
|
1 0 4 // R4=A (W)
|
|
1 0 8 // R0=C (W)
|
|
1 0 9 // R1=C (W)
|
|
1 0 A // R2=C (W)
|
|
1 0 B // R3=C (W)
|
|
1 0 C // R4=C (W)
|
|
1 1 0 // A=R0 (W)
|
|
1 1 1 // A=R1 (W)
|
|
1 1 2 // A=R2 (W)
|
|
1 1 3 // A=R3 (W)
|
|
1 1 4 // A=R4 (W)
|
|
1 1 8 // C=R0 (W)
|
|
1 1 9 // C=R1 (W)
|
|
1 1 A // C=R2 (W)
|
|
1 1 B // C=R3 (W)
|
|
1 1 C // C=R4 (W)
|
|
1 2 0 // AR0EX (W)
|
|
1 2 1 // AR1EX (W)
|
|
1 2 2 // AR2EX (W)
|
|
1 2 3 // AR3EX (W)
|
|
1 2 4 // AR4EX (W)
|
|
1 2 8 // CR0EX (W)
|
|
1 2 9 // CR1EX (W)
|
|
1 2 A // CR2EX (W)
|
|
1 2 B // CR3EX (W)
|
|
1 2 C // CR4EX (W)
|
|
|
|
// block 13x setting up pointer registers
|
|
|
|
1 3 0 // D0=A (A)
|
|
1 3 1 // D1=A (A)
|
|
1 3 2 // AD0EX (A)
|
|
1 3 3 // AD1EX (A)
|
|
1 3 4 // D0=C (A)
|
|
1 3 5 // D1=C (A)
|
|
1 3 6 // CD0EX (A)
|
|
1 3 7 // CD1EX (A)
|
|
1 3 8 // D0=AS (4-0)
|
|
1 3 9 // D1=AS (4-0)
|
|
1 3 A // AD0XS (4-0)
|
|
1 3 B // AD0XS (4-0)
|
|
1 3 C // D0=CS (4-0)
|
|
1 3 D // D1=CS (4-0)
|
|
1 3 E // CD0XS (4-0)
|
|
1 3 F // CD1XS (4-0)
|
|
|
|
// block 1[45]x[a|x+1] data transfer
|
|
|
|
1 4 0 // DAT0=A A
|
|
1 4 1 // DAT1=A A
|
|
1 4 2 // A=DAT0 A
|
|
1 4 3 // A=DAT1 A
|
|
1 4 4 // DAT0=C A
|
|
1 4 5 // DAT1=C A
|
|
1 4 6 // C=DAT0 A
|
|
1 4 7 // C=DAT1 A
|
|
1 4 8 // DAT0=A B
|
|
1 4 9 // DAT1=A B
|
|
1 4 A // A=DAT0 B
|
|
1 4 B // A=DAT1 B
|
|
1 4 C // DAT0=C B
|
|
1 4 D // DAT1=C B
|
|
1 4 E // C=DAT0 B
|
|
1 4 F // C=DAT1 B
|
|
|
|
1 5 0 0 // DAT0=A a
|
|
1 5 1 1 // DAT1=A a
|
|
1 5 2 2 // A=DAT0 a
|
|
1 5 3 3 // A=DAT1 a
|
|
1 5 4 4 // DAT0=C a
|
|
1 5 5 5 // DAT1=C a
|
|
1 5 6 6 // C=DAT0 a
|
|
1 5 7 7 // C=DAT1 a
|
|
1 5 8 8 // DAT0=A x+1
|
|
1 5 9 9 // DAT1=A x+1
|
|
1 5 A A // A=DAT0 x+1
|
|
1 5 B B // A=DAT1 x+1
|
|
1 5 C C // DAT0=C x+1
|
|
1 5 D D // DAT1=C x+1
|
|
1 5 E E // C=DAT0 x+1
|
|
1 5 F F // C=DAT1 x+1
|
|
|
|
// pointer arithmetic
|
|
|
|
1 6 2 // D0=D0+ n+1
|
|
1 7 8 // D1=D1+ n+1
|
|
1 8 A // D0=D0- n+1
|
|
1 C F // D1=D1- n+1
|
|
|
|
// pointer load
|
|
|
|
1 9 1 2 // D0=(2) 21
|
|
1 A 3 4 5 6 // D0=(4) 6543
|
|
1 B 7 8 9 A B // D0=(5) BA987
|
|
|
|
1 D 1 2 // D1=(2) 21
|
|
1 E 3 4 5 6 // D1=(4) 6543
|
|
1 F 7 8 9 A B // D1=(5) BA987
|
|
|
|
// load P with immediate value
|
|
|
|
2 3 // P= 3
|
|
|
|
// load c with immediate value
|
|
// start on nibble pointed by p
|
|
|
|
3 5 0 1 2 3 4 5
|
|
3 F 0 1 2 3 4 5 6 7 8 9 A B C D E F
|
|
|
|
|
|
|
|
F // end |