From a191c5cd8177647a4bc72c6465a76c1bda9d4bca Mon Sep 17 00:00:00 2001 From: Egan Ford Date: Wed, 3 May 2017 06:58:55 -0600 Subject: [PATCH] new loader that does not load splash screen directly to 0x400, but to 0x800 and then moves it to 0x400 to avoid overwriting scratchpad ram --- asm/loader.s | 26 ++++++++++++++++-- bin/c2d | Bin 156984 -> 156984 bytes bin/c2d.exe | Bin 185612 -> 185612 bytes bin/page2text.exe | Bin 28529 -> 28529 bytes bin/text2page.exe | Bin 28370 -> 28370 bytes c2d.c | 13 ++++++--- c2d.h | 67 +++++++++++++++++++++++++++++++++------------- test.sh | 4 +-- 8 files changed, 83 insertions(+), 27 deletions(-) diff --git a/asm/loader.s b/asm/loader.s index ccc9f5e..1f7e122 100644 --- a/asm/loader.s +++ b/asm/loader.s @@ -18,7 +18,7 @@ rwts = $B7B5 ; rwts jsr ; vars -stage1 = $800 +stage1 = $C00 ;stage2 = $B600 ; overwrite track 0/sector 0, not needed any more? stage2 = $300 ; $300 looks open ;;;run time @@ -34,10 +34,32 @@ start: grcheck: lda *+(gr-loader)+(moved-grcheck) - beq init + beq movetext lda #0 ; GR mode sta $C050 sta $C053 +movetext: + ldx #0 +movetx: + lda $800,x + sta $400,x + lda $880,x + sta $480,x + lda $900,x + sta $500,x + lda $980,x + sta $580,x + lda $A00,x + sta $600,x + lda $A80,x + sta $680,x + lda $B00,x + sta $700,x + lda $B80,x + sta $780,x + inx + cpx #120 + bne movetx ; move 120 bytes init: lda #1 ; read(1)/write(2) command ldy #$0C ; offset in RWTS diff --git a/bin/c2d b/bin/c2d index e9fe250a31f98adfaac87d8bde139917131ccfb9..b05afb0c17386253d6bf99840fdb7fbae4601bb9 100755 GIT binary patch delta 460 zcmW-Z%}Z2K7{=fCc+cDqFP=LycQk@1uLcE1X*=BsP^|*Mz?Z7HmGB64!iS05c;Tr7;A9IuiyAA`%&=bGhCHxtR)HdSzaI$UKy7SroZIqyJBP!gCUV#K708Mfu;F<(804li|a4NwH zASSsL@R)?=0CdTl1Fko=r@n5KuxP(%luJ-F{tL-z3UuEVJM9zGzBlW8SoS@_`=0wG ihTqG&PnJ>VS3v{*W+56Uy~r2-j+48{%cJ+m7WoJGZjnd; delta 414 zcmdmSigU*)&J7MMj4L)fvgk7kRN2cHysot`+kXFFI#b(?>6;r^y_gv%Z9dI$fRXXy z<{qx|%#4haWB7LP=!-Hir15JUa_LZ&ovgrbBrGq&!0?Gb<^&L*`oynuu!B`-aw@-# z@K<352A_jJI9xhR-vF5%tj~ofZ{gSEoC4&y@NZ+CIQbcW2&2+wYXMnCMwZEug0+lo zldlUZGbT;`Ehxpff3ld6F^{kc1H;ZH1_lPl{Y{fYg_M|{@^7vbieR+N5@28u@aQ$2 z&BDNNj5Qg^6FJ7(#m~UNc#O3JNb!4gTNoaAQN;w*544cMqnnk3hk;=i%VaK*De@d3 zO`rLI4g?yp5NyOVAP*?`07!96-YcTZ^hI&<8w;{(S^ zhTeb!y}<`oGA`hm`C|J@h6NlTim8=l5yM_xj>*zWsnb1;8O56$l-e7V7`HblF*Vpu xPGD1*mcYcuxMMqe0@Ef&_6IHuEDR5pOh1swWWks){bwRmJY&N4$RwuwOaPI%g1`U( diff --git a/bin/c2d.exe b/bin/c2d.exe index 9e767bea88b854c36dfd0b2c78bd1d70b7eda12b..95c8f6b189e3c6f8d1bb6a0fad1e492cb0e16286 100755 GIT binary patch delta 1789 zcmah}ZA?>V6n@`h3#D`*V2e=*Di;JrLB{-;i+0eNNt`k^2olX)re;x=jAbPIB6c=} zGGS|dbr;5}z2FDMkLikBa1`rTOXghI7UIT!hzrZg)*oc!2b&mo-eSEs`?LGwJrKYZC4Non)4zS~}(JO?rdUFcVT5 zjA0C~w+Kb`1rmoXWwgl{_70|O16~B{C!O)^vJW)o-m^GA`S-dmSiO2b}%YAc}GzF;NIhzf(+-O*xpATW1El25Wz3-A5E zCd~oiTDH@)fR(3Xao)q}Yxu~%&XA~|)hxP&)Y`=}fX-9Gd$?W@evEUMm`Tef+HsmW zv)0oQc021yI?8Bv=@T=>W)jfe$8}4`16Gy2BykjRQ<~6Z5$3M)yGK}4b_Hg+o85`4 zZE1e~+H#DuXK=OsZLa&-_JL495*rT8A*9b=VJ3s*Su^SH$8j_T|2lD{pWRzpiaYai z);)I}!##$*n7Qhw8lmd$4xtil_1;4kq0-)X6{CoRtJ6AE6xkcEA<;C9uD$UF!jCLM zj=k|F>(1Fg18gEELmxyo5*}j7xvS|A+ng&D@>b`zRG9DckyQ<;W{qscp1%$t8Sk${$u2j}wuje)(sEN>of5qD|IxNvqv z@3O9CC-7juu)JqZ^`K!==fU&oZ+XezL3~8#A{w7n=dx;iB+f;&K5LxIs`U}Qi^TY> zdY3iEN8(*1)@O}(Sz|+E?+oAaP`9BiBzuTk#|<=SFwt%U6Y}@i-1&{}d@8&1!Cdg^ zE-0pJ;5T`Qbp~J8e9y#KIqtK(mdU56`{23*Z#YiwH!hUTC-vwgQ5tuJ-YXy;pXOrpM zU=d!;Am?GgOqG1%xV(1>Gwpb3gM5h}h z?Czq3HCIYdJ&Wt3RCz~~$`prHcx$J^f1|>sClr22g*Tmy@X|?moVxgwBK52AhSLf^ zpu$ggDSV#_ul7WEr$i I6S5Nj1%%|miU0rr delta 1743 zcmah}T}&KR6rOv!OIJWBKf5#(0)>GB1(qUGD@j>lC6?3{QOLHo5uUX-iXUVl4V%)CYfvc<#b>CcZci_k8C& z-#v5AnR};WD5_&9%4ydu-}uMk>evmh=ecfvO%{D#atMe_V>Ko+Lu)h^GUM}V>_8T1 z@%rt!9$7z5+`i4al8B_arV6f|TM3E`SY=Hwv*MhuG3GjuAT`G|k$K;E+{=UnD4)=# z4`8^=%$Kwji41nu5QjeCn@-rv1Tp%|e8!3vX9c(8O3M@CGYHz`*Ao3&#uJX?{94Ab zM-0$|`r=3yK&>9#Zhd9MJlj7{zt?v~1rg%rt?l}G+GZ%n7hE-z8A2~$s-=zyjoC9Y!0}2G*I7k8HtNbM zBV+Vh)t*PE&BT{%LByWqpe;;$qv5t>d@}cb$ow<{mR~7h7>04*zd`ms;uFE!DU)KWE3| zy%-*iK8%?yHyU}%odbM5+Wm*y&3wJxCSnv3fB6p`DoX4&4-$?bx^`P1!gtJkj@{Nz zhjMn30lJiv7I_BQP-VmzkXj? z@tgVR1S}D)PD4-U4rJ;=jwZjgf;GQ3ky$Mp56jH+;?uzU)B4HNM~DCig9sCEwD1w!0O*eLAn z0)YfplSOtzI$pPsBkcJAoM8+-A^gn8cHH|2F;y+dLI8`{tr|=yr9674+b`_2o3-Qm7 zDXC#xkscraPl<0z_e+$DCcsQo^`@|MGjS1KK`wU^_NhXtx+5>VidU6eV26DZ6aF*_ zt!oWR&d(r*kf3yW3JUO_CtaI{9|)Njd@>v*i&ENUs3Ukmny> 8, (loadaddress + filesize - 1) >> 8); - loaderstart = 0x800; + //loaderstart = 0x800; + loaderstart = 0xC00; blank.track[0].sector[1].byte[0x3B] = 0x4C; blank.track[0].sector[1].byte[0x3C] = loaderstart & 0xFF; diff --git a/c2d.h b/c2d.h index d3b4381..9d3ce25 100644 --- a/c2d.h +++ b/c2d.h @@ -9031,7 +9031,7 @@ rwts = $B7B5 ; rwts jsr ; vars -stage1 = $800 +stage1 = $C00 ;stage2 = $B600 ; overwrite track 0/sector 0, not needed any more? stage2 = $300 ; $300 looks open ;;;run time @@ -9047,10 +9047,32 @@ start: grcheck: lda *+(gr-loader)+(moved-grcheck) - beq init + beq movetext lda #0 ; GR mode sta $C050 sta $C053 +movetext: + ldx #0 +movetx: + lda $800,x + sta $400,x + lda $880,x + sta $480,x + lda $900,x + sta $500,x + lda $980,x + sta $580,x + lda $A00,x + sta $600,x + lda $A80,x + sta $680,x + lda $B00,x + sta $700,x + lda $B80,x + sta $780,x + inx + cpx #120 + bne movetx ; move 120 bytes init: lda #1 ; read(1)/write(2) command ldy #$0C ; offset in RWTS @@ -9150,23 +9172,30 @@ gr: end: */ unsigned char loadercode[] = { - 0xAD,0x87,0x08,0xF0,0x08,0xA9,0x00,0x8D, - 0x50,0xC0,0x8D,0x53,0xC0,0xA9,0x01,0xA0, - 0x0C,0x99,0xE8,0xB7,0xA9,0x00,0xA0,0x08, - 0x99,0xE8,0xB7,0xA9,0x02,0x85,0x04,0xA2, - 0x00,0xBD,0x2D,0x08,0x9D,0x00,0x03,0xE8, - 0x10,0xF7,0x4C,0x00,0x03,0xAD,0x57,0x03, - 0x85,0x02,0xAE,0x55,0x03,0xCA,0xCA,0x86, - 0x00,0xA5,0x04,0xA0,0x04,0x99,0xE8,0xB7, - 0xA5,0x00,0xD0,0x05,0xAD,0x56,0x03,0x10, - 0x02,0xA9,0x0F,0x85,0x03,0xA5,0x03,0xA0, - 0x05,0x99,0xE8,0xB7,0xA5,0x02,0x18,0x65, - 0x03,0xA0,0x09,0x99,0xE8,0xB7,0xA0,0xE8, - 0xA9,0xB7,0x20,0xB5,0xB7,0xB0,0x18,0xA9, - 0x00,0x85,0x48,0xC6,0x03,0x10,0xDE,0xA5, - 0x02,0x18,0x69,0x10,0x85,0x02,0xE6,0x04, - 0xC6,0x00,0x10,0xBD,0x6C,0x58,0x03,0x4C, - 0x69,0xFF + 0xAD,0xBE,0x0C,0xF0,0x08,0xA9,0x00,0x8D, + 0x50,0xC0,0x8D,0x53,0xC0,0xA2,0x00,0xBD, + 0x00,0x08,0x9D,0x00,0x04,0xBD,0x80,0x08, + 0x9D,0x80,0x04,0xBD,0x00,0x09,0x9D,0x00, + 0x05,0xBD,0x80,0x09,0x9D,0x80,0x05,0xBD, + 0x00,0x0A,0x9D,0x00,0x06,0xBD,0x80,0x0A, + 0x9D,0x80,0x06,0xBD,0x00,0x0B,0x9D,0x00, + 0x07,0xBD,0x80,0x0B,0x9D,0x80,0x07,0xE8, + 0xE0,0x78,0xD0,0xCB,0xA9,0x01,0xA0,0x0C, + 0x99,0xE8,0xB7,0xA9,0x00,0xA0,0x08,0x99, + 0xE8,0xB7,0xA9,0x02,0x85,0x04,0xA2,0x00, + 0xBD,0x64,0x0C,0x9D,0x00,0x03,0xE8,0x10, + 0xF7,0x4C,0x00,0x03,0xAD,0x57,0x03,0x85, + 0x02,0xAE,0x55,0x03,0xCA,0xCA,0x86,0x00, + 0xA5,0x04,0xA0,0x04,0x99,0xE8,0xB7,0xA5, + 0x00,0xD0,0x05,0xAD,0x56,0x03,0x10,0x02, + 0xA9,0x0F,0x85,0x03,0xA5,0x03,0xA0,0x05, + 0x99,0xE8,0xB7,0xA5,0x02,0x18,0x65,0x03, + 0xA0,0x09,0x99,0xE8,0xB7,0xA0,0xE8,0xA9, + 0xB7,0x20,0xB5,0xB7,0xB0,0x18,0xA9,0x00, + 0x85,0x48,0xC6,0x03,0x10,0xDE,0xA5,0x02, + 0x18,0x69,0x10,0x85,0x02,0xE6,0x04,0xC6, + 0x00,0x10,0xBD,0x6C,0x58,0x03,0x4C,0x69, + 0xFF }; /* ;bar.s diff --git a/test.sh b/test.sh index dbf96ae..ebca5bf 100755 --- a/test.sh +++ b/test.sh @@ -60,7 +60,7 @@ then fi fi -SUM=a2e62a1be3ceeed3fd9c09eae8339caa +SUM=7d509bcef9a53c89839a0622514955fd rm -f ${BIN}.dsk echo @@ -158,7 +158,7 @@ rm -f ${BIN}.dsk fi fi -SUM=a2e62a1be3ceeed3fd9c09eae8339caa +SUM=7d509bcef9a53c89839a0622514955fd rm -f ${BIN}.dsk echo