From 66f63c53d7e890d1ccc4f216e82d9cc7ddf13840 Mon Sep 17 00:00:00 2001 From: Egan Ford Date: Sat, 1 Apr 2017 19:59:47 -0600 Subject: [PATCH] added -s option to override start address --- README.md | 4 ++-- bin/c2d | Bin 156876 -> 156864 bytes bin/c2d.exe | Bin 182650 -> 182986 bytes c2d.c | 16 ++++++++++------ c2d.h | 2 +- 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 4e34029..aa55880 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ Windows/MinGW: ### Usage/Examples ``` usage: c2d [-vh?] - c2d [-m] input[.mon],[load_address] output.dsk + c2d [-m] [-s start address override] input[.mon],[load_address] output.dsk -h|? this help -m jump to monitor after booting @@ -85,7 +85,7 @@ Examples: ### The Ugly Stuff -c2d, Code to Disk, Version 0.2, Sun Apr 2 00:59:38 UTC 2017 +c2d, Code to Disk, Version 0.3, Sat Apr 1 19:57:16 MDT 2017 (c) 2012,2017 All Rights Reserved, Egan Ford (egan@sense.net) diff --git a/bin/c2d b/bin/c2d index 06c6b0b5cedfdac855403eceee2ae7309f961f67..7ec62aa4086da8b533b17b5e9394a42f8cffa976 100755 GIT binary patch delta 2508 zcmX|De{kD&75_@MQYZbPIB6kmN~7%LT(&mFzSdnxlR0JzlZR>3E!o=AF?+VN1`;Q; z)e!D_IK{~tA=IX5V0Mg>!F8}JBi-#tcV%nsv2+dBJHieq{IhkVfJ}e8Y`A4byeBE> zqP*|>ykDR1`@XO3^YfMY`O2vUcXtgT6d|Mn|H0FJTnpU)qpxaXOfwbHUS-W_}qVqSBG-ph0+xebBtA|3AUUyL?9Q zv0!gFc0JhB<-64Ts3_kO4_whVFoe90J-h75mID%#E$`ho z4IT{^)pPA8Rs9WZ>B==3!0#+2T?htl;1A)8io-(gL#S%!&06D*Z09y zkgu)x$~Uq)1;8u-uy6Lz0Vg46s=!$fLHxt2^D3-~@7+*#-VkMhuND=_aYIzc`HO&u zwZwO`+3e#e!-sr=IriAGD<-IX~yK`|D@9Hpr~xozXw;ZqA<%O(*la#0MQV$j2Gm8me@@7DmO$x%XR{#61yQ^V)sD7T?`HIBy%sEF(BvQ z{ViAvlgwK4)R`{=W0)8ixev^~Gi?9}a!D>it|rJ;xZ|?y1+aHb7_avmgq&sWLIc7< zRyf-=aY%tb+lzYm2;&)==qRAX$}HOX8+U19!;^vpuvFbm;0seTtWP~GDwi^^7g zHyS4LqCCfr&sewX6>C%fh0U_F%i~y7St_uz%va2;z*~e4 z75zRi`0~ZwpTI1t`}t1$mgrjmhw)^OPisN;~iS*kr69L=cBqdWdZpgLx&kz=6M+3CkZs4gqpt z1|K??4e6MI)v~{#vUAkrg9eWL*7hptQ2X+I^Oq+@We;D6Jz!_^qWXdZ$NuuGf`X*M z)C_%w=`0enK^=d*pC<78Z-)z} zty}$Rs;F&Q-Oy!Sw$nh66fU}i${R>P-wvuMUthe7rr9jtu5ZSz&O)BT-@yH&VgsC{ z_R{K}8pHE*y#MNFDnSGvH9WU9*P8UM?}LAF6h7_t9>-M@SEq0l$JIQpcEgI0#}cV@ z|4@?iZrntwJn5<`GBUU~kZvP`LrLnIfrHSog&ShSCYtI#C-M zP9#wgQ5jD4C#61AyG?bU6hmdFt)x+jpn_+D%3f5`v1rl^8b4PbZ|I zVF_KwC{PEZ0|P^`-0cYcg7CxHbFgDLxy L@!X*}{lNbK=&0=C delta 2470 zcmX|D4{Q_X760z+OH4?({A)!5BZi)fX#$HG*-&wCygJim^&qAEDH9vc90$@RPDn0o zG<7)CN#~p8H0VH~Y=cluV^g;YwNl8?C^jq5NUSQ=w6ba4N~MmoD5EtcO*1m@_wFv7 ze17l!-k*{A*mP z)@}P5w^Tc2TgH`Z=WVrRZn%-jkmc>xzOu4=E?YuCyaM&y|g&vekHHlBq*dAv*U z{u(mUV*k)Sv-<=&%rn>Frz$jAaF>p*`CH)!Ip4uUiAVo_@cc*f+K}MpCbZuOFIP;! z%K@)7cuUPFZ)BRAi?!Brk$X}LmG|-&3$*vj55&}B#^hw<`bHk4KD(*_)qL>yclmev zcQku$`?m+fH+MWOt9Ru?pXk_+oD_D!^NO)IIrY%z@RQYl2GpDS7pQ-HHm@9r&+b>Y z9+cy=-O8r;>~jOxVRw$~QVkb~B!%MQMMO7x()tN)zM}eB|9Ps_t>f`o-@s8AyuX0$pO4i^mjm`DCXW0HPIB@EsZ{^|d_FIaq+8Utlyyk=CB%@` zEBZ-0V^Nb;KO~s^p?elP)Yn2`h7pGk7{P^MBqgUxwm=(V)K57yW% zd;&NjEXEN7c^B_BXfGy&|4~Vk!rBMDbip_WVL1ToL(L+V8?iET4zt%zLf<@cd#W?f z*kvL1FZc)jV&IC3V1I#-nRO(Dt7g>eNFM%67OJCT0V$kK#GyH ztX>j_Uol7IXQp#8%*4r(ZM05uF^)_K8o^O)Ik`QCeiO-8%^D~6CaXucry511uUA6h zNoRN7M?WST?{CBlvsM&9MR9(MF%NlJf4%6L;s#GC`VCn_Q+w7UaV$^UY zzoS!4HT<4Pa$^kBH%7)O;TJGg>m<)@8WE?Q3P`QQIf&aNt9vAOP`%rtUZy|*8(uZC zqY>DL0P!>@4j-bP!wfh)Gw0~$(SJ-Dw6Nk8Yp|7|`dLt&gD-9=`B)@cuNMRZ;i?r7N=^L#L2Xr`gsAh^sU!rY^=#x#xtWogg7wB z`i-g}R}^}KlwCrjY;L^a&oIf(%n?w56uyTPvNsSXhy~dIMN-5`i-x!}?yWd!p<+Teq+$+M>}O#n~5WYk%BnsM{ky7}y7X5Fc2( z23=w1>UT1i_Ca+mDx(!HJ6s6YmhD@&X(yJgD)?s07XP;0+LdLGa?Up#%SUS<~Kdq_c~SvA%ln9pSE?{s>7MN$Tm1L`i5Op|`Iy zs&tSj8{&WxCZW|5`bl_(1Ud~8LL~Hu+oFck{<5a^dpn-*>r{;Ry-@CpC_TLjnGQng zZtLpmF+vV;5Y6Sr?}qqqjenz!-|QN5F&i6N%_)&Vh3&AhiPezPe*ChePvKIbXUsKz zyp3PCa^atp3m9EO3xA?&Nk%UZoz1rKagM7T?+o*+$B%^hI`HSi{Oc8wzCN}WS#?I+ M*+LF4w)30+56ko1o&W#< diff --git a/bin/c2d.exe b/bin/c2d.exe index 8a23acc125ca4541e0d5fd138233504da24b61fe..3b4e21f23cbfc8d1b7ad7b5dc975670b66e0b68a 100755 GIT binary patch delta 5676 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 KSI_g8*nb1s+l6uf delta 5749 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 REMHNOt`uUs|196l{te&xwIl!l diff --git a/c2d.c b/c2d.c index e0a1586..b63f25f 100644 --- a/c2d.c +++ b/c2d.c @@ -1,6 +1,6 @@ /* -c2d, Code to Disk, Version 0.2, Sun Apr 2 00:59:38 UTC 2017 +c2d, Code to Disk, Version 0.3, Sat Apr 1 19:57:16 MDT 2017 (c) 2012,2017 All Rights Reserved, Egan Ford (egan@sense.net) @@ -53,7 +53,7 @@ Bugs: #include #include "c2d.h" -#define VERSION "Version 0.2" +#define VERSION "Version 0.3" #define INFILE argv[argc-2] #define OUTFILE argv[argc-1] #define BINARY 0 @@ -65,13 +65,13 @@ char *getext(char *filename); int main(int argc, char **argv) { FILE *ifp, *ofp; - int c, j, k, start, inputtype, warm = 0, filesize = 0; + int c, j, k, start, start_override = 0, inputtype, warm = 0, filesize = 0; struct stat st; char *filetypes[] = {"BINARY","MONITOR"}; char *ext, filename[256], load_address[10]; opterr = 1; - while((c = getopt(argc, argv, "vmh?")) != -1) + while((c = getopt(argc, argv, "vmh?s:")) != -1) switch(c) { case 'm': warm = 1; @@ -80,6 +80,9 @@ int main(int argc, char **argv) fprintf(stderr,"\n%s\n\n",VERSION); return 1; break; + case 's': // override rate for -1/-2 only + start_override = (int)strtol(optarg, (char **)NULL, 16); + break; case 'h': // help case '?': usage(); @@ -140,8 +143,6 @@ int main(int argc, char **argv) filesize |= b << 8; } -printf("debug: %x %x\n\n",start,start&0xFF); - //check for errors fread(&blank.track[1].sector[0].byte[start & 0xFF], filesize, 1, ifp); } @@ -187,6 +188,9 @@ printf("debug: %x %x\n\n",start,start&0xFF); if(warm) start = 0xFF69; + if(start_override) + start = start_override; + blank.track[0].sector[1].byte[0x3B] = 0x4C; blank.track[0].sector[1].byte[0x3C] = start & 0xFF; blank.track[0].sector[1].byte[0x3D] = start >> 8; diff --git a/c2d.h b/c2d.h index dd1c952..ff146c9 100644 --- a/c2d.h +++ b/c2d.h @@ -13,7 +13,7 @@ typedef struct d { const char *usagetext="\n\ usage: c2d [-vh?]\n\ - c2d [-m] input[.mon],[load_address] output.dsk\n\ + c2d [-m] [-s start address override] input[.mon],[load_address] output.dsk\n\ \n\ -h|? this help\n\ -m jump to monitor after booting\n\