2024-02-21 01:26:13 +00:00
|
|
|
*=$1000
|
2024-03-03 14:31:08 +00:00
|
|
|
label1 nop
|
2024-02-21 01:26:13 +00:00
|
|
|
!pseudopc $0300 {
|
2024-03-03 14:31:08 +00:00
|
|
|
label2 nop
|
2024-02-24 14:09:01 +00:00
|
|
|
!if * != $0301 { !error "pseudo pc is not $0301" }
|
2024-02-21 01:26:13 +00:00
|
|
|
!if &* != $1002 { !error "un-pseudo'd pc is not $1002" }
|
2024-03-03 14:31:08 +00:00
|
|
|
selfmod = * + 1
|
|
|
|
lda #$ff
|
|
|
|
|
|
|
|
does_not_make_sense = label1 + 1
|
|
|
|
|
2024-02-24 14:09:01 +00:00
|
|
|
*=$0380
|
|
|
|
nop
|
|
|
|
!if * != $0381 { !error "pseudo pc is not $0381" }
|
|
|
|
!if &* != $1082 { !error "un-pseudo'd pc is not $1082" }
|
2024-02-21 01:26:13 +00:00
|
|
|
}
|
2024-02-24 14:09:01 +00:00
|
|
|
!if * != $1082 { !error "pc is not $1082" }
|
2024-03-03 14:31:08 +00:00
|
|
|
|
|
|
|
!if label2 != $0300 { !error "label2 is not $0300" }
|
|
|
|
!if &label2 != $1001 { !error "&label2 is not $1001" }
|
|
|
|
|
|
|
|
!if selfmod != $0302 { !error "selfmod is not $0302" }
|
|
|
|
!if &selfmod != $1003 { !error "&selfmod is not $1003" }
|
|
|
|
|
|
|
|
!if does_not_make_sense != $1001 { !error "dnms is not $1001" }
|
|
|
|
!if &does_not_make_sense != $1d02 { !error "dnms is not $1d02" }
|
2024-08-27 18:54:07 +00:00
|
|
|
|
|
|
|
; older versions automatically wrapped the pseudopc to zero, I now
|
|
|
|
; realize this should be considered a bug:
|
|
|
|
!pseudopc $fffe {
|
|
|
|
!by 0, 1, 2, 3
|
|
|
|
label3 }
|
|
|
|
!if label3 != $10002 {
|
|
|
|
!error "pseudopc seems to wrap to zero after $ffff"
|
|
|
|
}
|
|
|
|
; and even worse, older versions automatically wrapped the outbuf index
|
|
|
|
; to zero as well, this is now also considered a bug:
|
|
|
|
*=$10000 ; enter "second bank"
|
|
|
|
!if * == 0 {
|
|
|
|
!error "pc seems to wrap to zero after $ffff"
|
|
|
|
}
|