!to "test_stack.prg", cbm
*=$c000
jmp test_lit ; SYS 49152
jmp test_lod ; SYS 49155
jmp test_sto ; SYS 49158
jmp test_true ; SYS 49161
jmp test_false ; SYS 49164
jmp test_jpc1 ; SYS 49167
jmp test_jpc2 ; SYS 49170
jmp test_add ; SYS 49173
jmp test_sub ; SYS 49176
jmp test_mul ; SYS 49179
jmp test_divmod ; SYS 49182
jmp test_div ; SYS 49185
jmp test_mod ; SYS 49188
jmp test_incr ; SYS 49191
jmp test_eql1 ; SYS 49194
jmp test_eql2 ; SYS 49197
jmp test_eql3 ; SYS 49200
jmp test_neq1 ; SYS 49203
jmp test_neq2 ; SYS 49206
jmp test_neq3 ; SYS 49209
jmp test_lss1 ; SYS 49212
jmp test_lss2 ; SYS 49215
jmp test_geq1 ; SYS 49218
jmp test_geq2 ; SYS 49221
jmp test_geq3 ; SYS 49224
jmp test_outdec ; SYS 49227
jmp test_outchr ; SYS 49230
jmp test_litv ; SYS 49233
jmp test_lodint ; SYS 49236
jmp test_stoint ; SYS 49239
!source "stack.a"
test_lit
+initstp
+lit 1952 ; $07a0
rts
test_lod
+initstp
+lod var_a
rts
test_sto
+initstp
+lit 1952 ; $07a0
+sto var_b
rts
test_true
+initstp
+true
rts
test_false
+initstp
+false
rts
test_jpc1 ; Bedingung fuer Sprung erfuellt
+initstp
+false
+jpc +
lda #$ff
rts
+
lda #$80
rts
test_jpc2 ; Bedingung fuer Sprung nicht erfuellt
+initstp
+true
+jpc +
lda #$80
rts
+
lda #$ff
rts
test_add
+initstp
+lit 1472 ; $05c0
+lit 1952 ; $07a0
jsr add ; $0d60 / 3424
rts
test_sub
+initstp
+lit 1952 ; $07a0
+lit 1472 ; $05c0
jsr sub ; $01e0 / 480
rts
test_mul
+initstp
+lit 20 ; $0014
+lit 480 ; $01e0
jsr mul ; $2580 / 9600
rts
test_divmod
+initstp
+lit 19000 ; $4a38
+lit 401 ; $0191
jsr divmod ; $2f, $99 / 47, 153
rts
test_div
+initstp
+lit 19000 ; $4a38
+lit 401 ; $0191
jsr div ; $2f / 47
rts
test_mod
+initstp
+lit 19000 ; $4a38
+lit 401 ; $0191
jsr mod ; $99 / 153
rts
test_incr ; $00ff -> $0100
+initstp
+lit $ff
jsr incr ; $0100
rts
test_eql1 ; Bedingung erfuellt
+initstp
+lit $0191 ; 401
+lit $0191 ; 401
jsr eql
rts
test_eql2 ; Bedingung nicht erfuellt (high byte)
+initstp
+lit $0291 ; 657
+lit $0191 ; 401
jsr eql
rts
test_eql3 ; Bedingung nicht erfuellt (low byte)
+initstp
+lit $0192 ; 402
+lit $0191 ; 401
jsr eql
rts
test_neq1 ; Bedingung erfuellt (low byte unterschiedlich)
+initstp
+lit $0192 ; 402
+lit $0191 ; 401
jsr neq
rts
test_neq2 ; Bedingung erfuellt (high byte unterschiedlich)
+initstp
+lit $0291 ; 657
+lit $0191 ; 401
jsr neq
rts
test_neq3 ; Bedingung nicht erfuellt
+initstp
+lit $0191 ; 401
+lit $0191 ; 401
jsr neq
rts
test_lss1 ; Bedingung erfuellt
+initstp
+lit 780 ; $030c
+lit 781 ; $030d
jsr lss
rts
test_lss2 ; Bedingung nicht erfuellt
+initstp
+lit 780 ; $030c
+lit 780 ; $030c
jsr lss
rts
test_geq1 ; Bedingung erfuellt
+initstp
+lit 781 ; $030d
+lit 781 ; $030d
jsr geq
rts
test_geq2 ; Bedingung erfuellt
+initstp
+lit 781 ; $030d
+lit 780 ; $030c
jsr geq
rts
test_geq3 ; Bedingung nicht erfuellt
+initstp
+lit 780 ; $030c
+lit 781 ; $030d
jsr geq
rts
test_outdec
+initstp
+lit 1952
jsr outdec
rts
test_outchr
+initstp
+lit 65 ; "A"
jsr outchr
rts
test_litv
+initstp
+litv 'X', 0 ; X%
+litv 'Y', 'Z' ; YZ%
rts
test_lodint
+initstp
+litv 'A', 0 ; A%
jsr lodint
+litv 'B', 'C' ; BC%
jsr lodint
rts
test_stoint
+initstp
+lit 1952
+litv 'A', 'B' ; AB%
jsr stoint
rts
*=$c700
var_a
!wo $05c0 ; 1472
var_b
!wo 0