commit 4f03030
Devine Lu Linvega
·
2024-07-15 20:40:10 +0000 UTC
parent b3f207b
Fixed stack inspect debugger
3 files changed,
+40,
-25
+35,
-22
1@@ -3,6 +3,7 @@
2 |0013
3
4 @Zeropage &byte $1 &short $2
5+ @id $1
6
7 |0100
8
9@@ -11,40 +12,45 @@
10 ( part 1
11 > LIT2: Puts a short on the stack
12 > LIT: Puts a byte on the stack
13- > #18 DEO: Write a letter in terminal
14- > ;meta: Push short
15- > #06 DEO: Write to metadata ports )
16+ > #06 DEO: Write to metadata ports
17+ > #18 DEO: Write a letter in terminal )
18
19- [ LIT2 "kO ] #18 DEO #18 DEO #0a18 DEO
20 ;meta #06 DEO2
21+ [ LIT2 "kO ] #18 DEO #18 DEO
22+ [ LIT2 "1 18 ] DEO #0a18 DEO
23
24 ( part 2
25 > LITr: Put a byte on return stack
26 > STH: Move a byte from working stack to return stack
27 > STH2r: Move a short from return stack to working stack )
28
29- [ LITr "k ] [ LIT "O ] STH STH2r #18 DEO #18 DEO #0a18 DEO
30+ [ LITr "k ] [ LIT "O ] STH STH2r #18 DEO #18 DEO
31+ [ LIT2 "2 18 ] DEO #0a18 DEO
32
33 ( part 3
34 > LIT2r: Put a short on return stack
35 > DUP: Duplicate byte
36 > ADDr: Add bytes on return stack )
37
38- [ LIT2r "k 4d ] #01 DUP STH ADDr STH ADDr STH2r #18 DEO #18 DEO #0a18 DEO
39+ [ LIT2r "k 4d ] #01 DUP STH ADDr STH ADDr STH2r #18 DEO #18 DEO
40+ [ LIT2 "3 18 ] DEO #0a18 DEO
41
42 ( part 4
43- > JSI: Subroutine to relative absolute address
44+ > JSI: Subroutine to relative short address
45 > JMP2r: Jumps to absolute address on return stack )
46
47 subroutine
48+ [ LIT2 "4 18 ] DEO #0a18 DEO
49
50 ( part 5
51 > POP2: Removes a short from the stack
52 > INC2: Increments short on stack
53- > LDAk: Non-destructive load byte from absolute address
54- > JCI: Conditional subroutine to relative absolute address )
55+ > DUP2: Duplicate short
56+ > LDA: load byte from absolute address
57+ > JCI: Conditional subroutine to relative short address )
58
59- ;Dict/ok pstr #0a18 DEO
60+ ;Dict/ok pstr
61+ [ LIT2 "5 18 ] DEO #0a18 DEO
62
63 ( part 6
64 > GTH2k: Non-destructive greater-than short
65@@ -70,6 +76,8 @@
66 STHr AND STHr AND
67 ;Dict/stack-wrap test-part
68
69+ ( restore stack ) #0000 #0000
70+
71 ( Part 8
72 > Testing RAM wrapping
73 > Storing 12 in 0xffff, and 34 in 0x0000 )
74@@ -111,7 +119,7 @@ BRK
75 ( name ) "Opctest 0a
76 ( details ) "A 20 "Testing 20 "Program 0a
77 ( author ) "By 20 "Devine 20 "Lu 20 "Linvega 0a
78- ( date ) "1 20 "Nov 20 "2023 $2
79+ ( date ) "18 20 "Feb 20 "2024 $2
80
81 @test-part ( f name* -- )
82 pstr ?{
83@@ -123,26 +131,28 @@ BRK
84
85 LDA2k JSR2 DUP ?&pass
86 ;Dict/missed pstr
87- [ LIT2 &name $2 ] pstr/ #0a18 DEO
88- #01 ;on-reset/fail STA JMP2r
89+ [ LIT2 &name $2 ] pstr
90+ [ LIT2 "# 18 ] DEO
91+ [ LIT2 "a -id ] LDZ ADD #18 DEO
92+ #0a18 DEO
93+ #01 ;on-reset/fail STA
94 &pass
95+ .id LDZ INC .id STZ
96
97 JMP2r
98
99 @set ( name* -- f )
100
101 ;run-test/name STA2 #01
102+ [ LIT2 ff -id ] STZ
103
104 JMP2r
105
106 @pstr ( str* -- )
107-
108- &w ( -- )
109- LDAk #18 DEO
110- INC2 & LDAk ?&w
111- POP2
112-
113-JMP2r
114+ DUP2 LDA
115+ DUP ?{ POP POP2 JMP2r }
116+ #18 DEO
117+ INC2 !pstr
118
119 @tests
120 =op-equ [
121@@ -216,7 +226,7 @@ JMP2r
122 =op-jmi [
123 =op-jmi/a ]
124 =op-jsi [
125- =op-jsi/a =op-jsi/b ]
126+ =op-jsi/a =op-jsi/b =op-jsi/c =op-jsi/d ]
127 &end
128
129 @op-equ ;Dict/equ !set
130@@ -406,6 +416,8 @@ JMP2r
131 @op-jsi ;Dict/jsi !set
132 &a #02 #04 routine #06 EQU JMP2r
133 &b ;&return special &return JMP2r
134+ &c ,&skip-c JMP &routine-c ADD JMP2r &skip-c #02 #04 op-jsi/routine-c #06 EQU JMP2r
135+ &d ,&skip-d JMP &routine-d ADD JMP2r &skip-d #02 #04 op-jsi-far-routine-d #06 EQU JMP2r
136
137 @special ( routine* -- f )
138
139@@ -416,7 +428,7 @@ JMP2r
140 JMP2r
141
142 @routine ( a b -- c ) ADD JMP2r
143-@subroutine ( -- ) [ LIT2 "kO ] #18 DEO #18 DEO #0a18 DEO JMP2r
144+@subroutine ( -- ) [ LIT2 "kO ] #18 DEO #18 DEO JMP2r
145 @Absolute &byte $1 &short $2
146
147 @Dict [
148@@ -441,3 +453,4 @@ JMP2r
149 &jmi "JMI $1 &jci "JCI $1 &jsi "JSI $1
150 ]
151
152+|7000 @op-jsi-far-routine-d op-jsi/routine-d JMP2r
M
makefile
+3,
-1
1@@ -5,7 +5,7 @@ EMU_src=${CLI_src} src/devices/screen.c src/devices/controller.c src/devices/mou
2 RELEASE_flags=-DNDEBUG -O2 -g0 -s
3 DEBUG_flags=-std=c89 -D_POSIX_C_SOURCE=199309L -DDEBUG -Wall -Wno-unknown-pragmas -Wpedantic -Wshadow -Wextra -Werror=implicit-int -Werror=incompatible-pointer-types -Werror=int-conversion -Wvla -g -Og -fsanitize=address -fsanitize=undefined
4
5-.PHONY: all debug dest run test install uninstall format clean archive
6+.PHONY: all debug dest run test install uninstall format clean grab archive
7
8 all: dest bin/uxnasm bin/uxncli bin/uxn11
9
10@@ -25,6 +25,8 @@ uninstall:
11 @ rm -f ~/bin/uxn11 ~/bin/uxnasm ~/bin/uxncli
12 format:
13 @ clang-format -i src/uxnasm.c src/uxncli.c src/uxn11.c src/devices/*
14+grab:
15+ @ cp ../uxn-utils/cli/opctest/opctest.tal etc/opctest.tal
16 archive:
17 @ cp src/uxnasm.c ../oscean/etc/uxnasm.c.txt
18 clean:
+2,
-2
1@@ -45,8 +45,8 @@ static void
2 system_print(Stack *s)
3 {
4 Uint8 i;
5- for(i = s->ptr - 7; i != (Uint8)(s->ptr + 1); i++)
6- fprintf(stderr, "%02x%c", s->dat[i], i == 0 ? '|' : ' ');
7+ for(i = s->ptr - 7; i != (Uint8)(s->ptr); i++)
8+ fprintf(stderr, "%02x%c", s->dat[i], i == 0xff ? '|' : ' ');
9 fprintf(stderr, "< \n");
10 }
11