From d827ee0f97efcb5efb6dfa667548b4ced802d9f6 Mon Sep 17 00:00:00 2001 From: Yuvia Date: Tue, 9 Sep 2025 16:00:07 +0000 Subject: [PATCH] final construction parts & primitive output --- 6.out | Bin 79345 -> 0 bytes a.out | Bin 256 -> 0 bytes cpu.6 | Bin 31261 -> 0 bytes cpu.c | 6 ++++-- dat.h | 1 + fns.h | 7 +++++++ main.6 | Bin 4242 -> 0 bytes main.c | 7 ++++++- mem.6 | Bin 672 -> 0 bytes mkfile | 2 +- out.c | 17 +++++++++++++++++ test.s | 11 ----------- 12 files changed, 36 insertions(+), 15 deletions(-) delete mode 100755 6.out delete mode 100644 a.out delete mode 100644 cpu.6 delete mode 100644 main.6 delete mode 100644 mem.6 create mode 100644 out.c delete mode 100644 test.s diff --git a/6.out b/6.out deleted file mode 100755 index 13405285a1255352ef6a3dd4ddca47f6b6c5c94a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79345 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 HEG+#uHfUn? diff --git a/cpu.c b/cpu.c index 7c4219f..9e5c139 100644 --- a/cpu.c +++ b/cpu.c @@ -7,6 +7,7 @@ u8int rA, rS, rX, rY, rP; u16int pc; int irq, nmi; +int trace; void nz(u8int v) @@ -217,8 +218,9 @@ step(void) } cpc = pc; op = fetch8(); - print("%02x %08b %08b %08b %08b %04x %02x\n", - op, rA, rX, rY, rP, cpc, rS); + if(trace) + print("%02x %08b %08b %08b %08b %04x %02x\n", + op, rA, rX, rY, rP, cpc, rS); switch(op){ case 0x00: pc++; diff --git a/dat.h b/dat.h index 6070c6a..31a3593 100644 --- a/dat.h +++ b/dat.h @@ -12,3 +12,4 @@ extern u8int *mem; extern u8int *romptr; extern u8int rA, rS, rX, rY, rP; extern u16int pc; +extern int trace; diff --git a/fns.h b/fns.h index 3d48ad8..1fec11e 100644 --- a/fns.h +++ b/fns.h @@ -2,4 +2,11 @@ extern int step(void); extern u8int memread(u16int); extern void memwrite(u16int, u8int); +extern void push8(u8int); +extern void push16(u16int); +extern u8int pop8(void); +extern u16int pop16(void); +extern u8int fetch8(void); extern u16int fetch16(void); + +extern void out(void); diff --git a/main.6 b/main.6 deleted file mode 100644 index b59910385d6bc4340b51c2103d02d1b8cecb4421..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4242 zcmbtXeT-aH6+d^&quZsxyxGpaQlRsIw2{cR#gJwN68Xa~jHd0#DvJ_%JM(6DbiVHU zsJk^$Fik{Cqo7gOe{@mQ##ikh_*oPzt$@Zz1O)*b?m73KbMCp*gS4!!-AM=eD~%%~ET{WBff3`VX@q94WtnE!OO4nII{h6@njuB} zCr+%dpx4@cm0>#lW;bnx2BbR{VLvAJGqmSF*2T;58mqdU`KBz~J6a%I0B8G{b6&w; zIzyjX$EduM|M^s{Ady&~6<0HK@Bi{QplSLhRFi}8vB($WtNm?;^9JMNum&Id@A0Q&KPmW%;e%)) zO#J3@!EZKvvm5%|u)k37zTuNa|7L#}4I+u@aK%zp%arUOqOm3A8K69eLw};74r~ej zsn;RU{#|5r?mAsEH5JyU=F7C-aOHb1=91aJ0joHA$1j!jQC45A$ zWqwK38tVR+-f)d}!lh0U!vU+wb@ZH(oC&~T4mL12Vl-q|o;?_beH?88xxSBceYSSq z3cEC-jJKfJl6_qwbBB#bNrs)TuvHe{@r~@^Fet(eo z1wUhW_QrWF`0EV65CuJyGs=|siRen^<+$H@Ztprhj+@aAlAw#Num!o}II&31CP19n zfJp`s{m^W(c97x??H1)k?Pc7P4RJ$V_q~}=PqaEwJ5BqmbG27Hjl!K9XX+$7tnfA1)jsro zeO@~XLzItca?isxIt2;oUjjy&gJv^~W5S%UJPyMA(BFoCX*W~CNAwZqksd>E&2hn5 zmtSzJ*jQG`l{N~y!O|+8Fu3pO?RSwrKfmtmk=*ljL_daP+mWL(L=Jd8i=(JwXHKuY zl`*4Ko^b#(*+WBJJ9~OoSE4XzAscK&Zbchk`PQmO)x+$%!VN5vr>gsiC34=34>a#1 z0Lb3$K*&;eX@W3&!-D^$;alilAF&Glb2*Qcc3Zgh*3TCWKfj!W@fALr-SS^EJO;!z zn9oPTkEX0xMRX@y$)sgsloCNzb8@p(RUAooT^#W|jp$LVDH7aJwTCW0uH9yL5Ocq< zl3Z6GF%o8@KljsTbd}$9%*CHU?N+tJmke)EGKsO?#1vs()!fMh-MJ}|M+GhVI9TU2 zKGND#XwyyjA@KxLu;o{yp`Nij2dx_`P9z(p%81@F{zehf{XZrQ}g63inC4(sK^EH;1a4*21W2v}678*CoJ!%|b z?wJNbH@dlV8_RZxJ1W~<27UWhIrmBKUUAQ9-+94_>T%~plmAVj>VrT&mym!3waHuZ| zl0lb$uo+JmSx==Z$*R0cg-=jdt4&)s~+Iz7t(|1HQAOC=uyb02f`o6(|3K;CD# z*{s7W62lWxXe>X)?(=0?8Qf}sDf2B1GR2_C=yv)YAo9*l!y-Ay*{n{#XCRwpskGVW z05Kr(Ba9{f>D^E_yzz=zeQ~sxG(8W}xeAKZy%?IM8^8QIy>-~6nEt?;m-*MGyA_&y zezNHrU2lg;bMeaE$nYPbH!q&30QtXWlT zrd<12H|(m%Sy!jO7E%6IL}95Eg&{e=Fi{M6xC~A(I6|Vq|62JQPc@$(Pc=T}Z@2L7 NSmZngobFM^{NJ9is0IK4 diff --git a/main.c b/main.c index 810b8f9..d0d4365 100644 --- a/main.c +++ b/main.c @@ -6,7 +6,7 @@ void usage(void) { - fprint(2, "usage: %s [ -s target cycle length ] prog\n", argv0); + fprint(2, "usage: %s [ -t ] [ -s target cycle length ] prog\n", argv0); exits("usage"); } @@ -41,6 +41,7 @@ main(int argc, char **argv) vlong t, t2, t3; vlong target; + trace = 0; target = 1000; mem = malloc(0x10000); if(mem == nil) @@ -49,6 +50,9 @@ main(int argc, char **argv) case 's': target = atoll(EARGF(usage())); break; + case 't': + trace = 1; + break; default: usage(); break; @@ -71,6 +75,7 @@ main(int argc, char **argv) t3 = t2-t; } } + out(); } } diff --git a/mem.6 b/mem.6 deleted file mode 100644 index bd5c8b887a7c2bc88b5be3a8833dd57f29ee0dca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 672 zcmbtQu}Z{15S>XbV3{Cy`HQoWBZXL7d73|nn}~tSd7ETUQXDqv1Pco-MMUB7io-$_ zf5h6-pU~Oa6$Nd?Eq30#o%h}(Ei|~X2CXitDh+7VG*1kyN@0K~Qp<>}PzDxR(H9T_ zfY^+0ax<$v{c#FvF(t>03Y(wmdOAB diff --git a/mkfile b/mkfile index 2b5dafa..6b7c155 100755 --- a/mkfile +++ b/mkfile @@ -3,7 +3,7 @@ BIN=/$objtype/bin TARG=scemu -OFILES=main.$O cpu.$O mem.$O +OFILES=main.$O cpu.$O mem.$O out.$O UPDATE=mkfile prog.s ${OFILES:%.$O=%.c} default:V: $O.out diff --git a/out.c b/out.c new file mode 100644 index 0000000..2c5570d --- /dev/null +++ b/out.c @@ -0,0 +1,17 @@ +#include +#include +#include "dat.h" +#include "fns.h" + +void +out(void) +{ + int c; + + if(memread(0x7002) == 1){ + c = memread(0x7000); + memwrite(0x7001, 0); + print("%c", c); + memwrite(0x7001, 1); + } +} diff --git a/test.s b/test.s deleted file mode 100644 index 4b3a2a8..0000000 --- a/test.s +++ /dev/null @@ -1,11 +0,0 @@ - .org $ff00 -reset: - lda #'\' - sta $7000 -loop: - ror - jmp loop - .org $fffa - .word reset - .word reset - .word reset