diff --git a/basic/appleiibot/Makefile b/basic/appleiibot/Makefile index 1d841bdd..acaa3cfc 100644 --- a/basic/appleiibot/Makefile +++ b/basic/appleiibot/Makefile @@ -18,7 +18,7 @@ appleiibot.dsk: E2.BAS FLAME.BAS FLAME2.BAS HELLO \ XOR_ZOOM.BAS MOD9_HGR.BAS SIER_HGR.BAS MOVE.BAS SINE.BAS XDRAW128.BAS \ GATOR.BAS CURSOR.BAS STARGATE.BAS TUNNEL.BAS STARFIELD.BAS \ STAROOPS.BAS HGRSTARFIELD.BAS COOL_BOT.BAS WEB.BAS ORB.BAS \ - FIREWORKS.BAS + FIREWORKS.BAS THINKING.BAS # cp $(EMPTY_DISK)/empty.dsk appleiibot.dsk cp empty.dsk appleiibot.dsk @@ -94,6 +94,7 @@ appleiibot.dsk: E2.BAS FLAME.BAS FLAME2.BAS HELLO \ $(DOS33) -y appleiibot.dsk SAVE A WEB.BAS $(DOS33) -y appleiibot.dsk SAVE A ORB.BAS $(DOS33) -y appleiibot.dsk SAVE A FIREWORKS.BAS + $(DOS33) -y appleiibot.dsk SAVE A THINKING.BAS #### @@ -400,6 +401,11 @@ QR.BAS: qr.bas #### +THINKING.BAS: thinking.bas + $(TOKENIZE) < thinking.bas > THINKING.BAS + +#### + RLE.BAS: rle.bas $(TOKENIZE) < rle.bas > RLE.BAS diff --git a/basic/appleiibot/convert_tgreene.c b/basic/appleiibot/convert_tgreene.c index 3f8be60a..21e2cb17 100644 --- a/basic/appleiibot/convert_tgreene.c +++ b/basic/appleiibot/convert_tgreene.c @@ -3,7 +3,7 @@ #include #include -#define OFFSET 32 +#define OFFSET 35 #define OFFSET2 35 //#define OFFSET 35 @@ -48,6 +48,7 @@ int main(int argc, char **argv) { in[i+0],pv,third,val); if (val>0x7e) fprintf(stderr,"error0, too big! in=%x pv=%x e=%x val=%x\n", in[i+0],pv,third,val); + if (val=='\"') fprintf(stderr,"error0, additional quotation marks\n"); // printf("%c",val); //(in[i + 0] >> 2) + OFFSET); //printf("%c",val); //(in[i + 0] >> 2) + OFFSET); enc2[enc_ptr]=val; @@ -115,10 +116,12 @@ int main(int argc, char **argv) { if (mode==END_AT_3F5) { fprintf(stderr,"Ending at $3F5\n"); printf("1FORI=0TO%d:POKE%d+I,4*PEEK(%d+I)-" - "192+(PEEK(%d+I/3)-%d)/4^(I-INT(I/3)*3):NEXT\n", + "%d+(PEEK(%d+I/3)-%d)/4^(I-INT(I/3)*3):NEXT\n", filesize-1, 0x3f5-filesize+3, - 2125,2125+filesize,OFFSET2); + 2125, + 64+4*OFFSET, + 2125+filesize,OFFSET2); printf("2&\"%s%s\n",enc2,enc); } @@ -128,10 +131,12 @@ int main(int argc, char **argv) { fprintf(stderr,"Beginning at $3F5\n"); printf("1FORI=0TO%d:POKE%d+I,4*PEEK(%d+I)-" - "192+(PEEK(%d+I/3)-%d)/4^(I-INT(I/3)*3):NEXT\n", + "%d+(PEEK(%d+I/3)-%d)/4^(I-INT(I/3)*3):NEXT\n", filesize-1, 0x3f5, - 2126,2126+filesize,OFFSET2); + 2126, + 4*OFFSET+64, + 2126+filesize,OFFSET2); printf("2&\"%s%s\n",enc2,enc); } diff --git a/basic/appleiibot/thinking.bas b/basic/appleiibot/thinking.bas new file mode 100644 index 00000000..415b2720 --- /dev/null +++ b/basic/appleiibot/thinking.bas @@ -0,0 +1,2 @@ +1FORI=0TO140:POKE875+I,4*PEEK(2125+I)-204+(PEEK(2266+I/3)-35)/4^(I-INT(I/3)*3):NEXT +2&"/@qY2Tn[3I8Dp\o:4]Sb3T?[%ipSqk(T6i6_'YpT[3JnLp_4X>W6[qec=l4Y:4oaemj5o1V4loFV1domk4f`\mdbZr;]rcY?\Xj\lLNbH37AUhX?DUhH@(RH -; 158 bytes -- blargh - .include "zp.inc" .include "hardware.inc" +; 161 -- original with page flip removed +; 159 -- remove extraneous store to YY +; 158 -- cond jump for jmp + +; 0------------------------- +; 0 1111111111111111111111 0 +; 0 1 22222222222222222221 0 + +; if XX < YY COL++ + + COL = $F0 XSTART = $F1 XSTOP = $F2 @@ -15,8 +24,8 @@ YSTOP = $F4 OFFSET = $F5 CURRENT = $F6 YY = $F7 -BLARGH = $F8 -BLARGHH = $F9 +BASE = $F8 +XS = $F9 thinking: @@ -25,35 +34,13 @@ thinking: big_loop: - ; COL value doesn't matter? - - ; 0,0 to 39,39 - ; 1,2 to 38,37 - - lda #0 - sta YSTART - sta XSTART + sta YY - lda #20 - sta YSTOP - asl - sta XSTOP - -box_loop: - - ldx YSTART + ldx #0 yloop: txa - jsr GBASCALC ; take Y-coord/2 in A, put address in GBASL/H -; ; ( a trashed, C clear) - lda GBASL - sta BLARGH - lda GBASH - clc - adc #4 - sta BLARGHH - + jsr GBASCALC ; take Y-coord/2 in A, put address in GBASL/H ( a trashed, C clear) lda COL and #$7 @@ -61,91 +48,90 @@ yloop: lda color_lookup,Y sta COLOR - ldy XSTART -xloop: - lda COLOR - and (BLARGH),Y - sta (GBASL),Y - iny - cpy XSTOP - bne xloop + ;======================= + ldy #0 +xloop: + + +inc_pointer: + inc YY + stx XS + + ; skip if out of range + cpx #7 + bcc draw_color + cpx #14 + bcs draw_color + + + + ldx YY + lda thinking_data-1-35,X + sta CURRENT +thinking_xloop: + ror CURRENT + bcs skip_color + + +draw_color: + lda COLOR + sta (GBASL),Y +skip_color: +no_draw: + ldx XS + + iny + + cpy #40 + beq done_done + + tya + and #$7 + beq inc_pointer + bne thinking_xloop +done_done: + + + + ;======================= + + cpx #9 + beq blarch + bcc blurgh + inc COL + jmp blarch +blurgh: + dec COL +blarch: inx - cpx YSTOP + cpx #20 bne yloop - inc COL - - inc XSTART - dec XSTOP - - inc YSTART - dec YSTOP - lda YSTOP - cmp #10 - bne box_loop ;========================== ; done drawing rainbow box ;========================== - ;========================== - ; write THINKING - ;========================== -.if 0 -thinking_loop: - lda #7 - ldx #0 - -thinking_yloop: - sta YY -; lda YY - jsr GBASCALC ; take Y-coord/2 in A, put address in GBASL/H ( a trashed, C clear) - - ldy #0 -inc_pointer: - inx - lda thinking_data-1,X - sta CURRENT -thinking_xloop: - ror CURRENT - bcc no_draw - - lda #$00 - sta (GBASL),Y -no_draw: - iny - tya - and #$7 - beq inc_pointer - - cpy #39 - bne thinking_xloop - - inc YY - lda YY - cmp #14 - bne thinking_yloop -.endif ;========================== ; flip pages ;========================== - - ;=================== ; increment color ; after loop we are +10 ; so -1 actually means increment 1 (because we mod 8 it) +; inc COL +; inc COL + dec COL dec COL - ;=================== - ; wait + ; WAIT lda #255 - jsr WAIT + jsr WAIT ; A = 0 at end beq big_loop @@ -162,6 +148,10 @@ no_draw: ; ; 7*5 bytes = 35 bytes +color_lookup: + ; magenta, pink, orange, yellow, lgreen, aqua, mblue, lblue +.byte $33,$BB,$99,$DD,$CC,$EE,$66,$77 + thinking_data: .byte $BE,$54,$14,$15,$39 .byte $88,$D4,$94,$34,$45 @@ -173,11 +163,11 @@ thinking_data: -color_lookup: - ; magenta, pink, orange, yellow, lgreen, aqua, mblue, lblue -.byte $33,$BB,$99,$DD,$CC,$EE,$66,$77 + ; for apple II bot entry at $3F5 + ; at +8A, so 36B + jmp thinking diff --git a/linker_scripts/apple2_36f.inc b/linker_scripts/apple2_36f.inc new file mode 100644 index 00000000..54255d6e --- /dev/null +++ b/linker_scripts/apple2_36f.inc @@ -0,0 +1,12 @@ +MEMORY { + ZP: start = $00, size = $1A, type = rw; + RAM: start = $36f, size = $8E00, file = %O; +} + +SEGMENTS { +CODE: load = RAM, type = ro; +RODATA: load = RAM, type = ro; +DATA: load = RAM, type = rw; +BSS: load = RAM, type = bss, define = yes; +ZEROPAGE: load = ZP, type = zp; +}