hp-saturn/z_test_rom-1.hex

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