mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 18:22:07 +00:00
Clean up some man pages (#1547)
This commit is contained in:
227
man/gbz80.7
227
man/gbz80.7
@@ -11,7 +11,7 @@ This is the list of opcodes supported by
|
|||||||
.Xr rgbasm 1 ,
|
.Xr rgbasm 1 ,
|
||||||
including a short description, the number of bytes needed to encode them and the number of CPU cycles at 1MHz (or 2MHz in GBC dual speed mode) needed to complete them.
|
including a short description, the number of bytes needed to encode them and the number of CPU cycles at 1MHz (or 2MHz in GBC dual speed mode) needed to complete them.
|
||||||
.Pp
|
.Pp
|
||||||
Note: All arithmetic/logic instructions that use register
|
Note: All arithmetic and logic instructions that use register
|
||||||
.Sy A
|
.Sy A
|
||||||
as a destination can omit the destination, since it is assumed to be register
|
as a destination can omit the destination, since it is assumed to be register
|
||||||
.Sy A
|
.Sy A
|
||||||
@@ -79,76 +79,7 @@ and
|
|||||||
.Ad 0x38 Pc .
|
.Ad 0x38 Pc .
|
||||||
.El
|
.El
|
||||||
.Sh INSTRUCTION OVERVIEW
|
.Sh INSTRUCTION OVERVIEW
|
||||||
.Ss 8-bit Arithmetic and Logic Instructions
|
.Ss Load instructions
|
||||||
.Bl -inset -compact
|
|
||||||
.It Sx ADC A,r8
|
|
||||||
.It Sx ADC A,[HL]
|
|
||||||
.It Sx ADC A,n8
|
|
||||||
.It Sx ADD A,r8
|
|
||||||
.It Sx ADD A,[HL]
|
|
||||||
.It Sx ADD A,n8
|
|
||||||
.It Sx AND A,r8
|
|
||||||
.It Sx AND A,[HL]
|
|
||||||
.It Sx AND A,n8
|
|
||||||
.It Sx CP A,r8
|
|
||||||
.It Sx CP A,[HL]
|
|
||||||
.It Sx CP A,n8
|
|
||||||
.It Sx DEC r8
|
|
||||||
.It Sx DEC [HL]
|
|
||||||
.It Sx INC r8
|
|
||||||
.It Sx INC [HL]
|
|
||||||
.It Sx OR A,r8
|
|
||||||
.It Sx OR A,[HL]
|
|
||||||
.It Sx OR A,n8
|
|
||||||
.It Sx SBC A,r8
|
|
||||||
.It Sx SBC A,[HL]
|
|
||||||
.It Sx SBC A,n8
|
|
||||||
.It Sx SUB A,r8
|
|
||||||
.It Sx SUB A,[HL]
|
|
||||||
.It Sx SUB A,n8
|
|
||||||
.It Sx XOR A,r8
|
|
||||||
.It Sx XOR A,[HL]
|
|
||||||
.It Sx XOR A,n8
|
|
||||||
.El
|
|
||||||
.Ss 16-bit Arithmetic Instructions
|
|
||||||
.Bl -inset -compact
|
|
||||||
.It Sx ADD HL,r16
|
|
||||||
.It Sx DEC r16
|
|
||||||
.It Sx INC r16
|
|
||||||
.El
|
|
||||||
.Ss Bit Operations Instructions
|
|
||||||
.Bl -inset -compact
|
|
||||||
.It Sx BIT u3,r8
|
|
||||||
.It Sx BIT u3,[HL]
|
|
||||||
.It Sx RES u3,r8
|
|
||||||
.It Sx RES u3,[HL]
|
|
||||||
.It Sx SET u3,r8
|
|
||||||
.It Sx SET u3,[HL]
|
|
||||||
.It Sx SWAP r8
|
|
||||||
.It Sx SWAP [HL]
|
|
||||||
.El
|
|
||||||
.Ss Bit Shift Instructions
|
|
||||||
.Bl -inset -compact
|
|
||||||
.It Sx RL r8
|
|
||||||
.It Sx RL [HL]
|
|
||||||
.It Sx RLA
|
|
||||||
.It Sx RLC r8
|
|
||||||
.It Sx RLC [HL]
|
|
||||||
.It Sx RLCA
|
|
||||||
.It Sx RR r8
|
|
||||||
.It Sx RR [HL]
|
|
||||||
.It Sx RRA
|
|
||||||
.It Sx RRC r8
|
|
||||||
.It Sx RRC [HL]
|
|
||||||
.It Sx RRCA
|
|
||||||
.It Sx SLA r8
|
|
||||||
.It Sx SLA [HL]
|
|
||||||
.It Sx SRA r8
|
|
||||||
.It Sx SRA [HL]
|
|
||||||
.It Sx SRL r8
|
|
||||||
.It Sx SRL [HL]
|
|
||||||
.El
|
|
||||||
.Ss Load Instructions
|
|
||||||
.Bl -inset -compact
|
.Bl -inset -compact
|
||||||
.It Sx LD r8,r8
|
.It Sx LD r8,r8
|
||||||
.It Sx LD r8,n8
|
.It Sx LD r8,n8
|
||||||
@@ -169,7 +100,80 @@ and
|
|||||||
.It Sx LD A,[HLI]
|
.It Sx LD A,[HLI]
|
||||||
.It Sx LD A,[HLD]
|
.It Sx LD A,[HLD]
|
||||||
.El
|
.El
|
||||||
.Ss Jumps and Subroutines
|
.Ss 8-bit arithmetic instructions
|
||||||
|
.Bl -inset -compact
|
||||||
|
.It Sx ADC A,r8
|
||||||
|
.It Sx ADC A,[HL]
|
||||||
|
.It Sx ADC A,n8
|
||||||
|
.It Sx ADD A,r8
|
||||||
|
.It Sx ADD A,[HL]
|
||||||
|
.It Sx ADD A,n8
|
||||||
|
.It Sx CP A,r8
|
||||||
|
.It Sx CP A,[HL]
|
||||||
|
.It Sx CP A,n8
|
||||||
|
.It Sx DEC r8
|
||||||
|
.It Sx DEC [HL]
|
||||||
|
.It Sx INC r8
|
||||||
|
.It Sx INC [HL]
|
||||||
|
.It Sx SBC A,r8
|
||||||
|
.It Sx SBC A,[HL]
|
||||||
|
.It Sx SBC A,n8
|
||||||
|
.It Sx SUB A,r8
|
||||||
|
.It Sx SUB A,[HL]
|
||||||
|
.It Sx SUB A,n8
|
||||||
|
.El
|
||||||
|
.Ss 16-bit arithmetic instructions
|
||||||
|
.Bl -inset -compact
|
||||||
|
.It Sx ADD HL,r16
|
||||||
|
.It Sx DEC r16
|
||||||
|
.It Sx INC r16
|
||||||
|
.El
|
||||||
|
.Ss Bitwise logic instructions
|
||||||
|
.Bl -inset -compact
|
||||||
|
.It Sx AND A,r8
|
||||||
|
.It Sx AND A,[HL]
|
||||||
|
.It Sx AND A,n8
|
||||||
|
.It Sx CPL
|
||||||
|
.It Sx OR A,r8
|
||||||
|
.It Sx OR A,[HL]
|
||||||
|
.It Sx OR A,n8
|
||||||
|
.It Sx XOR A,r8
|
||||||
|
.It Sx XOR A,[HL]
|
||||||
|
.It Sx XOR A,n8
|
||||||
|
.El
|
||||||
|
.Ss Bit flag instructions
|
||||||
|
.Bl -inset -compact
|
||||||
|
.It Sx BIT u3,r8
|
||||||
|
.It Sx BIT u3,[HL]
|
||||||
|
.It Sx RES u3,r8
|
||||||
|
.It Sx RES u3,[HL]
|
||||||
|
.It Sx SET u3,r8
|
||||||
|
.It Sx SET u3,[HL]
|
||||||
|
.El
|
||||||
|
.Ss Bit shift instructions
|
||||||
|
.Bl -inset -compact
|
||||||
|
.It Sx RL r8
|
||||||
|
.It Sx RL [HL]
|
||||||
|
.It Sx RLA
|
||||||
|
.It Sx RLC r8
|
||||||
|
.It Sx RLC [HL]
|
||||||
|
.It Sx RLCA
|
||||||
|
.It Sx RR r8
|
||||||
|
.It Sx RR [HL]
|
||||||
|
.It Sx RRA
|
||||||
|
.It Sx RRC r8
|
||||||
|
.It Sx RRC [HL]
|
||||||
|
.It Sx RRCA
|
||||||
|
.It Sx SLA r8
|
||||||
|
.It Sx SLA [HL]
|
||||||
|
.It Sx SRA r8
|
||||||
|
.It Sx SRA [HL]
|
||||||
|
.It Sx SRL r8
|
||||||
|
.It Sx SRL [HL]
|
||||||
|
.It Sx SWAP r8
|
||||||
|
.It Sx SWAP [HL]
|
||||||
|
.El
|
||||||
|
.Ss Jumps and subroutine instructions
|
||||||
.Bl -inset -compact
|
.Bl -inset -compact
|
||||||
.It Sx CALL n16
|
.It Sx CALL n16
|
||||||
.It Sx CALL cc,n16
|
.It Sx CALL cc,n16
|
||||||
@@ -183,7 +187,12 @@ and
|
|||||||
.It Sx RETI
|
.It Sx RETI
|
||||||
.It Sx RST vec
|
.It Sx RST vec
|
||||||
.El
|
.El
|
||||||
.Ss Stack Operations Instructions
|
.Ss Carry flag instructions
|
||||||
|
.Bl -inset -compact
|
||||||
|
.It Sx CCF
|
||||||
|
.It Sx SCF
|
||||||
|
.El
|
||||||
|
.Ss Stack manipulation instructions
|
||||||
.Bl -inset -compact
|
.Bl -inset -compact
|
||||||
.It Sx ADD HL,SP
|
.It Sx ADD HL,SP
|
||||||
.It Sx ADD SP,e8
|
.It Sx ADD SP,e8
|
||||||
@@ -198,16 +207,16 @@ and
|
|||||||
.It Sx PUSH AF
|
.It Sx PUSH AF
|
||||||
.It Sx PUSH r16
|
.It Sx PUSH r16
|
||||||
.El
|
.El
|
||||||
.Ss Miscellaneous Instructions
|
.Ss Interrupt-related instructions
|
||||||
.Bl -inset -compact
|
.Bl -inset -compact
|
||||||
.It Sx CCF
|
|
||||||
.It Sx CPL
|
|
||||||
.It Sx DAA
|
|
||||||
.It Sx DI
|
.It Sx DI
|
||||||
.It Sx EI
|
.It Sx EI
|
||||||
.It Sx HALT
|
.It Sx HALT
|
||||||
|
.El
|
||||||
|
.Ss Miscellaneous instructions
|
||||||
|
.Bl -inset -compact
|
||||||
|
.It Sx DAA
|
||||||
.It Sx NOP
|
.It Sx NOP
|
||||||
.It Sx SCF
|
|
||||||
.It Sx STOP
|
.It Sx STOP
|
||||||
.El
|
.El
|
||||||
.Sh INSTRUCTION REFERENCE
|
.Sh INSTRUCTION REFERENCE
|
||||||
@@ -222,7 +231,7 @@ Cycles: 1
|
|||||||
Bytes: 1
|
Bytes: 1
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
Set if result is 0.
|
Set if result is 0.
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -267,7 +276,7 @@ Cycles: 1
|
|||||||
Bytes: 1
|
Bytes: 1
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
Set if result is 0.
|
Set if result is 0.
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -312,7 +321,7 @@ Cycles: 2
|
|||||||
Bytes: 1
|
Bytes: 1
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy N
|
.It Sy N
|
||||||
0
|
0
|
||||||
.It Sy H
|
.It Sy H
|
||||||
@@ -343,7 +352,7 @@ Cycles: 4
|
|||||||
Bytes: 2
|
Bytes: 2
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
0
|
0
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -364,7 +373,7 @@ Cycles: 1
|
|||||||
Bytes: 1
|
Bytes: 1
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
Set if result is 0.
|
Set if result is 0.
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -410,7 +419,7 @@ Cycles: 2
|
|||||||
Bytes: 2
|
Bytes: 2
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
Set if the selected bit is 0.
|
Set if the selected bit is 0.
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -466,7 +475,7 @@ Cycles: 1
|
|||||||
Bytes: 1
|
Bytes: 1
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy N
|
.It Sy N
|
||||||
0
|
0
|
||||||
.It Sy H
|
.It Sy H
|
||||||
@@ -487,7 +496,7 @@ Cycles: 1
|
|||||||
Bytes: 1
|
Bytes: 1
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
Set if result is 0.
|
Set if result is 0.
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -538,7 +547,7 @@ Cycles: 1
|
|||||||
Bytes: 1
|
Bytes: 1
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy N
|
.It Sy N
|
||||||
1
|
1
|
||||||
.It Sy H
|
.It Sy H
|
||||||
@@ -552,7 +561,7 @@ Cycles: 1
|
|||||||
Bytes: 1
|
Bytes: 1
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
Set if result is 0.
|
Set if result is 0.
|
||||||
.It Sy H
|
.It Sy H
|
||||||
@@ -570,7 +579,7 @@ Cycles: 1
|
|||||||
Bytes: 1
|
Bytes: 1
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
Set if result is 0.
|
Set if result is 0.
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -682,7 +691,7 @@ Cycles: 1
|
|||||||
Bytes: 1
|
Bytes: 1
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
Set if result is 0.
|
Set if result is 0.
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -1090,7 +1099,7 @@ Cycles: 3
|
|||||||
Bytes: 2
|
Bytes: 2
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
0
|
0
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -1132,7 +1141,7 @@ Cycles: 1
|
|||||||
Bytes: 1
|
Bytes: 1
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
Set if result is 0.
|
Set if result is 0.
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -1189,7 +1198,7 @@ Cycles: 3
|
|||||||
Bytes: 1
|
Bytes: 1
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
Set from bit 7 of the popped low byte.
|
Set from bit 7 of the popped low byte.
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -1339,7 +1348,7 @@ Cycles: 2
|
|||||||
Bytes: 2
|
Bytes: 2
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
Set if result is 0.
|
Set if result is 0.
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -1382,7 +1391,7 @@ Cycles: 1
|
|||||||
Bytes: 1
|
Bytes: 1
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
0
|
0
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -1408,7 +1417,7 @@ Cycles: 2
|
|||||||
Bytes: 2
|
Bytes: 2
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
Set if result is 0.
|
Set if result is 0.
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -1451,7 +1460,7 @@ Cycles: 1
|
|||||||
Bytes: 1
|
Bytes: 1
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
0
|
0
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -1477,7 +1486,7 @@ Cycles: 2
|
|||||||
Bytes: 2
|
Bytes: 2
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
Set if result is 0.
|
Set if result is 0.
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -1520,7 +1529,7 @@ Cycles: 1
|
|||||||
Bytes: 1
|
Bytes: 1
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
0
|
0
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -1546,7 +1555,7 @@ Cycles: 2
|
|||||||
Bytes: 2
|
Bytes: 2
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
Set if result is 0.
|
Set if result is 0.
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -1589,7 +1598,7 @@ Cycles: 1
|
|||||||
Bytes: 1
|
Bytes: 1
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
0
|
0
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -1623,7 +1632,7 @@ Cycles: 1
|
|||||||
Bytes: 1
|
Bytes: 1
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
Set if result is 0.
|
Set if result is 0.
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -1669,7 +1678,7 @@ Cycles: 1
|
|||||||
Bytes: 1
|
Bytes: 1
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy N
|
.It Sy N
|
||||||
0
|
0
|
||||||
.It Sy H
|
.It Sy H
|
||||||
@@ -1717,7 +1726,7 @@ Cycles: 2
|
|||||||
Bytes: 2
|
Bytes: 2
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
Set if result is 0.
|
Set if result is 0.
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -1757,7 +1766,7 @@ Cycles: 2
|
|||||||
Bytes: 2
|
Bytes: 2
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
Set if result is 0.
|
Set if result is 0.
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -1797,7 +1806,7 @@ Cycles: 2
|
|||||||
Bytes: 2
|
Bytes: 2
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
Set if result is 0.
|
Set if result is 0.
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -1842,7 +1851,7 @@ Cycles: 1
|
|||||||
Bytes: 1
|
Bytes: 1
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
Set if result is 0.
|
Set if result is 0.
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -1889,7 +1898,7 @@ Cycles: 2
|
|||||||
Bytes: 2
|
Bytes: 2
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
Set if result is 0.
|
Set if result is 0.
|
||||||
.It Sy N
|
.It Sy N
|
||||||
@@ -1921,7 +1930,7 @@ Cycles: 1
|
|||||||
Bytes: 1
|
Bytes: 1
|
||||||
.Pp
|
.Pp
|
||||||
Flags:
|
Flags:
|
||||||
.Bl -hang -compact
|
.Bl -tag -width Ds
|
||||||
.It Sy Z
|
.It Sy Z
|
||||||
Set if result is 0.
|
Set if result is 0.
|
||||||
.It Sy N
|
.It Sy N
|
||||||
|
|||||||
162
man/rgbasm.5
162
man/rgbasm.5
@@ -253,7 +253,7 @@ Although, for these examples,
|
|||||||
.Ic STRFMT
|
.Ic STRFMT
|
||||||
would be more appropriate; see
|
would be more appropriate; see
|
||||||
.Sx String expressions
|
.Sx String expressions
|
||||||
further below.
|
below.
|
||||||
.Sh EXPRESSIONS
|
.Sh EXPRESSIONS
|
||||||
An expression can be composed of many things.
|
An expression can be composed of many things.
|
||||||
Numeric expressions are always evaluated using signed 32-bit math.
|
Numeric expressions are always evaluated using signed 32-bit math.
|
||||||
@@ -267,7 +267,7 @@ This is generally always the case, unless a label is involved, as explained in t
|
|||||||
section.
|
section.
|
||||||
However, some operators can be constant even with non-constant operands, as explained in
|
However, some operators can be constant even with non-constant operands, as explained in
|
||||||
.Sx Operators
|
.Sx Operators
|
||||||
further below.
|
below.
|
||||||
.Pp
|
.Pp
|
||||||
The instructions in the macro-language generally require constant expressions.
|
The instructions in the macro-language generally require constant expressions.
|
||||||
.Ss Numeric formats
|
.Ss Numeric formats
|
||||||
@@ -968,12 +968,14 @@ block before performing its own function.
|
|||||||
.Ic LOAD
|
.Ic LOAD
|
||||||
blocks can use the
|
blocks can use the
|
||||||
.Ic UNION
|
.Ic UNION
|
||||||
modifier as described below, but not the
|
modifier as described in
|
||||||
|
.Sx Unionized sections
|
||||||
|
below, but not the
|
||||||
.Ic FRAGMENT
|
.Ic FRAGMENT
|
||||||
modifier.
|
modifier.
|
||||||
.Ss Unionized sections
|
.Ss Unionized sections
|
||||||
When you're tight on RAM, you may want to define overlapping static memory allocations, as explained in the
|
When you're tight on RAM, you may want to define overlapping static memory allocations, as explained in the
|
||||||
.Sx Unions
|
.Sx Allocating overlapping spaces in RAM
|
||||||
section.
|
section.
|
||||||
However, a
|
However, a
|
||||||
.Ic UNION
|
.Ic UNION
|
||||||
@@ -1014,7 +1016,7 @@ or
|
|||||||
.El
|
.El
|
||||||
.Pp
|
.Pp
|
||||||
Different declarations of the same unionized section are not appended, but instead overlaid on top of each other, just like
|
Different declarations of the same unionized section are not appended, but instead overlaid on top of each other, just like
|
||||||
.Sx Unions .
|
.Sx Allocating overlapping spaces in RAM .
|
||||||
Similarly, the size of an unionized section is the largest of all its declarations.
|
Similarly, the size of an unionized section is the largest of all its declarations.
|
||||||
.Ss Section fragments
|
.Ss Section fragments
|
||||||
Section fragments are sections with a small twist: when several of the same name are encountered, they are concatenated instead of producing an error.
|
Section fragments are sections with a small twist: when several of the same name are encountered, they are concatenated instead of producing an error.
|
||||||
@@ -1137,7 +1139,7 @@ otherwise, it is said to be
|
|||||||
.Dq exported ,
|
.Dq exported ,
|
||||||
explained in
|
explained in
|
||||||
.Sx Exporting and importing symbols
|
.Sx Exporting and importing symbols
|
||||||
further below).
|
below).
|
||||||
More than one dot in label names is not allowed.
|
More than one dot in label names is not allowed.
|
||||||
.Pp
|
.Pp
|
||||||
For convenience, local labels can use a shorthand syntax: when a symbol name starting with a dot is found (for example, inside an expression, or when declaring a label), then the current
|
For convenience, local labels can use a shorthand syntax: when a symbol name starting with a dot is found (for example, inside an expression, or when declaring a label), then the current
|
||||||
@@ -1567,47 +1569,6 @@ environment variable if that is defined as a UNIX timestamp.
|
|||||||
Refer to the spec at
|
Refer to the spec at
|
||||||
.Lk https://reproducible-builds.org/docs/source-date-epoch/ reproducible-builds.org .
|
.Lk https://reproducible-builds.org/docs/source-date-epoch/ reproducible-builds.org .
|
||||||
.Sh DEFINING DATA
|
.Sh DEFINING DATA
|
||||||
.Ss Statically allocating space in RAM
|
|
||||||
.Ic DS
|
|
||||||
statically allocates a number of empty bytes.
|
|
||||||
This is the preferred method of allocating space in a RAM section.
|
|
||||||
You can also use
|
|
||||||
.Ic DB , DW
|
|
||||||
and
|
|
||||||
.Ic DL
|
|
||||||
without any arguments instead (see
|
|
||||||
.Sx Defining constant data in ROM
|
|
||||||
below).
|
|
||||||
.Bd -literal -offset indent
|
|
||||||
DS 42 ;\ Allocates 42 bytes
|
|
||||||
.Ed
|
|
||||||
.Pp
|
|
||||||
Empty space in RAM sections will not be initialized.
|
|
||||||
In ROM sections, it will be filled with the value passed to the
|
|
||||||
.Fl p
|
|
||||||
command-line option, except when using overlays with
|
|
||||||
.Fl O .
|
|
||||||
.Pp
|
|
||||||
Instead of an exact number of bytes, you can specify
|
|
||||||
.Ic ALIGN Ns Bq Ar align , offset
|
|
||||||
to allocate however many bytes are required to align the subsequent data.
|
|
||||||
Thus,
|
|
||||||
.Sq Ic DS ALIGN Ns Bo Ar align , offset Bc , No ...
|
|
||||||
is equivalent to
|
|
||||||
.Sq Ic DS Ar n , No ...
|
|
||||||
followed by
|
|
||||||
.Sq Ic ALIGN Ns Bq Ar align , offset ,
|
|
||||||
where
|
|
||||||
.Ar n
|
|
||||||
is the minimum value needed to satisfy the
|
|
||||||
.Ic ALIGN
|
|
||||||
constraint (see
|
|
||||||
.Sx Requesting alignment
|
|
||||||
below).
|
|
||||||
Note that
|
|
||||||
.Ic ALIGN Ns Bq Ar align
|
|
||||||
is a shorthand for
|
|
||||||
.Ic ALIGN Ns Bq Ar align , No 0 .
|
|
||||||
.Ss Defining constant data in ROM
|
.Ss Defining constant data in ROM
|
||||||
.Ic DB
|
.Ic DB
|
||||||
defines a list of bytes that will be stored in the final image.
|
defines a list of bytes that will be stored in the final image.
|
||||||
@@ -1674,7 +1635,7 @@ can be used in a
|
|||||||
/
|
/
|
||||||
.Ic SRAM
|
.Ic SRAM
|
||||||
section.
|
section.
|
||||||
.Ss Including binary files
|
.Ss Including binary data files
|
||||||
You probably have some graphics, level data, etc. you'd like to include.
|
You probably have some graphics, level data, etc. you'd like to include.
|
||||||
Use
|
Use
|
||||||
.Ic INCBIN
|
.Ic INCBIN
|
||||||
@@ -1698,7 +1659,48 @@ INCBIN "data.bin", 78, 256
|
|||||||
.Pp
|
.Pp
|
||||||
The length argument is optional.
|
The length argument is optional.
|
||||||
If only the start position is specified, the bytes from the start position until the end of the file will be included.
|
If only the start position is specified, the bytes from the start position until the end of the file will be included.
|
||||||
.Ss Unions
|
.Ss Statically allocating space in RAM
|
||||||
|
.Ic DS
|
||||||
|
statically allocates a number of empty bytes.
|
||||||
|
This is the preferred method of allocating space in a RAM section.
|
||||||
|
You can also use
|
||||||
|
.Ic DB , DW
|
||||||
|
and
|
||||||
|
.Ic DL
|
||||||
|
without any arguments instead (see
|
||||||
|
.Sx Defining constant data in ROM
|
||||||
|
below).
|
||||||
|
.Bd -literal -offset indent
|
||||||
|
DS 42 ;\ Allocates 42 bytes
|
||||||
|
.Ed
|
||||||
|
.Pp
|
||||||
|
Empty space in RAM sections will not be initialized.
|
||||||
|
In ROM sections, it will be filled with the value passed to the
|
||||||
|
.Fl p
|
||||||
|
command-line option, except when using overlays with
|
||||||
|
.Fl O .
|
||||||
|
.Pp
|
||||||
|
Instead of an exact number of bytes, you can specify
|
||||||
|
.Ic ALIGN Ns Bq Ar align , offset
|
||||||
|
to allocate however many bytes are required to align the subsequent data.
|
||||||
|
Thus,
|
||||||
|
.Sq Ic DS ALIGN Ns Bo Ar align , offset Bc , No ...
|
||||||
|
is equivalent to
|
||||||
|
.Sq Ic DS Ar n , No ...
|
||||||
|
followed by
|
||||||
|
.Sq Ic ALIGN Ns Bq Ar align , offset ,
|
||||||
|
where
|
||||||
|
.Ar n
|
||||||
|
is the minimum value needed to satisfy the
|
||||||
|
.Ic ALIGN
|
||||||
|
constraint (see
|
||||||
|
.Sx Requesting alignment
|
||||||
|
below).
|
||||||
|
Note that
|
||||||
|
.Ic ALIGN Ns Bq Ar align
|
||||||
|
is a shorthand for
|
||||||
|
.Ic ALIGN Ns Bq Ar align , No 0 .
|
||||||
|
.Ss Allocating overlapping spaces in RAM
|
||||||
Unions allow multiple static memory allocations to overlap, like unions in C.
|
Unions allow multiple static memory allocations to overlap, like unions in C.
|
||||||
This does not increase the amount of memory available, but allows re-using the same memory region for different purposes.
|
This does not increase the amount of memory available, but allows re-using the same memory region for different purposes.
|
||||||
.Pp
|
.Pp
|
||||||
@@ -1759,6 +1761,37 @@ Unions may be used in any section, but they may only contain space-allocating di
|
|||||||
.Ic DS
|
.Ic DS
|
||||||
(see
|
(see
|
||||||
.Sx Statically allocating space in RAM ) .
|
.Sx Statically allocating space in RAM ) .
|
||||||
|
.Ss Requesting alignment
|
||||||
|
While
|
||||||
|
.Ic ALIGN
|
||||||
|
as presented in
|
||||||
|
.Sx SECTIONS
|
||||||
|
is often useful as-is, sometimes you instead want a particular piece of data (or code) in the middle of the section to be aligned.
|
||||||
|
This is made easier through the use of mid-section
|
||||||
|
.Ic ALIGN Ar align , offset .
|
||||||
|
It will retroactively alter the section's attributes to ensure that the location the
|
||||||
|
.Ic ALIGN
|
||||||
|
directive is at, has its
|
||||||
|
.Ar align
|
||||||
|
lower bits equal to
|
||||||
|
.Ar offset .
|
||||||
|
.Pp
|
||||||
|
If the constraint cannot be met (for example because the section is fixed at an incompatible address), an error is produced.
|
||||||
|
Note that
|
||||||
|
.Ic ALIGN Ar align
|
||||||
|
is a shorthand for
|
||||||
|
.Ic ALIGN Ar align , No 0 .
|
||||||
|
.Pp
|
||||||
|
There may be times when you don't just want to specify an alignment constraint at the current location, but also skip ahead until the constraint can be satisfied.
|
||||||
|
In that case, you can use
|
||||||
|
.Ic DS ALIGN Ns Bq Ar align , offset
|
||||||
|
to allocate however many bytes are required to align the subsequent data.
|
||||||
|
.Pp
|
||||||
|
If the constraint cannot be met by skipping any amount of space, an error is produced.
|
||||||
|
Note that
|
||||||
|
.Ic ALIGN Ns Bq Ar align
|
||||||
|
is a shorthand for
|
||||||
|
.Ic ALIGN Ns Bq Ar align , No 0 .
|
||||||
.Sh THE MACRO LANGUAGE
|
.Sh THE MACRO LANGUAGE
|
||||||
.Ss Invoking macros
|
.Ss Invoking macros
|
||||||
A macro is invoked by using its name at the beginning of a line, like a directive, followed by any comma-separated arguments.
|
A macro is invoked by using its name at the beginning of a line, like a directive, followed by any comma-separated arguments.
|
||||||
@@ -2320,37 +2353,6 @@ PUSHO b.X, g.oOX
|
|||||||
DW `..ooOOXX
|
DW `..ooOOXX
|
||||||
POPO
|
POPO
|
||||||
.Ed
|
.Ed
|
||||||
.Ss Requesting alignment
|
|
||||||
While
|
|
||||||
.Ic ALIGN
|
|
||||||
as presented in
|
|
||||||
.Sx SECTIONS
|
|
||||||
is often useful as-is, sometimes you instead want a particular piece of data (or code) in the middle of the section to be aligned.
|
|
||||||
This is made easier through the use of mid-section
|
|
||||||
.Ic ALIGN Ar align , offset .
|
|
||||||
It will alter the section's attributes to ensure that the location the
|
|
||||||
.Ic ALIGN
|
|
||||||
directive is at, has its
|
|
||||||
.Ar align
|
|
||||||
lower bits equal to
|
|
||||||
.Ar offset .
|
|
||||||
.Pp
|
|
||||||
If the constraint cannot be met (for example because the section is fixed at an incompatible address), an error is produced.
|
|
||||||
Note that
|
|
||||||
.Ic ALIGN Ar align
|
|
||||||
is a shorthand for
|
|
||||||
.Ic ALIGN Ar align , No 0 .
|
|
||||||
.Pp
|
|
||||||
There may be times when you don't just want to specify an alignment constraint at the current location, but also skip ahead until the constraint can be satisfied.
|
|
||||||
In that case, you can use
|
|
||||||
.Ic DS ALIGN Ns Bq Ar align , offset
|
|
||||||
to allocate however many bytes are required to align the subsequent data.
|
|
||||||
.Pp
|
|
||||||
If the constraint cannot be met by skipping any amount of space, an error is produced.
|
|
||||||
Note that
|
|
||||||
.Ic ALIGN Ns Bq Ar align
|
|
||||||
is a shorthand for
|
|
||||||
.Ic ALIGN Ns Bq Ar align , No 0 .
|
|
||||||
.Sh SEE ALSO
|
.Sh SEE ALSO
|
||||||
.Xr rgbasm 1 ,
|
.Xr rgbasm 1 ,
|
||||||
.Xr rgblink 1 ,
|
.Xr rgblink 1 ,
|
||||||
|
|||||||
@@ -254,7 +254,7 @@ Size of the
|
|||||||
below.
|
below.
|
||||||
.It Cm BYTE Ar RPNExpr Ns Bq RPNSize
|
.It Cm BYTE Ar RPNExpr Ns Bq RPNSize
|
||||||
The patch's value, encoded as a RPN expression
|
The patch's value, encoded as a RPN expression
|
||||||
.Pq see Sx RPN EXPRESSIONS .
|
.Pq see Sx RPN expressions .
|
||||||
.El
|
.El
|
||||||
.It Cm ENDR
|
.It Cm ENDR
|
||||||
.El
|
.El
|
||||||
@@ -294,14 +294,14 @@ Size of the
|
|||||||
below.
|
below.
|
||||||
.It Cm BYTE Ar RPNExpr Ns Bq RPNSize
|
.It Cm BYTE Ar RPNExpr Ns Bq RPNSize
|
||||||
The patch's value, encoded as a RPN expression
|
The patch's value, encoded as a RPN expression
|
||||||
.Pq see Sx RPN EXPRESSIONS .
|
.Pq see Sx RPN expressions .
|
||||||
.It Cm STRING Ar Message
|
.It Cm STRING Ar Message
|
||||||
The message displayed if the expression evaluates to a non-zero value.
|
The message displayed if the expression evaluates to a non-zero value.
|
||||||
If empty, a generic message is displayed instead.
|
If empty, a generic message is displayed instead.
|
||||||
.El
|
.El
|
||||||
.It Cm ENDR
|
.It Cm ENDR
|
||||||
.El
|
.El
|
||||||
.Ss RPN EXPRESSIONS
|
.Ss RPN expressions
|
||||||
Expressions in the object file are stored as RPN, or
|
Expressions in the object file are stored as RPN, or
|
||||||
.Dq Reverse Polish Notation ,
|
.Dq Reverse Polish Notation ,
|
||||||
which is a notation that allows computing arbitrary expressions with just a simple stack.
|
which is a notation that allows computing arbitrary expressions with just a simple stack.
|
||||||
|
|||||||
Reference in New Issue
Block a user