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 e9fe250..b05afb0 100755 Binary files a/bin/c2d and b/bin/c2d differ diff --git a/bin/c2d.exe b/bin/c2d.exe index 9e767be..95c8f6b 100755 Binary files a/bin/c2d.exe and b/bin/c2d.exe differ diff --git a/bin/page2text.exe b/bin/page2text.exe index 0b50ca1..cdeeeb8 100755 Binary files a/bin/page2text.exe and b/bin/page2text.exe differ diff --git a/bin/text2page.exe b/bin/text2page.exe index c96f433..c0d97d0 100755 Binary files a/bin/text2page.exe and b/bin/text2page.exe differ diff --git a/c2d.c b/c2d.c index 0a2e618..5fd829b 100644 --- a/c2d.c +++ b/c2d.c @@ -1,6 +1,6 @@ /* -c2d, Code to Disk, Version 0.56 +c2d, Code to Disk, Version 0.57 (c) 2012,2017 All Rights Reserved, Egan Ford (egan@sense.net) @@ -43,7 +43,7 @@ Bugs: #include "c2d.h" #include "holes.h" -#define VERSION "Version 0.56" +#define VERSION "Version 0.57" #define INFILE argv[argc-2] #define OUTFILE argv[argc-1] #define BINARY 0 @@ -302,7 +302,11 @@ int main(int argc, char **argv) blank.track[1].sector[4].byte[loadersize + 8 + i] = i * num_sectors / bar_length; } - loaderstart = 0x400; + // this version loads text page right into place, however can cause + // issues with scratchpad RAM + // loaderstart = 0x400; + // load here and move to 0x400 just the text data + loaderstart = 0x800; // temp hack to effect the sound of the drive, i.e. to make consistent // longer term put binary payload at end of loader @@ -320,7 +324,8 @@ int main(int argc, char **argv) fprintf(stderr, "Binary Number of sectors: %d\n", (int) ceil((filesize + (loadaddress & 0xFF)) / 256.0)); fprintf(stderr, "Binary Memory page range: $%02X - $%02X\n", loadaddress >> 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