From 75516e41cfa514dcd9b04c7d2bfb634dbfb218a9 Mon Sep 17 00:00:00 2001 From: FyloZ Date: Thu, 21 Sep 2023 23:53:14 -0400 Subject: [PATCH] Init --- Makefile | 30 ++++++++++++++++++++++++++++++ bin/emu | Bin 0 -> 15584 bytes obj/cpu.o | Bin 0 -> 1608 bytes obj/main.o | Bin 0 -> 1616 bytes src/cpu.c | 27 +++++++++++++++++++++++++++ src/cpu.h | 27 +++++++++++++++++++++++++++ src/main.c | 38 ++++++++++++++++++++++++++++++++++++++ 7 files changed, 122 insertions(+) create mode 100644 Makefile create mode 100755 bin/emu create mode 100644 obj/cpu.o create mode 100644 obj/main.o create mode 100644 src/cpu.c create mode 100644 src/cpu.h create mode 100644 src/main.c diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..f26300a --- /dev/null +++ b/Makefile @@ -0,0 +1,30 @@ +CC = gcc +BIN = ./bin +OBJ = ./obj +SRC = ./src + +SRCS = $(wildcard $(SRC)/*.c) +OBJS = $(patsubst $(SRC)/%.c,$(OBJ)/%.o,$(SRCS)) +EXE = $(BIN)/emu + +CFLAGS = -Wall +LDLIBS = -lm + +.PHONY: all run clean + +all: $(EXE) + +$(EXE): $(OBJS) | $(BIN) + $(CC) $(LDFLAGS) $^ -o $@ $(LDLIBS) + +$(OBJ)/%.o: $(SRC)/%.c | $(OBJ) + $(CC) $(CFLAGS) -c $< -o $@ + +$(BIN) $(OBJ): + mkdir $@ + +run: $(EXE) + $< + +clean: + rm -rf $(OBJ) $(BIN) diff --git a/bin/emu b/bin/emu new file mode 100755 index 0000000000000000000000000000000000000000..c5cee12c94ce08fa665a01f0c217a6834bdfae7b GIT binary patch literal 15584 zcmeHOYit}>6~4QP8;92RI%)TH4h2D&j(6Agg1zhP zj=_nbSQx5WQBcYcXhS84Ku{!*DnX@4{Mpnf4?y6GKlud~qLP~eaYaBWNLjvf?>Xb~ zu&zpfAXSSrH`pJK#gxc8^_ZesDq%D!HaxkP3xJgBRCU-t zpzc?9p}t=0j6G!lRwLKrtFe~#>wv^-qCyq?fKe+!86hF@){;&d5JXV%aS*SD3|tT6 z%iMvW*!})2B10^_UqR;Spphxi9}T74Z2ZeztMQW@mq|w9QI&WL%v)fd;4=3oDDkA2 z(ALTE3}Xs5l9b*n73NJdFO0qHFGzimJpP)Oc{lwXWnRM4&8RT$F={0!{e2ufo?7;J zdyr{9#{I1|4=IknpiJlP@!W97p55b_=J8y9YPxy4v!l6VPqI`oH}^; zxQfrHGUkzC##&z&Y7W--mY2{)Hllf_)# z8&ObC&|G#yACQY+w4@e*4nxb$0Bs{pua>UNlh04b)Z^M;f;GuJCDm zGhNLvtEu+m_H5UUB#QRjYhImwrmG(M%I51(Ev0cVmuuET5j!!zGT!--l`;|Am5X#hORwCiRL)(S*Ss?|KOv{t zatyQ!hISq>cV+1ZX#3m=?PhqthT@G|{yh0JLyblfMIeem6oDuLQ3Rq0L=lK05Je!0 zKoo%}0#O9sSp;JER)sHZ>CZo6?HJGC<#*e8% ze|^)(8t(pL?Tp&L_0fmhAJU%*iTfFB&teRnIG~s!LBr>Aj6)vjKlEIfzS~uP8Z>;xF%^l&?s##elLnsZsP#^1x)= zW%ffdrxt1N-xYH_P-<6v#MQ^w!hC$3)pdz8UNd$5LAJlebs0A||9=O`9}joj!RLYK zCExU5PtPOPPGlYLvRd1b6WeOFwY0UjbhfmLXLY1FtXFSV!d8lVH9h%N)7L{E!|aF0 zZRWGl&l@K`$-~%Um~A;Pv=X}%wrY9HC!n{mh2=X?SgJ|YrdC@{p_+icDWso)ep9?b z$@PP(mZ!0=)-Rps)K0klA41=#?o&HcC_v=A{29s?DMIoJ>W%RxCG#cb-;o|Y2#GH{ z^#|xTsd}}Kuk%hO++h7l*6ZI;pu34Jf$_AYPzcC(QKoiMeBS8abfCM1jr_y$Q8DBH z9Jep0TMhIy{;+=|^cLC*%SWKsKL~{k{m^fUz_3W=vmPfjJ%iju(r zPVc7T~SgW6C)=c;rC$pmU_Z|M9*dXQ=zYU>|bN!ztyd zK(6@P=CEfouIDOBPS0@~x=*E)bH^dO$yLYjCOSGNpnu=H@e$89#6Y zluRz~OqH@3Iyh9bla5zVgv!b0GiYGARPtL!7QEviz250N-1|Qy)2|*Z4#LyDnIWoV z>C}Yh4g;*%r%~2ZkSrGTge0?L z&PdUn$U0*gaHVD#j$16c7$`BMjE3EbTpGO=&=z({-GONgfmX?MVPYbi_d;jtyQ|Xk z7pF3Qr8UyT4-!Fn{<2y7N}2G3*y!FX{7&WzreF(-f1R+h0~q8_GhdK?#|?_yZ$vkM zLXiIg^93z&WDN74fc~F&hRXP5T_GsP&yRQizA4SRDA1Zh__FR0e32b#j1*@%etG`q zprauRU)C{#vTlKk7HT6XCsCm_g79TsAV|+S5*fev2|fiItvRGF>kc0^+r&6Hepaiq zC{Rp=FY6w`GCNBD;p6`{^AE6}tfK@aPQ<5YbC`btIvSU>@875Sel6=uxM&H_KmB$e z2ote?d{Jbrq96JO%5EcRq<;Hp5F z{|gv``~>p^=^IK=!u)G62KlySyag`?$tcVGiTd{_&^gMNt&;Zw`9EFQU+RK?1ecCc z`10OxwHZo?_?g;DUG#6jKSd> literal 0 HcmV?d00001 diff --git a/obj/cpu.o b/obj/cpu.o new file mode 100644 index 0000000000000000000000000000000000000000..0aad6a6eb3d4f91eae94277d2a77be5aa8d65e3b GIT binary patch literal 1608 zcmbtU&1(};5T8wITd^&v_8?Ya4^+jbKGvXR!y?Y?kl81>7h^v zMd*K^M~@yo3W6UukNyLK2QS`w5bDhCO#1rRoE(_<=J%Vg_ugc)xBTc~$#Fo$fqQU@ zga!CoI<=db*@PLGhBa^S)7$@D@dmrc-r@4GH#kRL?=as6pS{;?efdC+U$h*3`_$@0 z!OJE0dS?S*rPW$;Z>~IEyXDpvRbAEGdbPe-ZB%OjV;JtDQW1=R5;z};6LA>JndjKy zyjlgPUvcKACMJ*2c@=q5k_IjJXDSD!*7SIa0fa{g)g6OBCq?dZ;Y$IOv(ui}kI3kF{{;&B9-P>pd^spDoW;5>3=2%yrPuJ+e)*Gax_iIs#MU+J)~L2dZj2eqE2 zppqyDLDcPrJ@oY=9V(plomBgH!5ly9ZL2tm;xN%Wm_wDqt@dW(cf(=p|1n%lrdiV+ zO=&Waxrk4GZ-VF1pf_p?!TS#me9HI&?nKG_FEf9Gd3t+O`X(@JyZ>$UQO!~L(oag* znC471jn6y_mHu>YQ|$hC(Mep@3_^RKv3z^tmVDVCphIklq5X{s4BL)fMIU`*_W9p( zj(sls{x2|&YTEhVIp3bYoln2QqWL$tpv;-x@jR;J3t!ZmT2Jyt-w{BWLZv=-KGn2m dj}*M;`~?DrFg;}Gf2b(`37=mNBXh&f{|7s3h?4*S literal 0 HcmV?d00001 diff --git a/obj/main.o b/obj/main.o new file mode 100644 index 0000000000000000000000000000000000000000..266645bfc5bada050fc3ca63c5e7d0aa90b0299a GIT binary patch literal 1616 zcmbtTziSjx5T3on#2<-VfU=xnLb7O+Hx69rJFE$o} zaM+}0^zwB82<&Zq0qryF9Qg5zXsy*+^{=iy zUcctoS4_jy{YI^^QoCKNgGST5d|oKWB&v|N4@|`qU(b3@0^X}9XzT*0EExb3{yWpKS>GVyQI6P+advX1E(=L6>!wTD_%K8ukN| zg`rjEfb<$pDVj+!+kh}L}l7d5Q?Rj+bDZRJ3}FFPgM#GWSVQ0fU0} +#include + +long cpu_clock = 0; + +void cpu_step_to(long cycle) { + cpu_clock = cycle; + printf("Clock: %ld", cpu_clock); +} + diff --git a/src/cpu.h b/src/cpu.h new file mode 100644 index 0000000..8b8bb8d --- /dev/null +++ b/src/cpu.h @@ -0,0 +1,27 @@ +/* + * ===================================================================================== + * + * Filename: cpu.h + * + * Description: 6502 CPU emulator headers + * + * Version: 1.0 + * Created: 2023-09-21 10:12:33 PM + * Revision: none + * Compiler: gcc + * + * Author: William Nolin, + * Organization: + * + * ===================================================================================== + */ + +#ifndef EMU_CPU_H +#define EMU_CPU_H + +/** + * @brief Set clock + */ +void cpu_step_to(int cycle); + +#endif diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..8ff18da --- /dev/null +++ b/src/main.c @@ -0,0 +1,38 @@ +/* + * ===================================================================================== + * + * Filename: main.c + * + * Description: Emulator main loop + * + * Version: 1.0 + * Created: 2023-09-21 09:50:34 PM + * Revision: none + * Compiler: gcc + * + * Author: William Nolin, + * Organization: + * + * ===================================================================================== + */ +#include + +#include "cpu.h" + +long master_clock = 0; + +void step() { + master_clock += 1; + cpu_step_to(master_clock); + + return; +} + +int main() { + while (1) { + step(); + } + + return -1; +} +