diff --git a/source/twilight/sorry/MiniEarth/Earth1.Mac b/source/twilight/sorry/MiniEarth/Earth1.Mac new file mode 100644 index 0000000..9f3fde8 --- /dev/null +++ b/source/twilight/sorry/MiniEarth/Earth1.Mac @@ -0,0 +1,115 @@ + MACRO +&lab LongResult +&lab phd + phd + MEND + MACRO +&lab _GetAddress +&lab ldx #$0904 + jsl $E10000 + MEND + MACRO +&lab pulllong &addr1,&addr2 +&lab ANOP + AIF C:&addr1=0,.a + AIF C:&addr2=0,.b + LCLC &C +&C AMID &addr1,1,1 + AIF "&C"="[",.zeropage + pullword &addr1 + sta &addr2 + pullword &addr1+2 + sta &addr2+2 + MEXIT +.a + pullword + pullword + MEXIT +.b + pullword &addr1 + pullword &addr1+2 + MEXIT +.zeropage + ldy #&addr2 + pullword &addr1,y + ldy #&addr2+2 + pullword &addr1,y + MEND + MACRO +&lab pullword &SYSOPR +&lab ANOP + pla + AIF C:&SYSOPR=0,.end + sta &SYSOPR +.end + MEND + MACRO +&lab pushword &SYSOPR +&lab ANOP + AIF C:&SYSOPR=0,.b + LCLC &C +&C AMID "&SYSOPR",1,1 + AIF ("&C"="#").AND.(S:LONGA),.immediate + lda &SYSOPR + pha + MEXIT +.b + pha + MEXIT +.immediate + LCLC &REST + LCLA &BL +&BL ASEARCH "&SYSOPR"," ",1 + AIF &BL>0,.a +&BL SETA L:&SYSOPR+1 +.a +&REST AMID "&SYSOPR",2,&BL-2 + dc I1'$F4',I2'&REST' + MEND + MACRO +&lab longmx +&lab ANOP + rep #%00110000 + longa on + longi on + MEND + MACRO +&lab longm +&lab ANOP + rep #%00100000 + longa on + MEND + MACRO +&lab shortm +&lab ANOP + sep #%00100000 + longa off + MEND + MACRO + DefineStack + GBLA &DummyPC +&DummyPC SETA 1 + MEND + MACRO +&lab BYTE +&lab equ &DummyPC +&DummyPC SETA &DummyPC+1 + MEND + MACRO +&lab WORD +&lab equ &DummyPC +&DummyPC SETA &DummyPC+2 + MEXIT + MEND + MACRO +&lab LONG +&lab equ &DummyPC +&DummyPC SETA &DummyPC+4 + MEND + MACRO +&lab BLOCK &Value + AIF C:&lab=0,.skiplab +&lab equ &DummyPC +.skiplab +&DummyPC SETA &DummyPC+&Value + MEND diff --git a/source/twilight/sorry/MiniEarth/Make b/source/twilight/sorry/MiniEarth/Make new file mode 100644 index 0000000..2f4a0e6 --- /dev/null +++ b/source/twilight/sorry/MiniEarth/Make @@ -0,0 +1,12 @@ +echo asml Earth1.asm keep=Earth1.d +asml Earth1.asm keep=Earth1.d +echo duplicate -d Earth1.d Earth1 +duplicate -d Earth1.d Earth1 +echo duplicate -r Earth1.r Earth1 +duplicate -r Earth1.r Earth1 +echo filetype Earth1 $BC +filetype Earth1 $BC +echo setfile Earth1 -at $4004 +setfile Earth1 -at $4004 +echo copy -c Earth1 /jim1/system/cdevs/Twilight/Little.Earth +copy -c Earth1 /jim1/system/cdevs/Twilight/Little.Earth diff --git a/source/twilight/sorry/MiniEarth/earth1.ASM b/source/twilight/sorry/MiniEarth/earth1.ASM new file mode 100644 index 0000000..32754bc --- /dev/null +++ b/source/twilight/sorry/MiniEarth/earth1.ASM @@ -0,0 +1,291 @@ + +*-----------------------------------------------------------------------------* +! Twilight II Little Bouncing Earth Module. ! +! ! +! By Jim Maricondo. ! +! ! +! Copyright (c) 1991 Jim Maricondo. All rights reserved. ! +*-----------------------------------------------------------------------------* + longa on + longi on + mcopy Earth1.MAC +*-----------------------------------------------------------------------------* +deref_ptr gequ <0 +screen_ptr gequ deref_ptr+4 +SLookUp gequ screen_ptr+4 +image_ptr gequ SLookUp+4 +MyID gequ image_ptr+4 +MasterID gequ MyID+2 +HiRes gequ MasterID+2 +Width gequ HiRes+4 +Depth gequ Width+2 +ShapeNum gequ Depth+2 +y gequ ShapeNum+2 +bordercol gequ y+2 + +NumEarths gequ 46 + +CLOCKCTL gequ >$E0C034 border color / rtc register +RDVBLBAR gequ >$E0C019 bit 7 = 1 if not VBL +MAXIMAGES gequ 1 # of images that can be handled +*-----------------------------------------------------------------------------* +Little_Earth Start + Using MainDATA + + phb Store old data bank + phk + plb + + shortm + lda CLOCKCTL save old border color and make border + pha color now black + and #$0F + sta bordercol + pla + and #$F0 + sta CLOCKCTL + longm + + lda #0 + ldx #$8000-2 +blank sta $E12000,x + dex + dex + bpl blank + + ldx #32-2 +pal lda Earth_Pal,x + sta $E19E00,x + dex + dex + bpl pal + + LongResult + PushWord #1 + _GetAddress + PullLong SLookUp + + jsr Animate + + plb + lda 2,s + sta 2+10,s + lda 1,s + sta 1+10,s + tsc Remove input paramaters + clc + adc #10 (MasterID+MovePtr+OurPathname) + tcs + shortm restore users border color + lda CLOCKCTL + and #$F0 + ora bordercol + sta CLOCKCTL + longmx + clc + rtl + + End +*-----------------------------------------------------------------------------* +Animate Start + Using MainDATA + + stz left_boundary init boundaries + stz top_boundary + lda #170 + sta right_boundary + lda #200 + sta bottom_boundary + stz ShapeNum + lda #$E1 + sta HiRes+2 + +event_loopL8 shortm +w1 lda RDVBLBAR + bmi w1 +w2 lda RDVBLBAR + bpl w2 + longm + jsr DrawEarth + + jsr move_images move all images + + lda ShapeNum + inc a + cmp #NumEarths + bne keepIt + lda #0 +keepIt sta ShapeNum + + DefineStack +oldDirectPage word +rtsAddress word +oldBank byte +returnAddress block 3 +MasterID word +MovePtr long +ourPathname long + + phd + tsc + tcd + lda [MovePtr] + bne done + pld + bra event_loopL8 + +done anop + pld + rts + + End +*-----------------------------------------------------------------------------* +! Apply velocities to all images to cause them to move. +! Bounce them off the motion boundaries as needed. +move_images Start + Using MainDATA + + lda xposition + clc + adc xvelocity + bmi Z1L9 way past left + cmp left_boundary + bge Z2L9 not on left edge +Z1L9 jsr invert_xvel else bounce it + lda left_boundary + bra Z2L9 +Z2L9 pha + clc + adc image_width + cmp right_boundary + pla + blt Z3L9 not on right edge + jsr invert_xvel else bounce it + lda right_boundary + sec + sbc image_width +Z3L9 sta xposition + + lda yposition + clc + adc yvelocity + bmi Z4L9 ;way above top + cmp top_boundary + bge Z5L9 ;below top edge +Z4L9 jsr invert_yvel ;else bounce it + lda top_boundary + bra Z6L9 +Z5L9 pha + clc + adc image_height + cmp bottom_boundary + pla + blt Z6L9 ;above bottom edge + jsr invert_yvel ;else bounce it + lda bottom_boundary + sec + sbc image_height +Z6L9 sta yposition + rts + + +! Invert X velocity to give the illusion of a bounce. +invert_xvel lda xvelocity + eor #$ffff + inc a + sta xvelocity + rts + +! Invert Y velocity to give the illusion of a bounce. +invert_yvel lda yvelocity + eor #$ffff + inc a + sta yvelocity + rts + + End +*-----------------------------------------------------------------------------* +DrawEarth Start + Using MainDATA + Using EarthDATA + + longa on + longi on + + stz image_index init an index into the shape data + + lda yposition Y coord.. down! + sta y X coord.. across! + + lda shapeNum + asl a x 2 to get shape number + tax + lda EarthTable,x shape data + sta fill2+1 + lda image_height depth of shape + sta depth + +yloop anop + + lda image_wordwidth width (in words) of shape + sta width + lda y y = y coordinate + asl a multipy by 2 to get index into table + tay + lda [SLookUp],y get address from table + clc add x to base address + adc xposition x = horizontal position (in bytes) + sta HiRes + ldy #0 use Y as a horizontal offset + ldx image_index + +xloop anop + +fill2 lda |$0000,x get byte of shape + sta [HiRes],y + iny move over a word to the right + iny + inx increment index into shape's data + inx + + dec width see if done with this line + bne xloop + + stx image_index + + inc y go to next line + dec depth see if done all lines + bne yloop + + rts + + End +*-----------------------------------------------------------------------------* +MainDATA Data + +number_of_images dc i'MAXIMAGES' # of images handled +image_index ds 2 loop index + +! Motion boundaries (in pixels) +left_boundary ds 2 +right_boundary ds 2 +top_boundary ds 2 +bottom_boundary ds 2 + +! Image arrays +xvelocity dc i'1' +yvelocity dc i'1' +xposition dc i'0' +yposition dc i'0' +image_width dc i'20' +image_bytewidth dc i'10' +image_wordwidth dc i'5' +image_height dc i'17' + +Earth_Pal anop + dc h'0000 0B00 0F00 000F F00F F000 700F 6000 0000 1101 5505' dc h'77079909DD0DFF' + dc h'6606 7707 9909 DD0D FF0F' + + End +*-----------------------------------------------------------------------------* + copy earthdata2.asm \ No newline at end of file diff --git a/source/twilight/sorry/MiniEarth/earth1.rez b/source/twilight/sorry/MiniEarth/earth1.rez new file mode 100644 index 0000000..cbbfb58 --- /dev/null +++ b/source/twilight/sorry/MiniEarth/earth1.rez @@ -0,0 +1,101 @@ + +#include "types.rez" + +// Module name resource + +resource rPString (0x1) { + "Bouncing Earth 1" +}; + +// --- About text resource + +resource rTextForLETextBox2 ($0010DD01) { + "\$01" + "J" + "\$00" + "\$00" + "\$01" + "L" + "\$00" + "\$00" + "\$01" + "R" + "\$04" + "\$00" + "\$01" + "F" + "\$FE" + "\$FF" + "\$00" + "\$08" + "\$01" + "C" + "\$11" + "\$11" + "\$01" + "B" + "\$FF" + "\$FF" + "This module simulates a view of the earth from far away in the depths " + "of outer space." +}; + +// --- Version resource + +resource rVersion (0x1) { + { $1,$0,$1,final,$1 }, // Version 1.0.1f1 + verUS, // US Version + "Twilight II Bouncing Earth 1 Module", // program's name + "By J. Maricondo. Art by M. Keller.\$0D" + "Copyright 1991 Jim Maricondo." // copyright notice +}; + +// --- About icon resource + +resource rIcon ($0010DD01) { + $8000, // kind + $0014, // height + $001C, // width + + $"FFF0000000000000000000000FFF" + $"FFF0FFFFFFFFFFFFFFFFFFFF0FFF" + $"FFF0F000000000000000000F0FFF" + $"FFF0F030000000000111000F0FFF" + $"FFF0F003000000008811800F0FFF" + $"FFF0F000300000008111100F0FFF" + $"FFF0F030030000F00111000F0FFF" + $"FFF0F00300300F000000000F0FFF" + $"FFF0F0003000F00F0000000F0FFF" + $"FFF0F000030F00F00000000F0FFF" + $"FFF0F00000F00F000000000F0FFF" + $"FFF0F000000000000000000F0FFF" + $"FFF0FFFFFFFFFFFFFFFFAFFF0FFF" + $"FFF0000000000000000000000FFF" + $"FFFF0FFFFFFFFFFFFFFFFFF0FFFF" + $"FFFF0FFFFFFFFFFFFFFFFFF0FFFF" + $"FFFF0FF4AFFFFFFFFFFFFFF0FFFF" + $"FFFF0CCCCCCCCCCCCCCCCCC0FFFF" + $"FFFF0FFFFFFFFFFFFFFFAFF0FFFF" + $"FFFF00000000000000000000FFFF", + + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"0000FFFFFFFFFFFFFFFFFFFF0000" + $"0000FFFFFFFFFFFFFFFFFFFF0000" + $"0000FFFFFFFFFFFFFFFFFFFF0000" + $"0000FFFFFFFFFFFFFFFFFFFF0000" + $"0000FFFFFFFFFFFFFFFFFFFF0000" + $"0000FFFFFFFFFFFFFFFFFFFF0000"; +}; diff --git a/source/twilight/sorry/MiniEarth/earthdata2.asm b/source/twilight/sorry/MiniEarth/earthdata2.asm new file mode 100644 index 0000000..1cff741 --- /dev/null +++ b/source/twilight/sorry/MiniEarth/earthdata2.asm @@ -0,0 +1,889 @@ + +*-----------------------------------------------------------------------------* +EarthDATA Data + +EarthTable anop + dc i'Earth1,Earth2,Earth3,Earth4,Earth5,Earth6,Earth7,Earth8' + dc i'Earth9,Earth10,Earth11,Earth12,Earth13,Earth14,Earth15' + dc i'Earth16,Earth17,Earth18,Earth19,Earth20,Earth21,Earth22' + dc i'Earth23,Earth24,Earth25,Earth26,Earth27,Earth28,Earth29' + dc i'Earth30,Earth31,Earth32,Earth33,Earth34,Earth35,Earth36' + dc i'Earth37,Earth38,Earth39,Earth40,Earth41,Earth42,Earth43' + dc i'Earth44,Earth45,Earth46' + +Earth1 anop ;;;;aaaabbbbcccc + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000111777111100000' + dc h'00005771175711110000' + dc h'00055557177111111000' + dc h'00055771111111111000' + dc h'00557111111111111100' + dc h'00771111111111111100' + dc h'00117111111111111100' + dc h'00711111111111111100' + dc h'00571111111111111100' + dc h'00071111111111111000' + dc h'00011111111111111000' + dc h'00001111111111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth2 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000711177711100000' + dc h'00005577117571110000' + dc h'00055555717711111000' + dc h'00055577111111111000' + dc h'00555711111111111100' + dc h'00577111111111111100' + dc h'00711711111111111100' + dc h'00771111111111111100' + dc h'00557111111111111100' + dc h'00057111111111111000' + dc h'00071111111111111000' + dc h'00001111111111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth3 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000771117771100000' + dc h'00005557711757110000' + dc h'00055555571771111000' + dc h'00055557711111111000' + dc h'00555571111111111100' + dc h'00557711111111111100' + dc h'00571171111111111100' + dc h'00577111111111111100' + dc h'00555711111111111100' + dc h'00055711111111111000' + dc h'00057111111111111000' + dc h'00007111111111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth4 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000777111777100000' + dc h'00005555771175710000' + dc h'00055555557177111000' + dc h'00055555771111111000' + dc h'00555557111111111100' + dc h'00555771111111111100' + dc h'00557117111111111100' + dc h'00757711111111111100' + dc h'00755571111111111100' + dc h'00075571111111111000' + dc h'00075711111111111000' + dc h'00007711111111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth5 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000777711177700000' + dc h'00005555577117570000' + dc h'00055555555717711000' + dc h'00055555577111111000' + dc h'00555555711111111100' + dc h'00555577111111111100' + dc h'00555711711111111100' + dc h'00775771111111111100' + dc h'00175557111111111100' + dc h'00017557111111111000' + dc h'00017571111111111000' + dc h'00001771111111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth6 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000777771117700000' + dc h'00005555557711750000' + dc h'00055555555571771000' + dc h'00055555557711111000' + dc h'00555555571111111100' + dc h'00755557711111111100' + dc h'00755571171111111100' + dc h'00177577111111111100' + dc h'00117555711111111100' + dc h'00011755711111111000' + dc h'00011757111111111000' + dc h'00001177111111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth7 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000777777111700000' + dc h'00005555555771170000' + dc h'00055555555557177000' + dc h'00055555555771111000' + dc h'00755555557111111100' + dc h'00175555771111111100' + dc h'00175557117111111100' + dc h'00117757711111111100' + dc h'00111755571111111100' + dc h'00011175571111111000' + dc h'00011175711111111000' + dc h'00001117711111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth8 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000777777711100000' + dc h'00007555555577110000' + dc h'00055555555555717000' + dc h'00075555555577111000' + dc h'00175555555711111100' + dc h'00117555577111111100' + dc h'00117555711711111100' + dc h'00111775771111111100' + dc h'00111175557111111100' + dc h'00011117557111111000' + dc h'00011117571111111000' + dc h'00001111771111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth9 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000177777771100000' + dc h'00007755555557710000' + dc h'00075555555555571000' + dc h'00017555555557711000' + dc h'00117555555571111100' + dc h'00111755557711111100' + dc h'00111755571171111100' + dc h'00111177577111111100' + dc h'00111117555711111100' + dc h'00011111755711111000' + dc h'00011111757111111000' + dc h'00001111177111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth10 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000117777777100000' + dc h'00007775555555770000' + dc h'00057555555555557000' + dc h'00071755555555771000' + dc h'00111755555557111100' + dc h'00111175555771111100' + dc h'00711175557117111100' + dc h'00111117757711111100' + dc h'00111111755571111100' + dc h'00011111175571111000' + dc h'00011111175711111000' + dc h'00001111117711110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth11 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000111777777700000' + dc h'00007777555555570000' + dc h'00075755555555555000' + dc h'00017175555555577000' + dc h'00111175555555711100' + dc h'00111117555577111100' + dc h'00171117555711711100' + dc h'00111111775771111100' + dc h'00111111175557111100' + dc h'00011111117557111000' + dc h'00011111117571111000' + dc h'00001111111771110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth12 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000111177777700000' + dc h'00001777755555550000' + dc h'00017575555555555000' + dc h'00011717555555557000' + dc h'00111117555555571100' + dc h'00111111755557711100' + dc h'00117111755571171100' + dc h'00111111177577111100' + dc h'00111111117555711100' + dc h'00011111111755711000' + dc h'00011111111757111000' + dc h'00001111111177110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth13 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000111117777700000' + dc h'00007177775555550000' + dc h'00071757555555555000' + dc h'00071171755555555000' + dc h'00111111755555557100' + dc h'00111111175555771100' + dc h'00111711175557117100' + dc h'00111111117757711100' + dc h'00111111111755571100' + dc h'00011111111175571000' + dc h'00011111111175711000' + dc h'00001111111117710000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth14 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000111117777700000' + dc h'00007177775555550000' + dc h'00071757555555555000' + dc h'00071171755555555000' + dc h'00111111755555557100' + dc h'00111111175555771100' + dc h'00111711175557117100' + dc h'00111111117757711100' + dc h'00111111111755571100' + dc h'00011111111175571000' + dc h'00011111111175711000' + dc h'00001111111117710000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth15 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000111111777700000' + dc h'00007717777555550000' + dc h'00057175755555555000' + dc h'00077117175555555000' + dc h'00111111175555555700' + dc h'00111111117555577100' + dc h'00111171117555711700' + dc h'00111111111775771100' + dc h'00111111111175557100' + dc h'00011111111117557000' + dc h'00011111111117571000' + dc h'00001111111111770000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth16 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000111111177700000' + dc h'00007771777755550000' + dc h'00075717575555555000' + dc h'00017711717555555000' + dc h'00711111117555555500' + dc h'00111111111755557700' + dc h'00111117111755571100' + dc h'00111111111177577100' + dc h'00111111111117555700' + dc h'00011111111111755000' + dc h'00011111111111757000' + dc h'00001111111111170000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth17 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000111111117700000' + dc h'00005777177775550000' + dc h'00017571757555555000' + dc h'00011771171755555000' + dc h'00171111111755555500' + dc h'00711111111175555700' + dc h'00111111711175557100' + dc h'00111111111117757700' + dc h'00711111111111755500' + dc h'00011111111111175000' + dc h'00011111111111175000' + dc h'00001111111111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth18 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000711111111700000' + dc h'00007577717777550000' + dc h'00071757175755555000' + dc h'00011177117175555000' + dc h'00717111111175555500' + dc h'00171111111117555500' + dc h'00111111171117555700' + dc h'00111111111111775700' + dc h'00171111111111175500' + dc h'00071111111111117000' + dc h'00071111111111117000' + dc h'00001111111111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth19 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000171111111100000' + dc h'00007757771777750000' + dc h'00057175717575555000' + dc h'00071117711717555000' + dc h'00571711111117555500' + dc h'00717111111111755500' + dc h'00111111117111755500' + dc h'00711111111111177500' + dc h'00117111111111117500' + dc h'00077111111111111000' + dc h'00057111111111111000' + dc h'00001111111111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth20 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000117111111100000' + dc h'00007775777177770000' + dc h'00055717571757555000' + dc h'00057111771171755000' + dc h'00557171111111755500' + dc h'00771711111111175500' + dc h'00111111111711175500' + dc h'00771111111111117700' + dc h'00111711111111111700' + dc h'00077711111111111000' + dc h'00075711111111111000' + dc h'00007111111111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth21 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000111711111100000' + dc h'00005777577717770000' + dc h'00055571757175755000' + dc h'00055711177117175000' + dc h'00555717111111175500' + dc h'00577171111111117500' + dc h'00711111111171117500' + dc h'00177111111111111700' + dc h'00111171111111111100' + dc h'00077771111111111000' + dc h'00057571111111111000' + dc h'00001711111111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth22 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000711171111100000' + dc h'00007577757771770000' + dc h'00055557175717575000' + dc h'00055571117711717000' + dc h'00555571711111117500' + dc h'00557717111111111700' + dc h'00571111111117111700' + dc h'00717711111111111100' + dc h'00111117111111111100' + dc h'00017777111111111000' + dc h'00075757111111111000' + dc h'00007171111111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth23 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000171117111100000' + dc h'00005757775777170000' + dc h'00055555717571757000' + dc h'00055557111771171000' + dc h'00555557171111111700' + dc h'00755771711111111100' + dc h'00757111111111711100' + dc h'00171771111111111100' + dc h'00111111711111111100' + dc h'00011777711111111000' + dc h'00017575711111111000' + dc h'00001717111111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth24 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000717111711100000' + dc h'00005575777577710000' + dc h'00055555571757175000' + dc h'00055555711177117000' + dc h'00755555717111111100' + dc h'00175577171111111100' + dc h'00175711111111171100' + dc h'00117177111111111100' + dc h'00111111171111111100' + dc h'00011177771111111000' + dc h'00071757571111111000' + dc h'00001171711111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth25 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000771711171100000' + dc h'00005557577757770000' + dc h'00055555557175717000' + dc h'00055555571117711000' + dc h'00575555571711111100' + dc h'00717557717111111100' + dc h'00117571111111117100' + dc h'00711717711111111100' + dc h'00711111117111111100' + dc h'00011117777111111000' + dc h'00077175757111111000' + dc h'00001117171111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth26 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000577171117100000' + dc h'00005555757775770000' + dc h'00055555555717571000' + dc h'00055555557111771000' + dc h'00757555557171111100' + dc h'00171755771711111100' + dc h'00711757111111111700' + dc h'00571171771111111100' + dc h'00571111111711111100' + dc h'00071111777711111000' + dc h'00017717575711111000' + dc h'00007111717111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth27 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000557717111700000' + dc h'00005555575777570000' + dc h'00055555555571757000' + dc h'00055555555711177000' + dc h'00575755555717111100' + dc h'00717175577171111100' + dc h'00771175711111111100' + dc h'00557117177111111100' + dc h'00557111111171111100' + dc h'00057111177771111000' + dc h'00071771757571111000' + dc h'00007711171711110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth28 anop + dc h'00000000000000000000' + dc h'00000007111110000000' + dc h'00000555771711100000' + dc h'00005555557577750000' + dc h'00055555555557175000' + dc h'00055555555571117000' + dc h'00757575555571711100' + dc h'00171717557717111100' + dc h'00777117571111111100' + dc h'00555711717711111100' + dc h'00555711111117111100' + dc h'00055711117777111000' + dc h'00057177175757111000' + dc h'00001771117171110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth29 anop + dc h'00000000000000000000' + dc h'00000007711110000000' + dc h'00000555577171100000' + dc h'00005555555757770000' + dc h'00055555555555717000' + dc h'00055555555557111000' + dc h'00775757555557171100' + dc h'00117171755771711100' + dc h'00777711757111111100' + dc h'00555571171771111100' + dc h'00555571111111711100' + dc h'00055571111777711000' + dc h'00055717717575711000' + dc h'00007177111717110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth30 anop + dc h'00000000000000000000' + dc h'00000007771110000000' + dc h'00000555557717100000' + dc h'00005555555575770000' + dc h'00055555555555571000' + dc h'00055555555555711000' + dc h'00577575755555717100' + dc h'00711717175577171100' + dc h'00177771175711111100' + dc h'00755557117177111100' + dc h'00755557111111171100' + dc h'00075557111177771000' + dc h'00075571771757571000' + dc h'00005717711171710000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth31 anop + dc h'00000000000000000000' + dc h'00000007777110000000' + dc h'00000555555771700000' + dc h'00005555555557570000' + dc h'00055555555555557000' + dc h'00055555555555571000' + dc h'00757757575555571700' + dc h'00171171717557717100' + dc h'00117777117571111100' + dc h'00175555711717711100' + dc h'00175555711111117100' + dc h'00017555711117777000' + dc h'00017557177175757000' + dc h'00007571771117170000' + dc h'00000711111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth32 anop + dc h'00000000000000000000' + dc h'00000007777710000000' + dc h'00000755555577100000' + dc h'00005555555555750000' + dc h'00055555555555555000' + dc h'00075555555555557000' + dc h'00175775757555557100' + dc h'00117117171755771700' + dc h'00111777711757111100' + dc h'00117555571171771100' + dc h'00117555571111111700' + dc h'00011755571111777000' + dc h'00011755717717575000' + dc h'00001757177111710000' + dc h'00000171111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth33 anop + dc h'00000000000000000000' + dc h'00000007777770000000' + dc h'00000775555557700000' + dc h'00005555555555570000' + dc h'00075555555555555000' + dc h'00017555555555555000' + dc h'00117577575755555700' + dc h'00111711717175577100' + dc h'00111177771175711100' + dc h'00111755557117177100' + dc h'00111755557111111100' + dc h'00011175557111177000' + dc h'00011175571771757000' + dc h'00001175717711170000' + dc h'00000117111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth34 anop + dc h'00000000000000000000' + dc h'00000001777770000000' + dc h'00000777555555700000' + dc h'00005555555555550000' + dc h'00017555555555555000' + dc h'00011755555555555000' + dc h'00111757757575555500' + dc h'00111171171717557700' + dc h'00111117777117571100' + dc h'00111175555711717700' + dc h'00111175555711111100' + dc h'00011117555711117000' + dc h'00011117557177175000' + dc h'00001117571771110000' + dc h'00001117111111000000' + dc h'00000011111100000000' + dc h'00000000000000000000' + +Earth35 anop + dc h'00000000000000000000' + dc h'00000001177770000000' + dc h'00000777755555500000' + dc h'00007555555555550000' + dc h'00011755555555555000' + dc h'00011175555555555000' + dc h'00111175775757555500' + dc h'00111117117171755700' + dc h'00111111777711757100' + dc h'00111117555571171700' + dc h'00111117555571111100' + dc h'00011111755571111000' + dc h'00011111755717717000' + dc h'00001111757177110000' + dc h'00000111171111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth36 anop + dc h'00000000000000000000' + dc h'00000001117770000000' + dc h'00000177775555500000' + dc h'00001755555555550000' + dc h'00011175555555555000' + dc h'00011117555555555000' + dc h'00111117577575755500' + dc h'00111111711717175500' + dc h'00111111177771175700' + dc h'00111111755557117100' + dc h'00111111755557111100' + dc h'00011111175557111000' + dc h'00011111175571771000' + dc h'00001111175717710000' + dc h'00000111117111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth37 anop + dc h'00000000000000000000' + dc h'00000001111770000000' + dc h'00000117777555500000' + dc h'00001175555555550000' + dc h'00011117555555555000' + dc h'00011111755555555000' + dc h'00111111757757575500' + dc h'00111111171171717500' + dc h'00111111117777117500' + dc h'00111111175555711700' + dc h'00111111175555711100' + dc h'00011111117555711000' + dc h'00011111117557177000' + dc h'00001111117571770000' + dc h'00000111111711100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth38 anop + dc h'00000000000000000000' + dc h'00000001111170000000' + dc h'00000111777755500000' + dc h'00001117555555550000' + dc h'00011111755555555000' + dc h'00011111175555555000' + dc h'00111111175775757500' + dc h'00111111117117171700' + dc h'00111111111777711700' + dc h'00111111117555571100' + dc h'00111111117555571100' + dc h'00011111111755571000' + dc h'00011111111755717000' + dc h'00001111111757170000' + dc h'00000111111171100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth39 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000111177775500000' + dc h'00001111755555550000' + dc h'00011111175555555000' + dc h'00011111117555555000' + dc h'00111111117577575700' + dc h'00111111111711717100' + dc h'00111111111177771100' + dc h'00111111111755557100' + dc h'00111111111755557100' + dc h'00011111111175557000' + dc h'00011111111175571000' + dc h'00001111111175710000' + dc h'00000111111117100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth40 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000111117777500000' + dc h'00007111175555550000' + dc h'00071111117555555000' + dc h'00011111111755555000' + dc h'00111111111757757500' + dc h'00111111111171171700' + dc h'00111111111117777100' + dc h'00111111111175555700' + dc h'00111111111175555700' + dc h'00011111111117555000' + dc h'00011111111117557000' + dc h'00001111111117570000' + dc h'00000111111111700000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth41 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000111111777700000' + dc h'00005711117555550000' + dc h'00077111111755555000' + dc h'00011111111175555000' + dc h'00111111111175775700' + dc h'00111111111117117100' + dc h'00111111111111777700' + dc h'00111111111117555500' + dc h'00111111111117555500' + dc h'00011111111111755000' + dc h'00011111111111755000' + dc h'00001111111111750000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth42 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000711111177700000' + dc h'00007571111755550000' + dc h'00017711111175555000' + dc h'00011111111117555000' + dc h'00111111111117577500' + dc h'00111111111111711700' + dc h'00111111111111177700' + dc h'00111111111111755500' + dc h'00111111111111755500' + dc h'00011111111111175000' + dc h'00011111111111175000' + dc h'00001111111111170000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth43 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000771111117700000' + dc h'00001757111175550000' + dc h'00071771111117555000' + dc h'00011111111111755000' + dc h'00111111111111757700' + dc h'00111111111111171100' + dc h'00111111111111117700' + dc h'00111111111111175500' + dc h'00111111111111175500' + dc h'00011111111111117000' + dc h'00011111111111117000' + dc h'00001111111111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth44 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000777111111700000' + dc h'00001175711117550000' + dc h'00057177111111755000' + dc h'00071111111111175000' + dc h'00111111111111175700' + dc h'00111111111111117100' + dc h'00111111111111111700' + dc h'00111111111111117500' + dc h'00111111111111117500' + dc h'00011111111111111000' + dc h'00011111111111111000' + dc h'00001111111111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth45 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000177711111100000' + dc h'00007117571111750000' + dc h'00055717711111175000' + dc h'00077111111111117000' + dc h'00711111111111117500' + dc h'00111111111111111700' + dc h'00711111111111111100' + dc h'00111111111111111700' + dc h'00111111111111111700' + dc h'00011111111111111000' + dc h'00011111111111111000' + dc h'00001111111111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + +Earth46 anop + dc h'00000000000000000000' + dc h'00000001111110000000' + dc h'00000117771111100000' + dc h'00007711757111170000' + dc h'00055571771111117000' + dc h'00057711111111111000' + dc h'00571111111111111700' + dc h'00711111111111111100' + dc h'00171111111111111100' + dc h'00111111111111111100' + dc h'00711111111111111100' + dc h'00011111111111111000' + dc h'00011111111111111000' + dc h'00001111111111110000' + dc h'00000111111111100000' + dc h'00000001111110000000' + dc h'00000000000000000000' + + End +*-----------------------------------------------------------------------------* \ No newline at end of file diff --git a/source/twilight/sorry/MiniEarth/listing4.asm b/source/twilight/sorry/MiniEarth/listing4.asm new file mode 100644 index 0000000..c1a5626 --- /dev/null +++ b/source/twilight/sorry/MiniEarth/listing4.asm @@ -0,0 +1,303 @@ + + longa on + longi on + mcopy anim1.mac + mcopy 7:m16.util2 +*-----------------------------------------------------------------------------* +! Illusions of Motion +! by Stephen P. Lepisto +! date: 1/22/90 +! Assembler: Merlin-16+ v4.08+ +*-----------------------------------------------------------------------------* +deref_ptr gequ 0 +screen_ptr gequ deref_ptr+4 +SLookUp gequ screen_ptr+4 +image_ptr gequ SLookUp+4 +MyID gequ image_ptr+4 +MasterID gequ MyID+2 +HiRes gequ MasterID+2 +Width gequ HiRes+4 +Depth gequ Width+2 +ShapeNum gequ Depth+2 +y gequ ShapeNum+2 + +NumEarths gequ 46 + +Strobe gequ $E0C000 +ClearStrobe gequ $E0C010 +VBLWait gequ $E0C019 bit 7 = 1 if not VBL +MAXIMAGES gequ 1 # of images that can be handled +*-----------------------------------------------------------------------------* +Main Start + Using MainDATA + + phk + plb + + jsr dostartup + bcs shutdown error in startup + jsr Animate +shutdown jsr doshutdown + + _Quit quitparms + + End +*-----------------------------------------------------------------------------* +Animate Start + Using MainDATA + + stz left_boundary init boundaries + stz top_boundary + lda #170 + sta right_boundary + lda #200 + sta bottom_boundary + stz ShapeNum + lda #$E1 + sta HiRes+2 + +event_loopL8 shortm +wait2 lda >VBLWait + bmi wait2 +waitVBL lda >VBLWait ! + bpl waitVBL ! + longm + jsr DrawEarth + + jsr move_images move all images + + lda ShapeNum + inc a + cmp #NumEarths + bne keepIt + lda #0 +keepIt sta ShapeNum + + shortm + lda >Strobe if keypress, then quit + bpl event_loopL8 + + lda >ClearStrobe + longm + rts + + End +*-----------------------------------------------------------------------------* +! Apply velocities to all images to cause them to move. +! Bounce them off the motion boundaries as needed. +move_images Start + Using MainDATA + + lda xposition + clc + adc xvelocity + bmi Z1L9 way past left + cmp left_boundary + bge Z2L9 not on left edge +Z1L9 jsr invert_xvel else bounce it + lda left_boundary + bra Z2L9 +Z2L9 pha + clc + adc image_width + cmp right_boundary + pla + blt Z3L9 not on right edge + jsr invert_xvel else bounce it + lda right_boundary + sec + sbc image_width +Z3L9 sta xposition + + lda yposition + clc + adc yvelocity + bmi Z4L9 ;way above top + cmp top_boundary + bge Z5L9 ;below top edge +Z4L9 jsr invert_yvel ;else bounce it + lda top_boundary + bra Z6L9 +Z5L9 pha + clc + adc image_height + cmp bottom_boundary + pla + blt Z6L9 ;above bottom edge + jsr invert_yvel ;else bounce it + lda bottom_boundary + sec + sbc image_height +Z6L9 sta yposition + rts + + +! Invert X velocity to give the illusion of a bounce. +invert_xvel lda xvelocity + eor #$ffff + inc a + sta xvelocity + rts + +! Invert Y velocity to give the illusion of a bounce. +invert_yvel lda yvelocity + eor #$ffff + inc a + sta yvelocity + rts + + End +*-----------------------------------------------------------------------------* +DrawEarth Start + Using MainDATA + Using EarthDATA + + longa on + longi on + + stz image_index init an index into the shape data + + lda yposition Y coord.. down! + sta y X coord.. across! + + lda shapeNum + asl a x 2 to get shape number + tax + lda EarthTable,x shape data + sta fill2+1 + lda image_height depth of shape + sta depth + +yloop anop + + lda image_wordwidth width (in words) of shape + sta width + lda y y = y coordinate + asl a multipy by 2 to get index into table + tay + lda [SLookUp],y get address from table + clc add x to base address + adc xposition x = horizontal position (in bytes) + sta HiRes + ldy #0 use Y as a horizontal offset + ldx image_index + +xloop anop + +fill2 lda |$0000,x get byte of shape + sta [HiRes],y + iny move over a word to the right + iny + inx increment index into shape's data + inx + + dec width see if done with this line + bne xloop + + stx image_index + + inc y go to next line + dec depth see if done all lines + bne yloop + + rts + + End +*-----------------------------------------------------------------------------* +DoStartUp Start + Using MainDATA + + _TLStartUp + + WordResult + _MMStartUp + pla + sta MasterID + ora #$100 + sta MyID + + _MTStartUp + + LongResult get direct page space for QuickDraw + PushLong #$300 + pei MyID + PushWord #$C015 + PushLong #0 + _NewHandle + PullLong deref_ptr + bcs xL25 + + lda [deref_ptr] + pha + PushWord #0 320 mode + PushWord #0 screen width + pei MyID + _QDStartUp + bcs xL25 + + ldx #32-2 +pal lda Earth_Pal,x + sta $E19E00,x + dex + dex + bpl pal + + LongResult + PushWord #1 + _GetAddress + PullLong SLookUp + + clc +xL25 rts + + End +*-----------------------------------------------------------------------------* +doShutDown Start + Using MainDATA + + _QDShutDown + + pei MyID + _DisposeAll + + pei MasterID + _MMShutDown + + _MTShutDown + _TLShutDown + rts + + End +*-----------------------------------------------------------------------------* +MainDATA Data + +quitparms dc i4'0' + dc i'$0000' not restartable +MasterID ds 2 +MyID ds 2 +number_of_images dc i'MAXIMAGES' # of images handled +image_index ds 2 loop index + +! Motion boundaries (in pixels) +left_boundary ds 2 +right_boundary ds 2 +top_boundary ds 2 +bottom_boundary ds 2 + +! Image arrays +xvelocity dc i'1' +yvelocity dc i'1' +xposition dc i'0' +yposition dc i'0' +image_width dc i'20' +image_bytewidth dc i'10' +image_wordwidth dc i'5' +image_height dc i'17' + +Earth_Pal anop + dc h'0000 0B00 0F00 000F F00F F000 700F 6000 0000 1101 5505' dc h'77079909DD0DFF' + dc h'6606 7707 9909 DD0D FF0F' + + End +*-----------------------------------------------------------------------------* + copy earthdata2.asm \ No newline at end of file diff --git a/source/twilight/sorry/SKULLey/Bang.Ouch b/source/twilight/sorry/SKULLey/Bang.Ouch new file mode 100644 index 0000000..8169a1f --- /dev/null +++ b/source/twilight/sorry/SKULLey/Bang.Ouch @@ -0,0 +1,3 @@ +)0gy‚ª¤zg€­ÍÓÕ»œ†qhvs0; œ‘“’ gmnK&'F(CŒàà±r}oY{ŵ¡µÍH=Œ„{Œ±€m’¤¤³s@TLE>HFŽkhu~»žŸÆÏ«f;;\[cw|Œš’W_‡¥¯ãÈ‘•suVnš‰µ‚chZtK4Cwƒ{_”’¹¬©¾a‚Ž}n„”•Œzlrs{wh\CJ[O_wŸâֵЫ‘˜¹€vN6d`ok`ŠXˆBecs£•‘©‘‰|~‡¬§À¿¿³ŠG(7Ov‘‰„RkjL[n¶h‘¹µupvx…œªœ}†”¤£‚[vT=7@hžÝßàÊ“nIPSj}˜††}l2\P^¼‹›¼ÏÏ·v‚q[AVquНàßÇmGSVg€ag”jb‚’¯®°muPN_bahsˆŽ·—º©¡’~fVJF&9Aq¶»¢ÒÑÀ¸©›xyTeXESI[|‚‹’¬›§¦°v¡wEYXWfagr“djŒ¥œ—½Ï­¥u€¢œ}XMNXY@x†“…swyŒ‘¼²‚|y‹¨²¯šŸŠnS0E;ka\M_ar“• «‘ºÁµ§¤†˜¢²ŸvXVOLPIT@BPakyŽ”Ô϶ª¡¢ª™ “ŒuaO&>Zxtna\jkk•ª£®¶±´¦™•ˆx~ik_TK^NB:QTy‰{|ƒŒ£áÞÞÞž‡’ƒ[G%"Y€¦©{gRR8S‡w•t‡œ“€{­¼œ°¦—k‡hTUbZUmrtRQt¥¡}}–³Öº‘ž¢pH.2>U›©­§>WhŠuƒ»Æ¨½Äh"‡‡|[nz˜ž]=~¤utwNb¨‰t×e`hmpw{¢˜ŠVuf–¸º©Š‡NU’›’pCPSR@Mq‹¬©Óѵ‰s6P€Œž¥‰qao3akkqy–j¾Ñ®«®—€O9='Q„¦­®Äs[Prs¡¥žÊ “¤]`VLw‘„„{|ƒjw r•ŠqmojL`†iZ}šÍÚÀ‰…U„Šª—EL'3‡Œ“—cD‚€}Ž­˜‡¡mPk‘°¢Î¯{RHj{‘”‘gjŽœ¤zV55J€z™t“¤­­a±§wŒ®·z|qUSCa`i‡¡‰ra‚ˆ‡hbr„y”ž¶±¶˜}”O{NKp‘…­¯° ‚}¤šA'fl+)a®±~stS}§¸ÔµˆgCfw ³¥Œ‹’°~chk‰GN„Ç©Y‰¨‰xjTbˆ~ |x`@'M‚Ž­°ƒ²Á¼­xs{’˜wn›”u€aŠc=CC‹›¬†€‘˜…ާ³¥˜vJ)7ZdB€š»™±˜´¤{€•nX[YinšÄø¯°b&BVqmqdx¹½¾¨^?JWq‰‡¡©°¤›|WP'^i{}ÆÒ˜‹®£RFo’¡’”`C=_{xš¥š¡ ­žkP)/[~t€°ÃÓÈÓ®QDmR€lª´ˆMjdX‹‚˜¨}\”k8K€¸ g°Ç¶„Œpr‹¡¢€ZVtm\M~®¥ŒtSt‰²ºÈ jBON~tfd™·’{u™ª–saJk¡¡¹ª‹•]@E1m™Ã _tvg«°‚tk KSJŠ ŸÕÀŒ–iisF[s]r{¢¯Ç¢\J?\zˆ{`g~Œ•š˜ˆ¥¦Æ‘‚sW^]xr•‡^|¥“¯¹_ˆ{m^6wZ~xbFbp…žÃÎŽwŠÑÌ¡}|wE‚¡eOšx^XAJiŒ©Ï£~{iy~ƒ–£uw†ƒtkm~ut‰«£ˆŽ\HN[}yh–« Š“Œ¶´° ŠŠ{TD9BZu“wŽn“vŠn”¤mKZŒ°¶˜«­ Šfƒž“–•PMD[eb~bNq]_€ƒˆÊµ«¦ ‘l¢®Ÿƒ_UT?U§¡s_l™’^?Wƒ´Æ§qqy‡»Í°sB`€nFqŽzf3Mˆ´µŸiG…Ë¥y¢°‡O?]ƒºÊ¡yp~Œh—šz‡‚cX‘š‰xn`NWjulXM}¾À½Æ‹ ¢—€iVncg]]€€’ªž—…“„}`|mƒ”€Œ¤•¤™kYnf+-Qjƒ‹  ƒm„Œ²£¢”¸¿{|‡G-I‡|ƒžŠ‡lk¡°¤ˆ~l‡iA7LXn‹® p‡œ“|ŠqWqXZ~—ŽŸÎ¿²­«xji\zT-;zg†•pZmލ¯µ›ƒŸ}{•zPf…†‹zcPZ^ƒh­•“…“±ÓÀ«oWs’€]E^G‰^d~˜x†…]W¢‘›Ñħˆ¬m.,y®‹eXW€un”š‘šˆ€€c[do£¦¥  pPKUX¨È¿¬­žr3/Zmg€¤µ¡}^jX…xcaez‡£ž—®Æž¸Œx8/akguš‡Á’ŠewŠŽ”|ZxÈ•^xƒ–€GCwiX`Š™b·˜»ƒw‡²„T€¡mb^yŸÅ¾©keZKZw^{¬±Ì¨Š2;VeuƒŽˆ™|¢~Ž„‡jw‹ul†{~¨°»© {’G15rƒwK[¦³¦Œ—nnŒ ‘‚fH=Hy™‘¤­­“‚~vfв£Ž˜€j/Ohœ©\yr€­©‡e?sŠž´£waGUp޲–š–sn{pc]]`«Í°§ §klQ?YŒLl}°¨_Uk”ЉªŠœ¦•±ŠYUlkLi“ªy”|WNXNt“±«¡{P`Ydxˆ¢±²¯´›lOU_z‘±™¢µ¡™‚gHL/X^fbd‡©«¸§iq}™ŒŠ6ZST|ºµŠ}k|¢ž­’j•ml_IQa}ˆjeyy’‹™½ÆÉrRGS8v•¬ ‹k]y†£tqv‡ˆ€ux“•‘‘¦–yf_aˆ”•x‚lmd]93Fp}³ˆ“¢¤£²”¬¼¦„Žš‘œˆ34@;cuz¤wguz³µ¤‘|gV]–´oUae’[i‹†f‘µ²•©œ–£»’_5M\€ŒYsŒ‡‘•y†s__XŒ²¢‹kƒp“Žs‘yaRy€¡r„”°¹´Ž^5L[u˜žyv[š‡|‚“œ¨›z{^‰”vSN`Xe{uˆ€ep‰‰Æ¿´~‰•m˜™ŒhfwuNQ5Zky}t›¶°ˆzx‚¤——¤Ä¤ŠulQYMJMDM_Œ´ÌÄ̰{\H`Ni¦Ë·–YkŒemhxŠ_ˆªzx†‚‘•~œ„r]^ŽŠ˜­¹´ lS53fw­­|Qtgž‡z•™­±ˆd9XŽ—¼·šzf\g_r¤µ¨ƒŒ}]77S—…Ÿ´¬†[ŒŒ}Xs{‰…› ™’t^L€‰ˆu{|sŽ‹™²§¬`YWnB]s—® –„›|‚‡‡z€•“ˆ‘…k]ep’—|vƒ€t{rc€º§–‰zu…–†yxuŠwpnM|©¿¼‡gФum_wnnbhR{–³©—‰phYnt›«©—œxodhf€‚‡±´žXDcy€\m…rj~j|”™ª©¤rpmm{|“¶ªjŽyljczw]PeiŒ›œ¼¼©˜‘€gOGQht~‰«·£™ƒXUMT}”Š™™¡’a]} ‘Š“‡tqwqz|£Ÿs_mY€•gr{‡‰²±™{cz£„oqdHKƒ§—ƒb^{˜²œ~‰oi‹ž¨‚`_x‘°¯€mYN‡Ž•­ž~Nszg_jvm‡¤¬ŽŽ‰jyxZicw“§¥…—‡Œ™~‚iN:EqœŸ™Š‹…lˆš¦q`[eX\s…”¯¡‡›r\Šg†¡ƒˆ¤žŒeYg“}_ikYnššŒƒ‚€‹z}rly…¤­¤ztSHMiws‚ynkŽ››‰‚’‡‹ ‘’‹{oVUJhpƒpcy•‹»µ•„€xc‚•¨œ‹‚rNKQ\|™¬¦‘¥‚I`j‚„uŸ€˜›’€VoŒyphp‡ˆ‰~€mz˜›žŒr_Tyœ—s‡y’†ƒx}€jZ\u”¢¨–{onmuwzu†°}syˆohpyŠ‘•…‡Šƒ€†y•¡›…qkMQJ^wnmw™jˆ‡‘…“Žslvœª–—¤€ŽznˆyZMutŠ‚ruz™ž‰t~yˆ–š¦ŽnYVgp‰œ”‚ur~‚q€wrŒ‰„‰}zwŽ’’›¦¥ŸœŠexeLBXs‘ŒŽŒ€rqqy}z„š€qoƒ…‚‚‡˜„‹vŠ’šœx}˜ž®“ˆwTDJdpu}qqlŠpkw€ŒšŽ€mj“”Œ©Ÿ‰•yŒ‘¤yNdbkj^g€“ª¡{€™‹…s‚”}r|Šƒ_€ƒbv~‡~~ˆœ¢››yoebaw”{‚¤®‡…ik‰‡~sp}†‰‰€`Sl‹š•ms”€’˜…y€na„Žtr}‘‡•…sidwk|™±²µŽ…„`w€ƒ–Šrml[gƒ¡§”€rtmx…¦‘jmwvu…r€„uy™™–Š— }{w{‡q{“€dqŽm_ex„rƒ„v”‘¤›£˜Œ„}€~„œ—vseQI\{•’„o|››ƒ‚ƒ˜…ˆ‘ˆ}vravŠˆŠ„‚{€p[f|‰Š‰Ÿ—‘ƒ•¡—€kePf|y‚‘ƒ~wnzk‰œ——‚’ysyx~shƒˆƒŒƒT^cy™–Š“–•’–ƒzzt|ˆ‹•l_iru†…‚€z‚{€lowŽ”¢š‰rŽ‚ˆx‚tq~ojŒvm`jj˜ž”‹~„~xw‡Ž‰€’œ“†{lcgrxns}ŠŽ¢“Œ€ibh~†Žš„{iq}…€Š††„k]hz‹ˆ…}‡‰¤“†ont{v|{pr~‚‘ˆ_^p£œ…~{nƒ—š¢šˆxb_y’Žuhtˆ”‚€ˆvx‹…ƒ|І‰ˆ€yzxsˆœ–‚upZi€€€€€‚‚€€€€~~€€€€€‚‚‚€€€€€€€|€€‚ƒ‚‚€€€€~~~}€ƒ…„„‚€€}{{{~€„‰†…ƒ‚€|{{{zz€ƒ„‰Šˆ†„~|{yzzxy„†ŽŠ‡„~||yvxww{€ƒ‰ŽŽŠˆ…€|ywtuuxx‚ˆŠ‘’Œ‡ƒ}zxuptsu{€ˆ‘””ˆ|vuurrquyƒ‹”––ˆ€{usqoopx€ŠŽ——“…~wrnoquv{}…‹•šš‡~uqnqopmsy‹ž¢š€zrqqkffmyˆ–ž£–‰€zqjdcdmvƒˆ™¥œ¡—‹}sfchffkp„™ž¬­¢Œ€qljeYX_j€°´µ§Žylc]TP^o}¡´°³«–„~k`XSJS^z¤°Ã½µ¡‹xi]J>;OiªÀÆÀ°›‡taNB>HYi™±´Ç­˜‹l_UG9@Mc–¶ÏÑÍ´›ƒiS:/)?^ƒ±ÏÔÓ½©tX?6+5Fwš»×ÓÉ·¡ƒkL5!&>c•´ÎÖ̺ªr^9,->Ut¢¹ÆÓƵ¡‰cM<&+9dˆ±ÔÚÖítN0.N¸ÙëáĪbJ1 !5R„ÀÓçÝǧ‹kH9-T}¶ßãçȬ’tM1&>†½áûìͬ‘cH) &R†ÃëöêÔ¨‡jA'#L|´èøôضeE$$FtÀåõÿâ³n:'@k´÷ÿÿ뺃[7.Swºæó÷á¨`4)($#Kr¨åÿÿãÂN,#Acž¿ÞùáÉ©pE/#&=Tb‹³ÇæéÉ©€N2&*Ur ÅÖãÜ·“rG930EYmЧÏâßÉšnL71?GRer«ÒãðΓmO1893HjŠÁïêݺ{RE5/MSe”ª¸¼²‡ibkmpz{qzyr|Ÿ¤³‘ƒ„vlhL9HVr´Ù×Ù²‚qbHAC7KtŠ«èÝ»µ€]cPDRQLd‚“ÈÝĽr]_RII:Eu¥ÍêÑ«–hQ`URb[q˜£¥‘€xŒƒ„xqe_ilisxœ±®À¦‘‡`IH<7MhÏéâ߯|S8'-MUm„²ÕÑ鯀r?@UUHI_ižÞèèÌ…RLHH]YWqˆ¥Û¶§§^ds]ixcRmyƒ­›¯‹”Œwxijcj[Wju˜¸¼¶µšrmaJ[_Rr‹Š•Ч°˜¨liaSOMK\{ ÍýðÈ™X+$*,UoŠÄÕ¾ÊÏwh[>]oÍ´~y\O|{–¦‚’±—€yA&Paq”—¨Â³Á©eFFDGOky½àìϪb:=1Bd€“•~ÁÏšžx@H_e–·‹d^XYj¬§Â­Š g\AXwÂôçǰ”L_ERe‰²ÌrxFE`”±­ÏœŠœs[E31¢óëÈ׉vk13!Duµá¢¢iLvb•«®’t”lw€QYZi|¤¶}—´€§¢VN:Ut±µ_wQZ°µÈ¥£k4`f‰iv} •“¦U?n‘˜ÆÂlwrr€xOPk ÿÛÄ¥jEEf@Xƒu­Î²‘qL=¢¬Ùè”{uskOK*~ŸÝæïÐlƒGS,^‹Ÿ»šÄ¦pj.P‰ƒ¢ºŸ™€VE$$v—µÒðØ—›J,G-s€ˆh޲Ï͘_LX<£|ªvxzs[KA^ÅêãýƒUV%ZG9Ma¤ÚÿÛ£¨:(c:U‘‰ Ø©nw4,_V©úÑа[WU-5Wd’Ÿ“Ž®Šw³^L~K‘²kIDBlçØ£ÐœXg}F\Oƒ¯ZvŽf}´ŠÈ–e‚VLnrkžzšŽKV ²œÞF{XN~Z'U•¤ÞÚŠ«K„_?zhe‹‰wŒŸ™º›H`ƒc{¥†”²wix=0^mzØ÷ÎÃŽ=KMwp®íͼ©3Hz@•œm¥–…ˆp==eW}¨ÒóÂÂ5G `‰¤áû¿·nM^G–š‘ÅÛ¤„d5N{½ÿÿ÷ðr&Uln¹×ÂÛ®„ˆHCQFn“™š¯i}igoEzÉ©À»Y]s\oz>6sŠ±Ô–À€†˜HKfx†‡bAl¥ß¾œ™ƒTR^=Z–˜ªÐ£ww?™ßÛÿËXvfKKX·¯ä䦯Š_g!>du  …p‡Š™·S[‚—“«…lˆfWymY‘om Ý»­¹?:|*8tXƒØÏ¯¼\L¤bƒ›H€”s|nPgœŠ™—g½·x¯o*jy]‰L°„zbƒÈ›¹¯Hwt=gcB¤¶ðÿ‰YŠL<~_UŸÀ©©t0h„ÄØ‰x¬‚k‘R@x‡¨•Tb{r{jyÁ·ªÉ|bs9<_HQ˜ºÉô³o•`/aSZ¬Æ¨ q5Xqy¤zkÍ´“Äa/_qƒ–w.N‡—º }¦§€“ˆFIde‰¨–¨K"RºªÍá}u{SHX-!z©Ôÿë›jD7J[_x ¼Â­jPD?0CØÿÏÿÊKG$!c^†ãæÏ´¡ŽRPD,|¤li’†’DZw"œ¡¦Ëvo¤tiACt ÕÇž˜­¦y^:&FŒ¹·»”gmX*0Ž×ÈàÒrJD@V‰o=v§ÍÇfrxf†Zbwu—›¾ºy?š´¼û¸|…f;?8V­ÈÌ«š¹¬qeG*Z† Šg{––qY˜­}›“R^‡‡}|NGŒ¦£šiP»›¤ˆF[qn~‚ks™—ƒil¼½¦v8SsimqVƒÇ×ˬb%p€¦Å¡˜’d/7[t´æÞ¶y#VŽ”ÍϤ”yP:JI`œµ°‡c•·…}Škmwfn‚olŠ”}o¬Ìššq>Libd’Šƒ¢¬¥•zJ:f”®µ¡‡iSIW‚”™˜‰y`HByÓ×¹¸yLQLT{‘~…𔋆ªldRn’ƒ•„l‰•‰p7<§Ä®É”hxaHZo^mžª¤…a‹Ç§ŠŽe\fRLo‰ª²P|¼¢›š^Pe]Le|y•ÁÅ¡eSŠŽ”su”vKOegˆÂÕÇ™>c¤®‘ŠuIChz€Ÿ¯ŠU>|ãØº¦W>C/<‚¡¢Ã²vSe£§™£rUfW@m’°Í¯„`˳˰„‚[+*\v…­±XJ¤àǾ~HWO&0k€œÈØÀ‡Wy™xzmKt™€{‘uo˜‘hK5‚ãÕß°PLE:Ofh²¶£ŠPJ—ÄÀ¶„PE@!.a‚«Þç±m-6•¬¦¯zm~iOWcj›Ç¾”Ol׽ƣO]ia^nihŽ…fRpÈðñÍZ!)b–µçì¬a d¹ÆçÀ~mN.7Vc”É¿™^%dÊÓÜÃlMF->d‰ÊûñÂnr´©¶s’cKeZjšzi@rìóܪH8>TQ[}”­¢ƒ_HV³íÙÌt88;;JrÅê͈6>§Åíχt[J7@Lp¦ÁºƒGF©çÕÉu3;IEOq‚§Ï¯uM7~ÒÐÙ™RMBEKZhÅÙÈŽ4l´¼Ø¦jf_D¥ØäÖ€MG55lŽ·Ø¿‡RE´ÀÍ{U]K>Sbh™Çвj/¡¾ÜÞŽbUF1Fbw¤Á¬qEW³ÛåÛm9;''[|ƒ°Î¹™c-l´·Ô§lbK?G^h¯À½y%4¨ÎÙåTV;/SklžÁ±…X>„ÖÙì¤WF 6Yv·òùÕ‰;›¿æÅŽ€t\DC@Tƒ§§”xs¿Ú¯U7EKUcqx§Â°†K6|ÎÙÝšPJ@LYgj‚ª½¾šS#h·¼Ð§maaYHQPm¥Â¯{Y`¯ÕųdDOXUUio•Àáe7g·ÁИ^[Ze[\Td˜¿È£f4g²»Å£r\XK?^r޲Àž^4`ÅÊн`U^SH[[Z‰¶Å¯@`¾º¶›bU_cO_ks”ºÃ™W-u²³Ô¡iwtWQT9[˜µ¶˜fP¢ØÉÁzC>E@OxƒŸÇ˨m*2ާÈÒ“nX>>EWŠ®È±rCe·½½©lbkY=KVhÈÊžh8g²·Ç“blj\NYXu«ÌÔ§@H§ºçÊ~ojQ?PFZ˜À¾’b@pÄÕ×­iI?1,Mm—Êïå©L0‰•¹ˆ¡ª{VD+l¨Å¶„:cÑ×Å¥PHal_VZ`ˆµÊªr>? Ìót`jdJ@[xªáß@ †Ìéõµ”€V#!=~Åè΋NO˜¸¶±|ikR44MrªÜݵfG ±šm„˜Œp]=?f˜¯tW{ÑÖË¢ZHMG8FZ}²ÝëÑ›3;ˆ‰®½™¯·zDA68~»°_7Õ½ÈkpZB=@W”Ëåºn00‡¶ÉÜ©xX1"Px¹ÿÿÖu ,p åìÖ¶3 "`³äД[U˜ªš£‚{‘N0*:wËøè°O9ˆ‹¦²š¬³‹O:/2s¬·¤rCd¶ÆÇ³‚ueTB9Hg˜ÁÀ–X5vÄÆÑ®la[J@OTh¥ÚåÁ€3 Cš ¿Ø¥Ž…`=DLP‡½¾›e;Q“°ÃЦ‚wbJ94=ežÏåÆ7:r„£¾¥’‡qSPX^®Ã£h*Z«Üÿö¶y9-Jp›ÀÍ·[;_™¬ÌÇ’mG&&Y‰ªÏÙ´s(-޲þÿÝ©X%C^–ÂÒ²xD<¿Îè˃O# It§çÿô¯S$Äøøº”tG$&/M’ÑåÀw&f­×úÜ¢m@&EÃ÷ûÆt8¼èå´Œ\30W¿àÇ{2 3›ÏùÿÑ”Q# 3\›ØíÕ¢\(r¨ÎîÍ’U$ +[’Æìæ§Q@œÉÿÿÛ™J +;a¤áïÈJ$t´ÚÿãD M‡·âòÖ¢i tÁòÿõ–JZ†¥ÍМ`(_°âÿý·h'#U„ºì컆W(A¢äàбwH4$6s›­ÆÇGFÊÿÿÿÈVy´ÞòÕ˜Z1)yÍíúÚGK•ÊèðÎ/@Ãùÿÿ¾` +€±ÍÖÉ“P& O¥çþú¹[1€»èîÆ…F$7›ãïîш? W¡Íêò½`—åÿÿâ{%d›ÂßÞ²uK)J´çõø¸])x¯×êé¾q1M¿ìÿÿºM5ÂàëÒ“S! \Ïÿÿÿ£4B ÚìÝÜh?38?R—îùÛ¯[*W›Ì ƒf8)pÝÿÿó,*w»Æ°‘whp”ž‰dIo£¥«¦|RCSp˜´ª”mX\oxlNnÅÔÅÃŽR'=ƒœ©‘Wa•¶»¢t\guh\MCŠãïóÖy!lŸÄ²„`QQa„˜ˆ„·Ûæo7-iœ¿¿“[@Im–¶½£|V_Ž—…„„|€ŽƒsrcWb“–Šh]“ÇĽ¤nEPhŸõÿãÀ|1Y»ÐÄžkLCRy«À¡‘¨„\XVViœÂ¶šuVShrsubk®ÒÍÆŽQ!\“²±ŠcTfŒ»Ï±u+> ÈÛãºw=""G€œ¨®¯Žfaqƒ“‘]S|¤ª¥ ŒhZdhr„€y{{nY[‘Úݬ€H 0Z~›¡‘€~„…“¡ˆWQ€£¡¥ vKA[}›³¬zshaiYGo·ÕÙÐ^$Al–”’Ša5R–³ÉË®w?1?j˜Ÿ‰sil~œ¹³mMFmŸª¢ŸŠjY_it‡˜ž”…wf\WRc£ßÝÆžm>#Dz•–~be…®ÆÅ­w6)q·×Ò¹[4.Jx¬ÒÑ£pB2Hm–­¢|q’¡ž™‰tWKk†‹‘„yv|ŽuVNqŸ¬¡˜„`HTm‚š¤ª®sPP]ff`e‘ËÖϾ‘TVª±Ÿ†k\iŠ©§†gi‡Œ}€ƒrbj†Ÿª¥sbYRaztoÉÆ¹›qK2<]ƒŸ¦¤¡™†o_TAO“ÅØÓ®|D)1P{˜¡ž ¥¢waG/@ÐØÊ­|D+8Y‰¥¡‘‡—™ŽtJ!(xÍëêÉŒF$R…§©“}{ˆ‘‘”Ši=7z¼Âµª‹W1:e¦«­§‹aHSnwlfŠ¾Æ³§“n;+Jt”¢ šŒyv‹‰xbZq™­¢–‰oWWm‚–”””‡l]bjlde†»Î¿­k:)Iy©kf|›±¬ŠY9L€¨²­—rPMh†¦‰ufagz„ud‚²ºª™†kGGeƒ››„ukiv‰¡®£„f[f|‡ŠŒˆ€€‚€~z}|ytosvqpŒ¸ÁªŽw^JPo‰—”‚wty€‰˜›†kd“Ž‚€zlh|’š’†}|~xmq~sge€­¸«¢ŠlJGh†˜–†ymhsŒ¥¨sl~‚}{~vluŽ¡œˆ€†€l`fw…„|tp€Ÿª¨žƒePTp†””„qdf}œ²¯–vWK\•Ÿž—…nbfqz£¥vjglz…„zjm‘¯³©sYM[q‚Œ…‚…‰‰†ƒ}pl}’—‹€|upu„…„›Žxhcjmq~Œ˜¤¨‹w^S\v˜‘…yrw‚“™x_\|™™•”‡q^`lxƒŠŽ—™Ž}qojhs}z…¤¬œ‹l]\o†’‘…zrpvƒ“’zfm„ŽŒŒŠ|gao†˜ž˜Šyg_ep{‹¤¬¡{fZ]m‚’—‘†~vqr{„†‡•qkjn{ ‹zojkryx€œª ’kWSi‚Ž’ˆ„€{wsofs–¯¦‘‚r]P^€œ¢š…ufdmtx‹¨ª˜„p_Zbu†‘––“vmks~ƒ€€‘Ž}yzvmo}†ˆƒƒ‚|v|€}ƒ•Œ|umlt€‰Ž‘Œtjddt“¨¦›‰tb\fxˆ‘Ž……ˆƒ|wrgi„¤©ž‹yi^_l€“œ“ˆzkdhkw•«¤•…tc]iz…Ї……‰‹‰‚{tqr|‡Š‡…‰ˆ€||zwv~†‹‰€{vu|„ŒŽ†wjs‰‘Œ„zpls€‹†zz|‡Šˆzvvx€‰Š…~zy{~€~{xz€Œ’’Œrbay‘——–‹xgem|‡ŒŒ‰…‚€yuy€†„„‹Œyz}}|‚…ƒ{{{{€ˆŠƒ}vs}ŠŒˆ†€xqpxƒ‹ŒŠ…€{wx|}|}‰–‘…xrpw‚‹Ž‰€zvty€‡Œ‡€†zy{||~ƒˆˆ…‚€~{zzyy’Œ…~smnw‚’†~wstz€ƒ…„†ˆ…~zxy~‚††„~~€€‚Š‹…€}xux„ˆ‡ƒ€}||‚~~„‡‚€|xy~‚ƒ‚ƒ„…ƒ€}|zwxŽˆ„€zss{€‚ƒ†ˆ†~{z{~}}„ˆ€€|xw}ƒ…‚€‚€€‚ƒ~{z|€‚…‡†‚€}zz|€ƒ†…ƒ€~{z{~„„‚€~€ƒ‚€€€}}~€€‚‚‚€}||}„ˆ‡‚€~|{|~€€„„~~}}}~ˆ‡ƒ‚€|xy~ƒ€‚‚€€~}{z‡Š…ƒ~yvz€„„ƒƒ‚€}~€€€€€€€€€‚‚€~~~€‚‚‚€€~}~€‚ƒ}€‚€€~}~€€€€€€~~€ƒƒ‚€~~€€~€€‚ƒƒ€~}}€‚ƒƒ‚€}~€‚‚€~~€€€€€‚€€~~€€€€€€€‚€€~}~ƒƒ€€~~€€€€~€‚ƒ€|}€‚‚ƒ‚€~||€‚€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€~€€}|~€‚€€‚~|ƒ}€ \ No newline at end of file diff --git a/source/twilight/sorry/SKULLey/Skulley.Mac b/source/twilight/sorry/SKULLey/Skulley.Mac new file mode 100644 index 0000000..eb54786 --- /dev/null +++ b/source/twilight/sorry/SKULLey/Skulley.Mac @@ -0,0 +1,277 @@ + MACRO +&LAB JCS &BP +&LAB BCC *+5 + BRL &BP + MEND + MACRO +&lab LongResult +&lab phd + phd + MEND + MACRO +&lab _DisposeAll +&lab ldx #$1102 + jsl $E10000 + MEND + MACRO +&lab _GetAddress +&lab ldx #$0904 + jsl $E10000 + MEND + MACRO +&lab pulllong &addr1,&addr2 +&lab ANOP + AIF C:&addr1=0,.a + AIF C:&addr2=0,.b + LCLC &C +&C AMID &addr1,1,1 + AIF "&C"="[",.zeropage + pullword &addr1 + sta &addr2 + pullword &addr1+2 + sta &addr2+2 + MEXIT +.a + pullword + pullword + MEXIT +.b + pullword &addr1 + pullword &addr1+2 + MEXIT +.zeropage + ldy #&addr2 + pullword &addr1,y + ldy #&addr2+2 + pullword &addr1,y + MEND + MACRO +&lab pullword &SYSOPR +&lab ANOP + pla + AIF C:&SYSOPR=0,.end + sta &SYSOPR +.end + MEND + MACRO +&lab pushword &SYSOPR +&lab ANOP + AIF C:&SYSOPR=0,.b + LCLC &C +&C AMID "&SYSOPR",1,1 + AIF ("&C"="#").AND.(S:LONGA),.immediate + lda &SYSOPR + pha + MEXIT +.b + pha + MEXIT +.immediate + LCLC &REST + LCLA &BL +&BL ASEARCH "&SYSOPR"," ",1 + AIF &BL>0,.a +&BL SETA L:&SYSOPR+1 +.a +&REST AMID "&SYSOPR",2,&BL-2 + dc I1'$F4',I2'&REST' + MEND + MACRO +&lab longmx +&lab ANOP + rep #%00110000 + longa on + longi on + MEND + MACRO +&lab longm +&lab ANOP + rep #%00100000 + longa on + MEND + MACRO +&lab shortm +&lab ANOP + sep #%00100000 + longa off + MEND + MACRO + DefineStack + GBLA &DummyPC +&DummyPC SETA 1 + MEND + MACRO +&lab BYTE +&lab equ &DummyPC +&DummyPC SETA &DummyPC+1 + MEND + MACRO +&lab WORD +&lab equ &DummyPC +&DummyPC SETA &DummyPC+2 + MEXIT + MEND + MACRO +&lab LONG +&lab equ &DummyPC +&DummyPC SETA &DummyPC+4 + MEND + MACRO +&lab BLOCK &Value + AIF C:&lab=0,.skiplab +&lab equ &DummyPC +.skiplab +&DummyPC SETA &DummyPC+&Value + MEND + MACRO +&lab _GetMasterSCB +&lab ldx #$1704 + jsl $E10000 + MEND + MACRO +&lab pushlong &addr,&offset +&lab ANOP + LCLC &C + LCLC &REST +&C AMID &addr,1,1 + AIF "&C"="#",.immediate + AIF "&C"="[",.zeropage + AIF C:&offset=0,.nooffset + AIF "&offset"="s",.stack + pushword &addr+2,&offset + pushword &addr,&offset + MEXIT +.nooffset + pushword &addr+2 + pushword &addr + MEXIT +.immediate +&REST AMID &addr,2,L:&addr-1 + dc I1'$F4',I2'(&REST)|-16' + dc I1'$F4',I2'&REST' + MEXIT +.stack + pushword &addr+2,s + pushword &addr+2,s + MEXIT +.zeropage + ldy #&offset+2 + pushword &addr,y + ldy #&offset + pushword &addr,y + MEND + MACRO +&lab _GetHandleSize +&lab ldx #$1802 + jsl $E10000 + MEND + MACRO +&lab _NewHandle +&lab ldx #$0902 + jsl $E10000 + MEND + MACRO +&lab _SoundStartUp +&lab ldx #$0208 + jsl $E10000 + MEND + MACRO +&lab _SoundShutDown +&lab ldx #$0308 + jsl $E10000 + MEND + MACRO +&lab _FFStartSound +&lab ldx #$0E08 + jsl $E10000 + MEND + MACRO +&lab _FFStopSound +&lab ldx #$0F08 + jsl $E10000 + MEND + MACRO +&lab _LoadResource +&lab ldx #$0E1E + jsl $E10000 + MEND + MACRO +&lab _SoundToolStatus +&lab ldx #$0608 + jsl $E10000 + MEND + MACRO +&lab _GetCurResourceApp +&lab ldx #$141E + jsl $E10000 + MEND + MACRO +&lab _SetCurResourceApp +&lab ldx #$131E + jsl $E10000 + MEND + MACRO +&lab GSStr &GSstring +&lab dc i2'L:&GSstring',C'&GSstring' + MEND + MACRO +&lab WordResult +&lab phd + MEND + MACRO +&lab _CloseResourceFile +&lab ldx #$0B1E + jsl $E10000 + MEND + MACRO +&lab _DetachResource +&lab ldx #$181E + jsl $E10000 + MEND + MACRO +&lab _GetCurResourceFile +&lab ldx #$121E + jsl $E10000 + MEND + MACRO +&lab _OpenResourceFile +&lab ldx #$0A1E + jsl $E10000 + MEND + MACRO +&lab _ResourceShutDown +&lab ldx #$031E + jsl $E10000 + MEND + MACRO +&lab _ResourceStartUp +&lab ldx #$021E + jsl $E10000 + MEND + MACRO +&lab _SetCurResourceFile +&lab ldx #$111E + jsl $E10000 + MEND + MACRO +&lab _FFSoundStatus +&lab ldx #$1008 + jsl $E10000 + MEND + macro +&lab deref &locations,&handle +&lab lda [&handle] + lcla &count +&count seta 1 +.loop + sta &locations(&count) +&count seta &count+1 + aif &count<=C:&locations,^loop + ldy #2 + lda [&handle],y +&count seta 1 +.loop + sta &locations(&count)+2 +&count seta &count+1 + aif &count<=C:&locations,^loop + mend diff --git a/source/twilight/sorry/SKULLey/SkulleyBullets b/source/twilight/sorry/SKULLey/SkulleyBullets new file mode 100644 index 0000000..048a509 Binary files /dev/null and b/source/twilight/sorry/SKULLey/SkulleyBullets differ diff --git a/source/twilight/sorry/SKULLey/YouChoose2.Apf b/source/twilight/sorry/SKULLey/YouChoose2.Apf new file mode 100644 index 0000000..09849bc Binary files /dev/null and b/source/twilight/sorry/SKULLey/YouChoose2.Apf differ diff --git a/source/twilight/sorry/SKULLey/bullets3.src b/source/twilight/sorry/SKULLey/bullets3.src new file mode 100644 index 0000000..7ca5ddf --- /dev/null +++ b/source/twilight/sorry/SKULLey/bullets3.src @@ -0,0 +1,38 @@ + +BulletDATA Data + +bullet4 anop ;11112222333344445555 * 15 lines + dc h'00000000000000E00000' + dc h'000000E000000E0E0000' + dc h'000000E0E000E4EE0000' + dc h'00000EEE4EEE4EE00000' + dc h'0000E4E4444444E0E500' + dc h'04E44334411144E54000' + dc h'0004444110002440E000' + dc h'00000444100013E00000' + dc h'000000EE210014EE0000' + dc h'000004EE431133EE0000' + dc h'000000E44434EEEEE000' + dc h'0000000EE44EEEE0E000' + dc h'000000E0EE044E00E000' + dc h'00000000000400000000' + dc h'000000E0000000000000' + +bulmsk4 anop + dc h'FFFFFFFFFFFFFF0FFFFF' + dc h'FFFFFF0FFFFFF0F0FFFF' + dc h'FFFFFF0F0FFF0000FFFF' + dc h'FFFFF0000000000FFFFF' + dc h'FFFF00000000000F00FF' + dc h'F0000000000000000FFF' + dc h'FFF000000000000F0FFF' + dc h'FFFFF0000000000FFFFF' + dc h'FFFFFF0000000000FFFF' + dc h'FFFFF00000000000FFFF' + dc h'FFFFFF00000000000FFF' + dc h'FFFFFFF00000000F0FFF' + dc h'FFFFFF0F00F000FF0FFF' + dc h'FFFFFFFFFFF0FFFFFFFF' + dc h'FFFFFF0FFFFFFFFFFFFF' + + End diff --git a/source/twilight/sorry/SKULLey/make b/source/twilight/sorry/SKULLey/make new file mode 100644 index 0000000..efe231d --- /dev/null +++ b/source/twilight/sorry/SKULLey/make @@ -0,0 +1,12 @@ +echo asml SKULLey.asm keep=SKULLey.d +asml SKULLey.asm keep=SKULLey.d +echo duplicate -d SKULLey.d SKULLey +duplicate -d SKULLey.d SKULLey +echo duplicate -r SKULLey.r SKULLey +duplicate -r SKULLey.r SKULLey +echo filetype SKULLey $BC +filetype SKULLey $BC +echo setfile SKULLey -at $4004 +setfile SKULLey -at $4004 +echo copy -c SKULLey /jim1/system/cdevs/Twilight/SKULLey +copy -c SKULLey /jim1/system/cdevs/Twilight/SKULLey diff --git a/source/twilight/sorry/SKULLey/skulley.asm b/source/twilight/sorry/SKULLey/skulley.asm new file mode 100644 index 0000000..306b772 --- /dev/null +++ b/source/twilight/sorry/SKULLey/skulley.asm @@ -0,0 +1,744 @@ + +*-----------------------------------------------------------------------------* +! Twilight II SKULLey Module. ! +! ! +! By Jim Maricondo. ! +! ! +! Copyright (c) 1991 Jim Maricondo. All rights reserved. ! +*-----------------------------------------------------------------------------* + mcopy skulley.mac + absaddr on + case off +*-----------------------------------------------------------------------------* +! TO TOGGLE: +! +! * SOUND +! * ACCELERATOR PRESENT +sculley gequ <0 +SLookUp gequ sculley+4 +MyID gequ SLookUp+4 +HiRes gequ MyID+2 +Width gequ HiRes+4 +Depth gequ Width+2 +y gequ Depth+2 +bordercol gequ y+2 +image_index gequ bordercol+1 +inactive gequ image_index+2 +stage gequ inactive+2 +byte_offset gequ stage+2 +bullet_offset gequ byte_offset+2 +bul_off_temp gequ bullet_offset+2 +shots gequ bul_off_temp+2 +HandleLoc gequ shots+2 +ztemp1 gequ shots+2 +ToolsDP gequ HandleLoc+4 +ShutItDown gequ ToolsDP+2 +NoSound gequ shutItDown+2 +TempHandle gequ NOSound+2 +tempPtr gequ TempHandle+4 +bas1 gequ tempPtr+4 +bas2 gequ bas1+4 +bas22 gequ bas2+4 +ourPath gequ bas22+4 + +BWidth gequ 30 +Height gequ 75 +NumBullets gequ 4 + +CLOCKCTL gequ >$E0C034 border color / rtc register +RDVBLBAR gequ >$E0C019 +MAXIMAGES gequ 1 # of images that can be handled +rSculley gequ $32F1 +rPalette gequ $32F2 +rSound gequ $32F3 +*-----------------------------------------------------------------------------* +SKULLey Start + Using MainDATA + + phb Store old data bank + phk + plb + + bra beginIt + + dc c' ][ Infinitum. ' + +beginIt anop + shortm + lda CLOCKCTL save old border color and make border + pha color now black + and #$0F + sta bordercol + pla + and #$F0 + sta CLOCKCTL + longm + + lda #0 + ldx #$8000-2 +blank sta $E12000,x + dex + dex + bpl blank + + stz ShutItDown + + LongResult + PushWord #1 + _GetAddress + PullLong SLookUp + + DefineStack +oldBank byte +returnAddress block 3 +MasterID word +MovePtr long +ourPathname long + + lda MasterID,s + ora #$0A00 + sta MyID + + lda ourPathname,s + sta ourPath + lda ourPathname+2,s + sta ourPath+2 + + WordResult + _GetCurResourceApp + PullWord OldResourceApp + + WordResult + _GetCurResourceFile + PullWord OldResourceFile + + pei MyID + _ResourceStartUp + +* pei MyID +* _SetCurResourceApp + + WordResult + PushWord #1 request read access + PushLong #0 open a new file + pei ourPath+2 + pei ourPath + _OpenResourceFile + plx + stx ResFileID + jcs Error + + LongResult + PushWord #rPalette + PushLong #$00000001 + _LoadResource + plx + stx TempHandle + plx + stx TempHandle+2 + jcs error + deref TempPtr,TempHandle + + ldx #32-2 set skulley palette +pal txy + lda [TempPtr],y + sta $E19E00,x + dex + dex + bpl pal + + LongResult + PushWord #rSound + PushLong #$00000001 + _LoadResource + plx + stx TempHandle + plx + stx TempHandle+2 + jcs error + deref SoundPtr,TempHandle + + LongResult + pei TempHandle+2 + pei TempHandle + _GetHandleSize + PullLong SoundSize + + LongResult + PushWord #rSculley + PushLong #$00000001 + _LoadResource + plx + stx TempHandle + plx + stx TempHandle+2 + jcs error + deref Bas1,TempHandle + PushWord #rSculley + PushLong #$00000001 + _DetachResource + + LongResult + PushWord #rSculley + PushLong #$00000001 + _LoadResource + plx + stx TempHandle + plx + stx TempHandle+2 + jcs error + deref (Bas2,Sculley,Bas22),TempHandle + + lda Bas22 ; Bas22 = Bas2+2220 + clc + adc #2220 + bcc noInc + inc Bas22+2 +noInc sta Bas22 + + PushWord #rSculley + PushLong #$00000001 + _DetachResource + + WordResult + _SoundToolStatus + pla + bne Active if nonzero, tool is active + + LongResult + PushLong #$100 1 page of direct page space + pei MyID + PushWord #$C005 locked/fixed/page aligned/specific bank + PushLong #0 specify bank 0 + _NewHandle + plx + stx HandleLoc + plx + stx HandleLoc+2 + bcs Error if error, exit module + + lda [HandleLoc] dereference handle to get & and save + sta ToolsDP location of direct page + + pei ToolsDP bnk $0 start addr of 1 page direct page + _SoundStartUp + + lda #1 + sta ShutItDown + +Active anop + lda SoundSize+1 + sta Pages + + stz NoSound + + WordResult + _FFSoundStatus + pla + and #%10000000 + beq good gen 7 is inactive, so sound is enabled + lda #1 + sta NoSound else sound is disabled + +good anop + jsr Animate + bra noErr + +Error anop + sta $E12000 + +noErr plb + lda 2,s + sta 2+10,s + lda 1,s + sta 1+10,s + tsc Remove input paramaters + clc + adc #10 (MasterID+MovePtr+ourPathname) + tcs + shortm restore users border color + lda CLOCKCTL + and #$F0 + ora bordercol + sta CLOCKCTL + longmx + + PushWord #%10000000 + _FFStopSound Make sure Generator 7 is off + + lda ShutItDown if it was started in the first place, + beq nope leave it started up + + _SoundShutDown + +nope anop + PushWord ResFileID + _CloseResourceFile + + _ResourceShutDown + + PushWord OldResourceFile + _SetCurResourceFile + + PushWord OldResourceApp + _SetCurResourceApp + + pei MyID + _DisposeAll + clc + rtl + + End +*-----------------------------------------------------------------------------* +Animate Start + Using MainDATA + + WordResult + _GetMasterSCB + pla + bmi Shadowing_On + + lda #$E1 + sta HiRes+2 + bra cont + +Shadowing_On anop + lda #$01 + sta HiRes+2 + +cont anop + stz shots + + jsr Randomize ; set a new random seed + +event_loopL8 anop +* shortm ; for ACCELERATOR ONLY ! +*v1 lda RDVBLBAR +* bmi v1 +*v2 lda RDVBLBAR +* bpl v2 +* longm + jsr DrawSculley + + lda shots + cmp #20 + blt no_reset + + stz shots + ldy #75*30 +recopy lda [bas1],y + sta [bas2],y + dey + dey + bpl recopy + + lda #0 + ldy #BWidth +zero00 sta [Bas2],y + dey + dey + bpl zero00 + +no_reset anop + jsr move_images move all images + + DefineStack +oldDirectPage word +rtsAddress word +oldBank byte +returnAddress block 3 +MasterID word +MovePtr long +ourPathname long + + phd + tsc + tcd + lda [MovePtr] + bne done + pld + bra event_loopL8 + +done anop + pld + rts + + End +*-----------------------------------------------------------------------------* +! Apply velocities to all images to cause them to move. +! Bounce them off the motion boundaries as needed. +move_images Start + Using MainDATA + + lda xposition + clc + adc xvelocity + bmi Z1L9 way past left + cmp left_boundary + bge Z2L9 not on left edge +Z1L9 jsr invert_xvel else bounce it + lda left_boundary + bra Z2L9 +Z2L9 pha + clc + adc image_width + cmp right_boundary + pla + blt Z3L9 not on right edge + jsr invert_xvel else bounce it + lda right_boundary + sec + sbc image_width +Z3L9 sta xposition + + lda yposition + clc + adc yvelocity + bmi Z4L9 ;way above top + cmp top_boundary + bge Z5L9 ;below top edge +Z4L9 jsr invert_yvel ;else bounce it + lda top_boundary + bra Z6L9 +Z5L9 pha + clc + adc image_height + cmp bottom_boundary + pla + blt Z6L9 ;above bottom edge + jsr invert_yvel ;else bounce it + lda bottom_boundary + sec + sbc image_height +Z6L9 sta yposition + rts + + +! Invert X velocity to give the illusion of a bounce. +invert_xvel lda xvelocity + eor #$ffff + inc a + sta xvelocity + + inc shots + jsr DrawBullet + rts + +! Invert Y velocity to give the illusion of a bounce. +invert_yvel lda yvelocity + eor #$ffff + inc a + sta yvelocity + + inc shots + jsr DrawBullet + rts + + End +*-----------------------------------------------------------------------------* +PlaySound Start + using MainDATA + + lda NoSound if nosound is true, then don't do any + beq good sound effects + rts + +good anop + PushWord #%10000000 + _FFStopSound Make sure Generator 7 is off + + jsr Random + bmi right_speaker + + PushWord #$1701 1=left spkr; 7=gen 7; 0=reserved; 1=FF + PushLong #PlayParms Pointer to the SoundParms + _FFStartSound Start playing sound (continuously) + + rts + +right_speaker anop + PushWord #$0701 0=right spkr; 7=gen7; 0=reserved; 1=FF + PushLong #PlayParms Pointer to the SoundParms + _FFStartSound Start playing sound (continuously) + + rts + + End +*-----------------------------------------------------------------------------* +* This should draw Sculley a lot faster. +* Just set "Sculley" to the address of the shape (32 bits) and this routine +* should draw it. ("Sculley" should be in the Direct Page.) +* Also: It should not cross banks! I don't think it did originally so it +* shouldn't be a problem. +* -- Derek Young +DrawSculley Start + Using MainDATA + + longa on + longi on + + lda yposition + asl a + tay + lda [SLookUp],y + clc + adc xposition + sta HiRes ; set up the index onto the screen now + + lda image_height ; depth of shape + sta depth + + lda Bas2 + sta Sculley + + clc ; Carry will stay clear +; ; throughout the loop. +yloop ldx image_wordwidth ; width (in words) of shape + + ldy #0 +xloop lda [Sculley],y + sta [HiRes],y + iny ; only one register to increment! + iny + dex + bne xloop + + lda Sculley + adc image_bytewidth ; next line of Mr. Sculley + sta Sculley + + lda HiRes ; next line on the screen + adc #160 + sta HiRes + + dec depth + bne yloop + rts + + End +*-----------------------------------------------------------------------------* +DrawBullet Start + Using MainDATA + Using BulletDATA + + longa on + longi on + + jsr PlaySound + +GetRandom anop + jsr Random + and #$0FFF <- to optimize!! think about it... :) + cmp #2100 + bge GetRandom + sta bullet_offset + + stz image_index init an index into the shape data + + lda #15 depth of bullet + sta depth + + lda bullet_offset + sta bul_off_temp + +yloop anop + lda #5 width (in words) of shape + sta width + + ldy bul_off_temp use Y as a horizontal offset + ldx image_index + +xloop anop + lda [bas2],y + and |bulmsk4,x get byte of shape + ora |bullet4,x + sta [bas2],y + iny move over a word to the right + iny + inx increment index into shape's data + inx + + dec width see if done with this line + bne xloop + + stx image_index + lda bul_off_temp move ptr one line down + clc + adc #30 30 bytes wide (skulley shape) + sta bul_off_temp NEU + + dec depth see if done all lines + bne yloop + + lda #0 + tay + tax +zero0 txa + sta [Bas2],y + tya + clc + adc #bWidth + tay + cpy #bWidth*75 75 lines + bne zero0 + + lda #0 + ldy #28 + tax +zero1 txa + sta [Bas2],y + tya + clc + adc #bWidth + tay + cpy #(bWidth*75)+28 75 lines + bne zero1 + + lda #0 + tay +zero2 sta [Bas2],y + sta [Bas22],y ; sta bastard4+2220,y + iny ; (zero bottom lines of Sculley's pic) + iny + cpy #bWidth + bne zero2 + rts + + End +*-----------------------------------------------------------------------------* +MainDATA Data + +! We don't use the first 256 bytes of DOC RAM because they might already be in +! use by the Note Synthesizer. Also, we use the full 32768 bytes offered by +! the DOC RAM, since there are two generators and each requires a buffer, so we +! split it in half for an effective $7E00 bytes per generator. Also, by +! Setting the pointer to the next wave to the beginning of this wave, the wave +! repeats. + +PlayParms anop +SoundPtr dc i4'SoundPtr' +Pages ds 2 + dc i'200' Sound speed + dc i'$0100' Page 1 of doc ram + dc i'$7E00' Reserve 32k in doc ram + dc i4'0' Pointer to next wave; 0 for no repeat + dc i'$00FF' Volume: 255 (maximum) + +SoundSize ds 4 +ResFileID ds 2 +OurNameStr GSStr '*:system:cdevs:twilight:SKULLey1.1' +OldResourceApp ds 2 +OldResourceFile ds 2 + +! Motion boundaries (in pixels) +left_boundary dc i'0' motion boundaries in pixels +right_boundary dc i'bWidth+160' +top_boundary dc i'0' +bottom_boundary dc i'200' + +! Image arrays +xvelocity dc i'1' +yvelocity dc i'1' +xposition dc i'0' +yposition dc i'0' +image_width dc i'bWidth*2' +image_bytewidth dc i'bWidth' +image_wordwidth dc i'bWidth/2' +image_height dc i'height' + + End +*-----------------------------------------------------------------------------* +* I thought you might want to have the random +* number generator I use. I haven't tested it +* against QuickDraw but there was a demo with Merlin +* that showed it and it was VERY fast and random +* looking. (I could send it if you want.) +* Use this for whatever you want. +*------------------------------------------------- +* RANDOM returns a random number in A +* RANDOMIZE seeds the generator from the clock +* SEED seeds the generator from AXY. +* +* Adapted by Derek Young from RANDOM, from the +* Merlin 16+ package. +* +* X and Y registers preserved, number returned in A +Random Start + + phx + phy + clc + ldx INDEXI + ldy INDEXJ + lda ARRAY-2,X + adc ARRAY-2,Y + sta ARRAY-2,X + dex + dex + bne DYL7 + ldx #17*2 ; Cycle index if at end of +DYL7 dey ; the array + dey + bne SETIXL7 + ldy #17*2 +SETIXL7 stx INDEXI + sty INDEXJ + ply + plx + rts + +INDEXI dc a'17*2' ; The relative positions of +INDEXJ dc a'5*2' ; these indexes is crucial + +ARRAY dc a'1,1,2,3,5,8,13,21,54,75,129,204' + dc a'323,527,850,1377,2227' + +*================================================= +* Randomize sets the random number seed from the +* clock. + +Randomize Entry + pha + pha + pha + pha + ldx #$D03 ; ReadTimeHex + jsl $E10000 ; (like this so we don't need macros) + pla + plx + ply + sta 1,S + + ora #1 ; At least one must be odd + sta ARRAY + stx ARRAY+2 + phx ; Push index regs on stack + phy + ldx #30 +LUPV1 sta ARRAY+2,X + dex + dex + lda 1,S ; Was Y + sta ARRAY+2,X + dex + dex + lda 3,S ; Was X + sta ARRAY+2,X + lda 5,S ; Original A + dex + dex + bne LUPV1 + lda #17*2 + sta INDEXI ; Init proper indexes + lda #5*2 ; into array + sta INDEXJ + jsr Random ; Warm the generator up. + jsr Random + ply + plx + pla + rts + + end +*-----------------------------------------------------------------------------* + copy bullets3.src \ No newline at end of file diff --git a/source/twilight/sorry/SKULLey/skulley.asm.f b/source/twilight/sorry/SKULLey/skulley.asm.f new file mode 100644 index 0000000..e7e5c78 --- /dev/null +++ b/source/twilight/sorry/SKULLey/skulley.asm.f @@ -0,0 +1,667 @@ + + mcopy skulley.mac + mcopy 7/m16.smartmisc + absaddr on + case off +*-----------------------------------------------------------------------------* +sculley gequ <0 +SLookUp gequ sculley+4 +MyID gequ SLookUp+4 +HiRes gequ MyID+2 +Width gequ HiRes+4 +Depth gequ Width+2 +y gequ Depth+2 +bordercol gequ y+2 +image_index gequ bordercol+1 +inactive gequ image_index+2 +stage gequ inactive+2 +byte_offset gequ stage+2 +bullet_offset gequ byte_offset+2 +bul_off_temp gequ bullet_offset+2 +shots gequ bul_off_temp+2 +HandleLoc gequ shots+2 +ztemp1 gequ shots+2 +ToolsDP gequ HandleLoc+4 +ShutItDown gequ ToolsDP+2 +NoSound gequ shutItDown+2 +TempHandle gequ NOSound+2 +tempPtr gequ TempHandle+4 +bas1 gequ tempPtr+4 +bas2 gequ bas1+4 +bas22 gequ bas2+4 +ourPath gequ bas22+4 + +BWidth gequ 30 +Height gequ 75 +NumBullets gequ 4 + +Border gequ $E0C034 border color / rtc register +Strobe gequ $E0C000 +ClearStrobe gequ $E0C010 +VBLWait gequ $E0C019 bit 7 = 1 if not VBL +MAXIMAGES gequ 1 # of images that can be handled +rSculley gequ $32F1 +rPalette gequ $32F2 +rSound gequ $32F3 +*-----------------------------------------------------------------------------* +Main Start + Using MainDATA + + phb Store old data bank + phk + plb + + bra beginIt + + dc c' ][ Infinitum. ' + +beginIt anop + shortm + lda >Border save old border color and make border + pha color now black + and #$0F + sta bordercol + pla + and #$F0 + sta >Border + longm + + lda #0 + ldx #$8000-2 +blank sta $E12000,x + dex + dex + bpl blank + + stz ShutItDown + + LongResult + PushWord #1 + _GetAddress + PullLong SLookUp + + DefineStack +oldBank byte +returnAddress block 3 +MasterID word +MovePtr long +ourPathname long + + lda MasterID,s + ora #$0A00 + sta MyID + + lda ourPathname,s + sta ourPath + lda ourPathname+2,s + sta ourPath+2 + + WordResult + _GetCurResourceApp + PullWord OldResourceApp + + WordResult + _GetCurResourceFile + PullWord OldResourceFile + + pei MyID + _ResourceStartUp + +* pei MyID +* _SetCurResourceApp + + WordResult + PushWord #1 request read access + PushLong #0 open a new file + pei ourPath+2 + pei ourPath + _OpenResourceFile + plx + stx ResFileID + jcs Error + + LongResult + PushWord #rPalette + PushLong #$00000001 + _LoadResource + plx + stx TempHandle + plx + stx TempHandle+2 + jcs error + deref TempPtr,TempHandle + + ldx #32-2 set skulley palette +pal txy + lda [TempPtr],y + sta $E19E00,x + dex + dex + bpl pal + + LongResult + PushWord #rSound + PushLong #$00000001 + _LoadResource + plx + stx TempHandle + plx + stx TempHandle+2 + jcs error + deref SoundPtr,TempHandle + + LongResult + pei TempHandle+2 + pei TempHandle + _GetHandleSize + PullLong SoundSize + + LongResult + PushWord #rSculley + PushLong #$00000001 + _LoadResource + plx + stx TempHandle + plx + stx TempHandle+2 + jcs error + deref Bas1,TempHandle + PushWord #rSculley + PushLong #$00000001 + _DetachResource + + LongResult + PushWord #rSculley + PushLong #$00000001 + _LoadResource + plx + stx TempHandle + plx + stx TempHandle+2 + jcs error + deref (Bas2,Sculley,Bas22),TempHandle + + lda Bas22 ; Bas22 = Bas2+2220 + clc + adc #2220 + bcc noInc + inc Bas22+2 +noInc sta Bas22 + + PushWord #rSculley + PushLong #$00000001 + _DetachResource + + WordResult + _SoundToolStatus + pla + bne Active if nonzero, tool is active + + LongResult + PushLong #$100 1 page of direct page space + pei MyID + PushWord #$C005 locked/fixed/page aligned/specific bank + PushLong #0 specify bank 0 + _NewHandle + plx + stx HandleLoc + plx + stx HandleLoc+2 + bcs Error if error, exit module + + lda [HandleLoc] dereference handle to get & and save + sta ToolsDP location of direct page + + pei ToolsDP bnk $0 start addr of 1 page direct page + _SoundStartUp + + lda #1 + sta ShutItDown + +Active anop + lda SoundSize+1 + sta Pages + + stz NoSound + + WordResult + _FFSoundStatus + pla + and #%10000000 + beq good gen 7 is inactive, so sound is enabled + lda #1 + sta NoSound else sound is disabled + +good anop + jsr Animate + bra noErr + +Error anop + sta $E12000 + +noErr plb + lda 2,s + sta 12,s + lda 1,s + sta 11,s + + tsc Remove input paramaters + clc + adc #10 (MasterID+MovePtr+TextPtr) + tcs + + shortm restore users border color + lda >Border + and #$F0 + ora bordercol + sta >Border + longmx + + PushWord #%10000000 + _FFStopSound Make sure Generator 7 is off + + lda ShutItDown if it was started in the first place, + beq nope leave it started up + + _SoundShutDown + +nope anop + PushWord ResFileID + _CloseResourceFile + + _ResourceShutDown + + PushWord OldResourceFile + _SetCurResourceFile + + PushWord OldResourceApp + _SetCurResourceApp + + pei MyID + _DisposeAll + clc + rtl + + End +*-----------------------------------------------------------------------------* +Animate Start + Using MainDATA + + WordResult + _GetMasterSCB + pla + bmi Shadowing_On + + lda #$E1 + sta HiRes+2 + bra cont + +Shadowing_On anop + lda #$01 + sta HiRes+2 + +cont anop + stz shots + + LongResult + LongResult + _ReadTimeHex + _SetRandSeed + pla neu + pla neu + +! lda top_boundary +! sta yposition +! lda left_boundary +! sta xposition + +event_loopL8 anop +* lda yposition +* clc +* adc #73 +* lsr a +* clc +* adc #$80 +* sta Bottom +* shortm +*wait2 lda >$E0C02E +* cmp Bottom +* bne wait2 +* longm + jsr DrawSculley + + lda shots + cmp #20 + blt no_reset + + stz shots + ldy #75*30 +recopy lda [bas1],y + sta [bas2],y + dey + dey + bpl recopy + + lda #0 + ldy #BWidth +zero00 sta [Bas2],y + dey + dey + bpl zero00 + +no_reset anop + jsr move_images move all images + + DefineStack +oldDirectPage word +rtsAddress word +oldBank byte +returnAddress block 3 +MasterID word +MovePtr long +TextPtr long + + phd + tsc + tcd + lda [MovePtr] + bne done + pld + bra event_loopL8 + +done anop + pld + rts + +bottom ds 2 + + End +*-----------------------------------------------------------------------------* +! Apply velocities to all images to cause them to move. +! Bounce them off the motion boundaries as needed. +move_images Start + Using MainDATA + + lda xposition + clc + adc xvelocity + bmi Z1L9 way past left + cmp left_boundary + bge Z2L9 not on left edge +Z1L9 jsr invert_xvel else bounce it + lda left_boundary + bra Z2L9 +Z2L9 pha + clc + adc image_width + cmp right_boundary + pla + blt Z3L9 not on right edge + jsr invert_xvel else bounce it + lda right_boundary + sec + sbc image_width +Z3L9 sta xposition + + lda yposition + clc + adc yvelocity + bmi Z4L9 ;way above top + cmp top_boundary + bge Z5L9 ;below top edge +Z4L9 jsr invert_yvel ;else bounce it + lda top_boundary + bra Z6L9 +Z5L9 pha + clc + adc image_height + cmp bottom_boundary + pla + blt Z6L9 ;above bottom edge + jsr invert_yvel ;else bounce it + lda bottom_boundary + sec + sbc image_height +Z6L9 sta yposition + rts + + +! Invert X velocity to give the illusion of a bounce. +invert_xvel lda xvelocity + eor #$ffff + inc a + sta xvelocity + + inc shots + jsr DrawBullet + rts + +! Invert Y velocity to give the illusion of a bounce. +invert_yvel lda yvelocity + eor #$ffff + inc a + sta yvelocity + + inc shots + jsr DrawBullet + rts + + End +*-----------------------------------------------------------------------------* +PlaySound Start + using MainDATA + + lda NoSound if nosound is true, then don't do any + beq good sound effects + rts + +good anop + PushWord #%10000000 + _FFStopSound Make sure Generator 7 is off + + WordResult + _Random + pla + bmi right_speaker + + PushWord #$1701 1=left spkr; 7=gen 7; 0=reserved; 1=FF + PushLong #PlayParms Pointer to the SoundParms + _FFStartSound Start playing sound (continuously) + + rts + +right_speaker anop + PushWord #$0701 0=right spkr; 7=gen7; 0=reserved; 1=FF + PushLong #PlayParms Pointer to the SoundParms + _FFStartSound Start playing sound (continuously) + + rts + + End +*-----------------------------------------------------------------------------* +* This should draw Sculley a lot faster. +* Just set "Sculley" to the address of the shape (32 bits) and this routine +* should draw it. ("Sculley" should be in the Direct Page.) +* Also: It should not cross banks! I don't think it did originally so it +* shouldn't be a problem. +* -- Derek Young +DrawSculley Start + Using MainDATA + + longa on + longi on + + lda yposition + asl a + tay + lda [SLookUp],y + clc + adc xposition + sta HiRes ; set up the index onto the screen now + + lda image_height ; depth of shape + sta depth + + lda Bas2 + sta Sculley + + clc ; Carry will stay clear +; ; throughout the loop. +yloop ldx image_wordwidth ; width (in words) of shape + + ldy #0 +xloop lda [Sculley],y + sta [HiRes],y + iny ; only one register to increment! + iny + dex + bne xloop + + lda Sculley + adc image_bytewidth ; next line of Mr. Sculley + sta Sculley + + lda HiRes ; next line on the screen + adc #160 + sta HiRes + + dec depth + bne yloop + rts + + End +*-----------------------------------------------------------------------------* +DrawBullet Start + Using MainDATA + Using BulletDATA + + longa on + longi on + + jsr PlaySound + +randomize anop + WordResult + _Random + pla + and #$0FFF <- to optimize!! think about it... :) + cmp #2100 + bge randomize + sta bullet_offset + + stz image_index init an index into the shape data + + lda #15 depth of bullet + sta depth + + lda bullet_offset + sta bul_off_temp + +yloop anop + lda #5 width (in words) of shape + sta width + + ldy bul_off_temp use Y as a horizontal offset + ldx image_index + +xloop anop + lda [bas2],y + and |bulmsk4,x get byte of shape + ora |bullet4,x + sta [bas2],y + iny move over a word to the right + iny + inx increment index into shape's data + inx + + dec width see if done with this line + bne xloop + + stx image_index + lda bul_off_temp move ptr one line down + clc + adc #30 30 bytes wide (skulley shape) + sta bul_off_temp NEU + + dec depth see if done all lines + bne yloop + + lda #0 + tay + tax +zero0 txa + sta [Bas2],y + tya + clc + adc #bWidth + tay + cpy #bWidth*75 75 lines + bne zero0 + + lda #0 + ldy #28 + tax +zero1 txa + sta [Bas2],y + tya + clc + adc #bWidth + tay + cpy #(bWidth*75)+28 75 lines + bne zero1 + + lda #0 + tay +zero2 sta [Bas2],y + sta [Bas22],y ; sta bastard4+2220,y + iny ; (zero bottom lines of Sculley's pic) + iny + cpy #bWidth + bne zero2 + rts + + End +*-----------------------------------------------------------------------------* +MainDATA Data + +! We don't use the first 256 bytes of DOC RAM because they might already be in +! use by the Note Synthesizer. Also, we use the full 32768 bytes offered by +! the DOC RAM, since there are two generators and each requires a buffer, so we +! split it in half for an effective $7E00 bytes per generator. Also, by +! Setting the pointer to the next wave to the beginning of this wave, the wave +! repeats. + +PlayParms anop +SoundPtr dc i4'SoundPtr' +Pages ds 2 + dc i'200' Sound speed + dc i'$0100' Page 1 of doc ram + dc i'$7E00' Reserve 32k in doc ram + dc i4'0' Pointer to next wave; 0 for no repeat + dc i'$00FF' Volume: 255 (maximum) + +SoundSize ds 4 +ResFileID ds 2 +OurNameStr GSStr '*:system:cdevs:twilight:SKULLey1.1' +OldResourceApp ds 2 +OldResourceFile ds 2 + +! Motion boundaries (in pixels) +left_boundary dc i'0' motion boundaries in pixels +right_boundary dc i'bWidth+160' +top_boundary dc i'0' +bottom_boundary dc i'200' + +! Image arrays +xvelocity dc i'1' +yvelocity dc i'1' +xposition dc i'0' +yposition dc i'0' +image_width dc i'bWidth*2' +image_bytewidth dc i'bWidth' +image_wordwidth dc i'bWidth/2' +image_height dc i'height' + + End +*-----------------------------------------------------------------------------* + copy bullets3.src \ No newline at end of file diff --git a/source/twilight/sorry/SKULLey/skulley.rez b/source/twilight/sorry/SKULLey/skulley.rez new file mode 100644 index 0000000..1ed673e --- /dev/null +++ b/source/twilight/sorry/SKULLey/skulley.rez @@ -0,0 +1,329 @@ + +#include "types.rez" +#define rSculley $32F1 +#define rPalette $32F2 +#define rSound $32F3 + +resource rResName ($000132F1) { + 1, /* Resource Template Version */ + { + 0x1, "Mr. Sculley (75*30)" + } +}; +resource rResName ($000132F2) { + 1, /* Resource Template Version */ + { + 0x1, "Sculley Palette" + } +}; +resource rResName ($000132F3) { + 1, /* Resource Template Version */ + { + 0x1, "Sculley Sound" + } +}; +resource rResName ($00018006) { + 1, /* Resource Template Version */ + { + 0x1, "Module Name" + } +}; + +read rSound (0x1, nocrossbank, nospecialmemory, protected, locked, fixed) + ":Jim4:dya:twilight:skulley:bang.ouch"; + +resource rPString (0x1) { + "SKULLey" +}; + +data rPalette (0x1, nocrossbank, nospecialmemory) { +$"0000 1101 2202 3303 4404 5505 6609 760A 870A 880B 990B" +$"AA0C CC0C DD0D 6606 AA0C" +}; + +data rSculley (0x1, nocrossbank, nospecialmemory) { +$"000000000000000000000000" +$"000000000000000000000000" +$"000000000000000000000000" +$"000111233333333333321111" +$"000000000000000000000000" +$"000000000000011234444444" +$"344444333332111000000000" +$"000000000000000000000000" +$"123344444443334444343443" +$"332110000000000000000000" +$"000000000001234444444344" +$"444444333444444320100000" +$"000000000000000000000013" +$"444444444334434443433444" +$"444444321000000000000000" +$"000000000124444444344434" +$"343343333334334444433000" +$"000000000000000000001344" +$"444444443333434333334443" +$"333344444410000000000000" +$"000000014444444444433333" +$"344333445444443344444421" +$"000000000000000000134344" +$"444444434333333444555655" +$"544444444433100000000000" +$"000000234444354444444334" +$"444455565655555444444443" +$"100000000000000001344443" +$"344433334555565555666665" +$"555544444443310000000000" +$"000012344343454444455667" +$"566666666666554544444443" +$"331000000000000023443434" +$"454455657676677766766666" +$"555554444443432000000000" +$"000134444334444557677777" +$"777766776666665554444444" +$"442000000000000234444444" +$"455687888877877776776666" +$"666554444444443100000000" +$"000234444444567788888888" +$"877777766666666555444444" +$"443100000000000234344455" +$"678888888888877777766666" +$"665555444444433100000000" +$"000244456666788888888888" +$"877777766766665555444444" +$"433200000000001344467777" +$"888889888888887877776666" +$"665555444444433200000000" +$"002345667788888888888888" +$"877777776666665555444444" +$"443210000000002344567888" +$"888888888888887777766666" +$"666555444444433210000000" +$"002345567888888888888888" +$"888777776666665555444433" +$"343210000000002344567888" +$"888888888889878777766766" +$"665555444444444210000000" +$"001245667888888888988888" +$"888887766666665555444444" +$"344310000000000234567888" +$"888888988888888877776666" +$"665555443443444310000000" +$"000124567888898898888888" +$"888877766666655555544443" +$"444310000000000013457788" +$"888898888888878877666666" +$"655655444444444310000000" +$"000001347888888888888888" +$"887767766666665544444433" +$"344310000000000000138878" +$"888889889888888767767766" +$"665444544444333310000000" +$"000000026778888889889888" +$"888866776666665454454443" +$"433310000000000000025788" +$"888888888888887866566565" +$"545444554444444310000000" +$"000000014788888988877787" +$"887665455554454444454444" +$"444310000000000000014687" +$"786887676777776554455455" +$"555445444444434210000000" +$"000000014776556565445678" +$"776544444344565555444434" +$"444210000000000000014855" +$"567644445678775444584645" +$"565665544444444200000000" +$"000000014757786484457778" +$"8754445a7445666665544444" +$"444200000000000000014787" +$"757744567888876446576676" +$"666665544444443200000000" +$"000000014688677876677887" +$"776555567787766655544444" +$"443200000000000000014688" +$"8889a8777887876555567766" +$"777655544444433100000000" +$"000000013787988998777777" +$"876555566777777655554444" +$"432100000000000000013677" +$"988887777777876555666677" +$"776655554444431000000000" +$"000000003567788887778887" +$"786555566667766665554444" +$"421000000000000000002467" +$"788887788778787655555666" +$"666665554444421000000000" +$"000000002467888888777778" +$"777655555566666665544444" +$"421000000000000000001367" +$"888877666777876765554466" +$"666665444444421000000000" +$"000000000247788876657777" +$"987665544466666655454444" +$"420000000000000000000235" +$"777776677777976654444556" +$"666655554444420000000000" +$"000000000125677766687777" +$"666544445555666655544444" +$"420000000000000000000024" +$"677666677777666544555555" +$"566655544444420000000000" +$"000000000023566765877777" +$"776556656545667655554444" +$"430000000000000000000012" +$"466777777777877766645455" +$"677655554444432100000000" +$"000000000002456778656565" +$"656565654566676555544444" +$"543211000000000000000001" +$"256777666658b87979665666" +$"676556544444555432100000" +$"000000000000245677777665" +$"656565656666666556544345" +$"555544210000000000000000" +$"124567777666655555666566" +$"665555544444555554310000" +$"000000000000013457777776" +$"676666665566665555444445" +$"455554310000000000000000" +$"001356778877777666666556" +$"655554444444545444210000" +$"000000000000000245678877" +$"777666666655654554444444" +$"444443200000000000000000" +$"000134567787777666666665" +$"544544444444444442100000" +$"000000000000000013456787" +$"777766666665444544444444" +$"444421000000000000000000" +$"000001346777777776666655" +$"444444444444444310000000" +$"000000000000000000124677" +$"777777666655545444444444" +$"443100000000000000000000" +$"000000013467676777666655" +$"544444444444431000000000" +$"000000000000000000001345" +$"666666665555444444444444" +$"310000000000000000000000" +$"000000000134565666565544" +$"444444444442100000000000" +$"000000000000000000000123" +$"555555555555554444444421" +$"000000000000000000000000" +$"000000000123566656655655" +$"655555444210000000000000" +$"000000000000000000000023" +$"676666666666565655432100" +$"000000000000000000000000" +$"000000000023677676666666" +$"666654310000000000000000" +$"000000000000000000000013" +$"567766666666666542100000" +$"000000000000000000000000" +$"000000000002357766666666" +$"554421000000000000000000" +$"000000000000000000000000" +$"245555444444432200000000" +$"000000000000000000000000" +$"000000000000123333333332" +$"210000000000000000000000" +$"000000000000000000000000" +$"000000000000000000000000" +$"000000000000" +}; + +// --- Version resource + +resource rVersion (0x1, $0000) { + { $1,$1,$0,beta,$4 }, // Version 1.1.0b4 + verUS, // US Version + "Twilight II SKULLey Module", // program's name + "By J. Maricondo. Thanks DY&MK!\$0D" + "Copyright 1991 Jim Maricondo." // copyright notice +}; + +// --- About text resource + +resource rTextForLETextBox2 ($0010DD01) { + "\$01" + "J" + "\$00" + "\$00" + "\$01" + "L" + "\$00" + "\$00" + "\$01" + "R" + "\$04" + "\$00" + "\$01" + "F" + "\$FE" + "\$FF" + "\$00" + "\$08" + "\$01" + "C" + "\$11" + "\$11" + "\$01" + "B" + "\$FF" + "\$FF" + "This module allows some users to vent their frustrations at Apple's " + "support (or lack of) for the Apple II line by John Sculley, CEO." +}; + +// --- About icon resource + +resource rIcon ($0010DD01) { + $8000, // kind + $0014, // height + $001C, // width + + $"FFF0000000000000000000000FFF" + $"FFF0FFFFFFFFFFFFFFFFFFFF0FFF" + $"FFF0F000000000000000000F0FFF" + $"FFF0F000040AA44AA000040F0FFF" + $"FFF0F04000A020080A04000F0FFF" + $"FFF0F0040AA024A80AA0000F0FFF" + $"FFF0F0000AAAA44AAAA0400F0FFF" + $"FFF0F0040A02AA4A80A0000F0FFF" + $"FFF0F0440AA02AA80AA0000F0FFF" + $"FFF0F04000AA0000AA00400F0FFF" + $"FFF0F000000AAAAAA000000F0FFF" + $"FFF0F000000000000000000F0FFF" + $"FFF0FFFFFFFFFFFFFFFFAFFF0FFF" + $"FFF0000000000000000000000FFF" + $"FFFF0FFFFFFFFFFFFFFFFFF0FFFF" + $"FFFF0FFFFFFFFFFFFFFFFFF0FFFF" + $"FFFF0FF4AFFFFFFFFFFFFFF0FFFF" + $"FFFF0CCCCCCCCCCCCCCCCCC0FFFF" + $"FFFF0FFFFFFFFFFFFFFFAFF0FFFF" + $"FFFF00000000000000000000FFFF", + + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"0000FFFFFFFFFFFFFFFFFFFF0000" + $"0000FFFFFFFFFFFFFFFFFFFF0000" + $"0000FFFFFFFFFFFFFFFFFFFF0000" + $"0000FFFFFFFFFFFFFFFFFFFF0000" + $"0000FFFFFFFFFFFFFFFFFFFF0000" + $"0000FFFFFFFFFFFFFFFFFFFF0000"; +}; + +// End of resource // + diff --git a/source/twilight/sorry/frantic/fr.cc b/source/twilight/sorry/frantic/fr.cc new file mode 100644 index 0000000..ffb5597 --- /dev/null +++ b/source/twilight/sorry/frantic/fr.cc @@ -0,0 +1,113 @@ + +#pragma keep "fr" +#pragma optimize 0 +#pragma rtl +#pragma debug 0 /* was -1 */ + +#include +#include +#include +#include + +#define MAX_X 640 +#define MAX_Y 200 + +#pragma lint -1 + +/* Prototypes */ + + int GetKey(int *, int); + void main(void); + +/* Global Variables */ + + int modifier; + +/* Routines */ + +void main(void) +{ + unsigned int color; + unsigned int dh,dv,sh,sv,len,dir,k,old_dir,j; + unsigned int screenwidth = 642; /* 2, -1 */ + unsigned int screenheight = 202; + Rect newr; + Long TargetTick; /* end of wait tick number */ + + startgraph(MAX_X); + SetPenMode(modeCopy); + SetSolidPenPat(-1); + SetRandSeed (GetTick()); + ClearScreen(0xffff); + + sh = 6; + sv = 3; + newr.h1 = (+Random()) % (screenwidth-2); + newr.v1 = (+Random()) % (screenheight-0); /* -2 */ + newr.h2 = newr.h1 + sh; + newr.v2 = newr.v1 + sv; + old_dir = 0; + + while (!GetKey(&modifier, FALSE)) { + + Set640Color(Random() & 0xF); + + for (j = 1; j <= 20; ++j) { + dir = Random() % 2; + switch (old_dir) + { + case 0: + if (dir == 0) + dir = 3; + else dir = 1; + break; + case 1: + if (dir == 1) + dir = 2; + break; + case 2: + if (dir == 0) + dir = 1; + else dir = 3; + break; + case 3: + if (dir == 1) + dir = 2; + break; + } + old_dir = dir; + switch (dir) + { + case 0: + len = (Random() % newr.v1) / sv; + dh = 0; + dv = -sv; + break; + case 1: + len = (Random() % (screenwidth - newr.h2)) / sh; + dh = sh; + dv = 0; + break; + case 2: + len = (Random() % (screenheight - newr.v2)) / sv; + dh = 0; + dv = sv; + break; + case 3: + len = (Random() % newr.h1) / sh; + dh = -sh; + dv = 0; + break; + } + for (k = 1; k <= len; ++k) { + OffsetRect(&newr,dh,dv); +/* newr.v1 -= 2; + newr.h1 -= 2;*/ + PaintRect(&newr); +/* newr.v1 += 2; + newr.h1 += 2;*/ + } + } + } + endgraph(); +} \ No newline at end of file diff --git a/source/twilight/sorry/frantic/frantic.cc b/source/twilight/sorry/frantic/frantic.cc new file mode 100644 index 0000000..319fb34 --- /dev/null +++ b/source/twilight/sorry/frantic/frantic.cc @@ -0,0 +1,145 @@ + +#pragma keep "frantic" +#pragma cdev frantic +#pragma optimize -1 + +/*#include "frantic.H"*/ +#include +#include +pascal longword GetTick(void) inline(0x2503,dispatcher); + +#pragma lint -1 +#pragma debug 0 /* was -1 */ + +/* Prototypes */ + + LongWord BlankT2Moire(void); + +/* Global Variables */ + +Word *movePtr; + +/*****************************************************************************\ +|* *| +|* BlankT2Message- *| +|* This function performs the screen blanking activities. *| +|* *| +\*****************************************************************************/ + +LongWord BlankT2Message (void) +{ + + unsigned int color; + unsigned int dh,dv,sh,sv,len,dir,k,old_dir,j; + unsigned int screenwidth = 640; + unsigned int screenheight = 200; + Rect newr; + Long TargetTick; /* end of wait tick number */ + + SetRandSeed (GetTick ()); + +/*****************************************************/ +/* Animate the screen until the movePtr becomes true */ +/*****************************************************/ + + sh = 6; + sv = 3; + newr.h1 = (+Random()) % (screenwidth + 1); + newr.v1 = (+Random()) % (screenheight + 1); + newr.h2 = newr.h1 + sh; + newr.v2 = newr.v1 + sv; + old_dir = 0; + + while (!(*movePtr)) { + + Set640Color(Random() & 0xF); + + for (j = 1; j <= 20; ++j) { + dir = Random() % 2; + switch (old_dir) + { + case 0: + if (dir == 0) + dir = 3; + else dir = 1; + break; + case 1: + if (dir == 1) + dir = 2; + break; + case 2: + if (dir == 0) + dir = 1; + else dir = 3; + break; + case 3: + if (dir == 1) + dir = 2; + break; + } + old_dir = dir; + switch (dir) + { + case 0: + len = (Random() % newr.v1) / sv; + dh = 0; + dv = -sv; + break; + case 1: + len = (Random() % (screenwidth - newr.h2)) / sh; + dh = sh; + dv = 0; + break; + case 2: + len = (Random() % (screenheight - newr.v2)) / sv; + dh = 0; + dv = sv; + break; + case 3: + len = (Random() % newr.h1) / sh; + dh = -sh; + dv = 0; + break; + } + for (k = 1; k <= len; ++k) { + OffsetRect(&newr,dh,dv); + PaintRect(&newr); + } + } + } + +/**********************************************/ +/* No error occurred, so return a NULL handle */ +/**********************************************/ + + return (LongWord) NULL; +} + +/*****************************************************************************\ +|* *| +|* Messages- *| +|* This function checks the Twilight II message parameter and *| +|* dispatches control to the appropriate message handler. *| +|* *| +\*****************************************************************************/ + +LongWord frantic (LongWord data2, LongWord data1, Word message) +{ + LongWord Result = 1L; + + switch (message) + { + case BlankT2: + movePtr=(Word *) data1; + Result=BlankT2Message(); + case MakeT2: + case SaveT2: + case LoadSetupT2: + case UnloadSetupT2: + case KillT2: + case HitT2: + break; + } + + return Result; +} \ No newline at end of file diff --git a/source/twilight/sorry/frantic/frantic.cc.c b/source/twilight/sorry/frantic/frantic.cc.c new file mode 100644 index 0000000..30de42b --- /dev/null +++ b/source/twilight/sorry/frantic/frantic.cc.c @@ -0,0 +1,177 @@ +/*****************************************************************************\ +|* *| +|* Messages *| +|* *| +|* by: Josef W. Wankerl *| +|* *| +|* Version: 1.0 *| +|* 06/15/92 *| +|* *| +\*****************************************************************************/ + +#pragma keep "frantic" +#pragma cdev frantic +/*#pragma optimize -1*/ + +/*#include "frantic.H"*/ +#include +#include +pascal longword GetTick(void) inline(0x2503,dispatcher); + +/*#pragma lint -1*/ + +#pragma debug 0 /* was -1 */ + +#define SCREENWIDTH 640 +#define SCREENHEIGHT 200 + +/*****************************************************************************\ +|* *| +|* BlankT2Message- *| +|* This function performs the screen blanking activities. *| +|* *| +\*****************************************************************************/ + +LongWord BlankT2Message (Word *movePtr) +{ + + unsigned int color; + unsigned int dh,dv,sh,sv,len,dir,k,old_dir,j; + Rect newr; + + Long TargetTick; /* end of wait tick number */ + +/******************************************************************/ +/* Set the correct pen size so vertical lines do not appear wimpy */ +/******************************************************************/ + +/* SetPenSize (2, 1);*/ + +/************************************/ +/* Seed the random number generator */ +/************************************/ + + SetRandSeed (GetTick ()); + +/*****************************************************/ +/* Animate the screen until the movePtr becomes true */ +/*****************************************************/ + + sh = 6; + sv = 3; + newr.left = Randomize(SCREENWIDTH + 1); + newr.top = Randomize(SCREENHEIGHT + 1); + newr.right = (newr.left + sh); + newr.bottom = (newr.top + sv); + old_dir = 0; + + while (!(*movePtr)) { + + SetDithColor(Randomize(16)); + + for (j = 1; j <= 20; ++j) { + dir = Randomize(2); + switch (old_dir) + { + case 0: + if (dir == 0) + dir = 3; + else dir = 1; + break; + case 1: + if (dir == 1) + dir = 2; + break; + case 2: + if (dir == 0) + dir = 1; + else dir = 3; + break; + case 3: + if (dir == 1) + dir = 2; + break; + } + old_dir = dir; + switch (dir) + { + case 0: + len = (Randomize(newr.top) / sv); + dh = 0; + dv = -sv; + break; + case 1: + len = (Randomize(SCREENWIDTH-newr.right) / sh); + dh = sh; + dv = 0; + break; + case 2: + len = (Randomize(SCREENHEIGHT-newr.bottom) / sv); + dh = 0; + dv = sv; + break; + case 3: + len = (Randomize(newr.left) / sh); + dh = -sh; + dv = 0; + break; + } + for (k = 1; k <= len; ++k) { + OffsetRect(&newr,dh,dv); + PaintRect(&newr); + } + } + } + +/**********************************************/ +/* No error occurred, so return a NULL handle */ +/**********************************************/ + + return (LongWord) NULL; +} + +/*****************************************************************************\ +|* *| +|* Messages- *| +|* This function checks the Twilight II message parameter and *| +|* dispatches control to the appropriate message handler. *| +|* *| +\*****************************************************************************/ + +LongWord frantic (LongWord data2, LongWord data1, Word message) +{ + LongWord Result = 1L; + + switch (message) + { + case MakeT2: + break; + case SaveT2: + break; + case BlankT2: + Result = BlankT2Message ((Word *) data1); + break; + case LoadSetupT2: + break; + case UnloadSetupT2: + break; + case KillT2: + break; + case HitT2: + break; + } + + return Result; +} + + +Randomize (int range) +{ + long rawResult; + + /* Generate a random number using QuickDraw's Random() function. */ + + rawResult = Random (); + rawResult &= 0x7FFFL; + return ((rawResult * range) / 32768); +} \ No newline at end of file diff --git a/source/twilight/sorry/frantic/frantic.h b/source/twilight/sorry/frantic/frantic.h new file mode 100644 index 0000000..ddb8bdb --- /dev/null +++ b/source/twilight/sorry/frantic/frantic.h @@ -0,0 +1,22 @@ +/*****************************************************************************\ +|* *| +|* Messages *| +|* *| +|* by: Josef W. Wankerl *| +|* *| +|* Version: 1.0 *| +|* 06/10/92 *| +|* *| +\*****************************************************************************/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include \ No newline at end of file diff --git a/source/twilight/sorry/frantic/frantic.p b/source/twilight/sorry/frantic/frantic.p new file mode 100644 index 0000000..006f325 --- /dev/null +++ b/source/twilight/sorry/frantic/frantic.p @@ -0,0 +1,140 @@ + +{$DeskAcc -1 -1 'Frantic'} +{$LongGlobals+} + +{ August 6, 1987 } +{ Frantic NDA written by: } +{ Floyd Zink, Jr. } +{ CIS 73147,2717 } +{ Genie F.ZINK } + +{ This is public domain. You can do what ever you want with this. } + + +program FranticNDA; + +uses QDIntf, GSIntf, MiscTools, ConsoleIO; + +var + Open : boolean; + myWindPtr : WindowPtr; + + +procedure dofrantic; forward; + +function DAOpen: WindowPtr; + +var myWind: NewWindowParamBlk; + +begin + if open then exit; + fillchar(myWind,sizeof(NewWindowParamBlk),0); + with myWind do + begin + param_length := sizeof(NewWindowParamBlk); + wFrame := $0020; + wPosition.top := 5; { Copied window idea from } + wPosition.left := 5; { Jason Harper's MeltDown NDA } + wPosition.bottom:= 6; + wPosition.right := 6; + wPlane := -1; + wStorage := nil; + end; + myWindPtr := NewWindow(myWind); + SetSysWindow(myWindPtr); + Open := true; + DAOpen := myWindPtr; + dofrantic; +end; + +procedure DAClose; +begin + if Open then CloseWindow(myWindPtr); + Open := false; +end; + +procedure DAAction(Code:Integer; Param:Longint); +begin + CloseNDAByWinPtr(myWindPtr); +end; + +procedure DAInit(Code:Integer); +begin + if (Code = 0) and Open then DAClose; + Open := false; +end; + +procedure dofrantic; +var + currPort : GrafPtr; + screenwidth,screenheight,color,dh,dv, + sh,sv,len,dir,k,old_dir,j : integer; + newr: Rect; + eventrec: EventRecord; + done:boolean; + +begin + HideCursor; + if GetMasterSCB >= 128 + then screenwidth := 640 + else screenwidth := 320; + screenheight:=200; + currPort := GetPort; + SetPort(GetMenuMgrPort); + sh:=6; sv:=3; + done:=false; + newr.left:= Random mod (screenwidth+1); + newr.top := Random mod (screenheight+1); + newr.right:=newr.left+sh; + newr.bottom:=newr.top+sv; + old_dir:=0; + repeat + color:= random mod 16; + setdithcolor(color); + for j:=1 to 20 do + begin + dir:=random mod 2; + case old_dir of + 0: if dir=0 then dir:=3 else dir:=1; + 1: if dir=1 then dir:=2; + 2: if dir=0 then dir:=1 else dir:=3; + 3: if dir=1 then dir:=2; + end; + old_dir:=dir; + case dir of + 0: begin + len:=(random mod newr.top) div sv; + dh:=0; dv:=-sv; + end; + 1: begin + len:=(random mod (screenwidth-newr.right)) div sh; + dh:=sh; dv:=0; + end; + 2: begin + len:=(random mod (screenheight-newr.bottom)) div sv; + dh:=0; dv:=sv; + end; + 3: begin + len:=(random mod newr.left) div sh; + dh:=-sh; dv:=0; + end; + end; + for k:=1 to len do begin + offsetrect(newr,dh,dv); + paintrect(newr); + end; + if GetOSEvent(MDownMask+KeyDownMask,eventrec) then + begin + done:=true; + leave; + end; + end; + until Done; + SetPort(currPort); + DrawMenuBar; + Refresh(nil); + ShowCursor; +end; + +begin +end. diff --git a/source/twilight/sorry/frantic/frantic.rez b/source/twilight/sorry/frantic/frantic.rez new file mode 100644 index 0000000..8d40d53 --- /dev/null +++ b/source/twilight/sorry/frantic/frantic.rez @@ -0,0 +1,87 @@ + +#include "types.rez" +#include "T2Common.Rez" + +// --- custom resource type defines + +resource rT2ModuleFlags (moduleFlags) { +/* fWantFadeOut + + fWantFadeIn + + fWantForceGrafPortMode640 */ + NIL +}; + + +// --- Icon Definitions + +resource rIcon (moduleIcon) { + $8000, // kind + $0014, // height + $001C, // width + + $"FFF0000000000000000000000FFF" + $"FFF0FFFFFFFFFFFFFFFFFFFF0FFF" + $"FFF0F000000000000000000F0FFF" + $"FFF0F0FFFFFFFFFFFFFFFF0F0FFF" + $"FFF0F0FF0000000000FFFF0F0FFF" + $"FFF0F0F0FFFFFFFFFF0FFF0F0FFF" + $"FFF0F0F0F000F0F00F0FFF0F0FFF" + $"FFF0F0F0FFFFFFFFFF0FFF0F0FFF" + $"FFF0F0FF0000000000FFFF0F0FFF" + $"FFF0F0FFFFFFFFFFFFFFFF0F0FFF" + $"FFF0F0FFFFFFFFFFFFFFFF0F0FFF" + $"FFF0F000000000000000000F0FFF" + $"FFF0FFFFFFFFFFFFFFFFAFFF0FFF" + $"FFF0000000000000000000000FFF" + $"FFFF0FFFFFFFFFFFFFFFFFF0FFFF" + $"FFFF0FFFFFFFFFFFFFFFFFF0FFFF" + $"FFFF0FF4AFFFFFFFFFFFFFF0FFFF" + $"FFFF0CCCCCCCCCCCCCCCCCC0FFFF" + $"FFFF0FFFFFFFFFFFFFFFAFF0FFFF" + $"FFFF00000000000000000000FFFF", + + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"0000FFFFFFFFFFFFFFFFFFFF0000" + $"0000FFFFFFFFFFFFFFFFFFFF0000" + $"0000FFFFFFFFFFFFFFFFFFFF0000" + $"0000FFFFFFFFFFFFFFFFFFFF0000" + $"0000FFFFFFFFFFFFFFFFFFFF0000" + $"0000FFFFFFFFFFFFFFFFFFFF0000"; +}; + +// --- rPString Templates + +resource rPString (moduleName) { + "Frantic" +}; + +// --- rTextForLETextBox2 Templates + +resource rTextForLETextBox2 (moduleMessage) { + TBCenterJust + TBForeColor TBColor4 + "\n" + "This module goes frantic." +}; + +// --- rVersion Templates + +resource rVersion (moduleVersion) { + {1, 0, 0, beta, 1}, + verUS, + "Twilight II Frantic Module", + "Copyright 1992 by Jim Maricondo" +}; diff --git a/source/twilight/sorry/frantic/franticnda b/source/twilight/sorry/frantic/franticnda new file mode 100644 index 0000000..ea0c6d4 Binary files /dev/null and b/source/twilight/sorry/frantic/franticnda differ diff --git a/source/twilight/sorry/frantic/franticp b/source/twilight/sorry/frantic/franticp new file mode 100644 index 0000000..963bb1b --- /dev/null +++ b/source/twilight/sorry/frantic/franticp @@ -0,0 +1,75 @@ + +procedure dofrantic; forward; + +procedure dofrantic; + +var + currPort : GrafPtr; + screenwidth,screenheight,color,dh,dv, + sh,sv,len,dir,k,old_dir,j : integer; + newr: Rect; + eventrec: EventRecord; + done:boolean; + +begin + HideCursor; + if GetMasterSCB >= 128 + then screenwidth := 640 + else screenwidth := 320; + screenheight:=200; + currPort := GetPort; + SetPort(GetMenuMgrPort); + sh:=6; sv:=3; + done:=false; + newr.left:= Random mod (screenwidth+1); + newr.top := Random mod (screenheight+1); + newr.right:=newr.left+sh; + newr.bottom:=newr.top+sv; + old_dir:=0; + repeat + color:= random mod 16; + setdithcolor(color); + for j:=1 to 20 do + begin + dir:=random mod 2; + case old_dir of + 0: if dir=0 then dir:=3 else dir:=1; + 1: if dir=1 then dir:=2; + 2: if dir=0 then dir:=1 else dir:=3; + 3: if dir=1 then dir:=2; + end; + old_dir:=dir; + case dir of + 0: begin + len:=(random mod newr.top) div sv; + dh:=0; dv:=-sv; + end; + 1: begin + len:=(random mod (screenwidth-newr.right)) div sh; + dh:=sh; dv:=0; + end; + 2: begin + len:=(random mod (screenheight-newr.bottom)) div sv; + dh:=0; dv:=sv; + end; + 3: begin + len:=(random mod newr.left) div sh; + dh:=-sh; dv:=0; + end; + end; + for k:=1 to len do begin + offsetrect(newr,dh,dv); + paintrect(newr); + end; + if GetOSEvent(MDownMask+KeyDownMask,eventrec) then + begin + done:=true; + leave; + end; + end; + until Done; + SetPort(currPort); + DrawMenuBar; + Refresh(nil); + ShowCursor; +end; diff --git a/source/twilight/sorry/frantic/mk b/source/twilight/sorry/frantic/mk new file mode 100644 index 0000000..828ddc7 --- /dev/null +++ b/source/twilight/sorry/frantic/mk @@ -0,0 +1,4 @@ + +compile fr.cc +link fr psea keep=fr +fr diff --git a/source/twilight/sorry/frantic/shell.cc b/source/twilight/sorry/frantic/shell.cc new file mode 100644 index 0000000..b93dd8e --- /dev/null +++ b/source/twilight/sorry/frantic/shell.cc @@ -0,0 +1,101 @@ +/*****************************************************************************\ +|* *| +|* Messages *| +|* *| +|* by: Josef W. Wankerl *| +|* *| +|* Version: 1.0 *| +|* 06/15/92 *| +|* *| +\*****************************************************************************/ + +#pragma keep "frantic" +#pragma cdev frantic +/*#pragma optimize -1*/ + +#include "frantic.H" + +#pragma lint -1 + +#pragma debug 0 /* was -1 */ + +/*****************************************************************************\ +|* *| +|* BlankT2Message- *| +|* This function performs the screen blanking activities. *| +|* *| +\*****************************************************************************/ + +LongWord BlankT2Message (Word *movePtr) +{ + int i; /* number of messages displayed on the screen */ + Long TargetTick; /* end of wait tick number */ + +/******************************************************************/ +/* Set the correct pen size so vertical lines do not appear wimpy */ +/******************************************************************/ + +/* SetPenSize (2, 1);*/ + +/************************************/ +/* Seed the random number generator */ +/************************************/ + + SetRandSeed (GetTick ()); + +/*****************************************************/ +/* Animate the screen until the movePtr becomes true */ +/*****************************************************/ + + while (!(*movePtr)) + + { + +/************************************************************/ +/* Wait for five seconds, or until the movePtr becomes true */ +/************************************************************/ + + TargetTick = GetTick () + (5 * 60); + while ((!(*movePtr)) && (GetTick () < TargetTick)); + } + +/**********************************************/ +/* No error occurred, so return a NULL handle */ +/**********************************************/ + + return (LongWord) NULL; +} + +/*****************************************************************************\ +|* *| +|* Messages- *| +|* This function checks the Twilight II message parameter and *| +|* dispatches control to the appropriate message handler. *| +|* *| +\*****************************************************************************/ + +LongWord frantic (LongWord data2, LongWord data1, Word message) +{ + LongWord Result = 1L; + + switch (message) + { + case MakeT2: + break; + case SaveT2: + break; + case BlankT2: + Result = BlankT2Message ((Word *) data1); + break; + case LoadSetupT2: + break; + case UnloadSetupT2: + break; + case KillT2: + break; + case HitT2: + break; + } + + return Result; +} \ No newline at end of file diff --git a/source/twilight/sorry/frantic/t2.h b/source/twilight/sorry/frantic/t2.h new file mode 100644 index 0000000..65fb0af --- /dev/null +++ b/source/twilight/sorry/frantic/t2.h @@ -0,0 +1,28 @@ +/******************************************** +; File: T2.h +; +; By: Josef W. Wankerl +; +; Copyright EGO Systems 1992 +; All Rights Reserved +; +********************************************/ + +#ifndef __T2__ +#define __T2__ + +/* Action message codes sent to modules. */ +#define MakeT2 0 +#define SaveT2 1 +#define BlankT2 2 +#define LoadSetupT2 3 +#define UnloadSetupT2 4 +#define KillT2 5 +#define HitT2 6 + +/* Resources types. */ +#define rT2ModuleFlags 0x1000 +#define rT2ExtSetup1 0x1001 +#define rT2ModuleWord 0x1002 + +#endif \ No newline at end of file diff --git a/source/twilight/sorry/lines/go.lines b/source/twilight/sorry/lines/go.lines new file mode 100644 index 0000000..db036b9 --- /dev/null +++ b/source/twilight/sorry/lines/go.lines @@ -0,0 +1,4 @@ + +compile Lines.cc keep=Lines +link Lines random keep=Lines +Lines diff --git a/source/twilight/sorry/lines/lines.cc b/source/twilight/sorry/lines/lines.cc new file mode 100644 index 0000000..96a7e6b --- /dev/null +++ b/source/twilight/sorry/lines/lines.cc @@ -0,0 +1,166 @@ +#pragma keep "Lines" + +#include + + +void Line(int,int,int,int,int); +void SmoothLine(int,int,int,int,int,int); +void Plot(int,int,int); +int GetKey(void); +extern int random(void); +extern void set_random_seed(void); + +int main(void) +{ + int x1,y1,x2,y2,i; + + startgraph(320); + set_random_seed(); + do { + x1=random() % 160; + x2=random() % 160; + y1=random() % 100; + y2=random() % 100; + Line(x1,y1,x2,y2,15); + SmoothLine(x1+160,y1,x2+160,y2,15,1); + SmoothLine(x1+160,y1+100,x2+160,y2+100,3,10); + } while(0x1B != GetKey()); + endgraph(); +} + +void SmoothLine(x1,y1,x2,y2,Color, OtherColor) +{ + int xDelta, yDelta, xStep=1, yStep=1, Cycle; + + xDelta=x2-x1; + yDelta=y2-y1; + if(xDelta<0) + { + xDelta=-xDelta; + xStep=-1; + } + if(yDelta<0) + { + yDelta=-yDelta; + yStep=-1; + } + if(yDelta>1; + while(x1 != x2) + { + Plot(x1, y1, Color); + Cycle+=yDelta; + if(Cycle>xDelta) + { + Plot(x1+xStep, y1, OtherColor); + Cycle-=xDelta; + y1+=yStep; + Plot(x1, y1, OtherColor); + } + x1+=xStep; + } + Plot(x1,y1,Color); + } + else + { + Cycle=yDelta >>1; + + while(y1 != y2) + { + Plot(x1, y1, Color); + Cycle+=xDelta; + if(Cycle>yDelta) + { + Plot(x1, y1+yStep, OtherColor); + Cycle-=yDelta; + x1+=xStep; + Plot(x1, y1, OtherColor); + } + y1+=yStep; + } + Plot(x1,y1,Color); + } +} + + + +void Line(x1,y1,x2,y2,Color) +{ + int xDelta, yDelta, xStep=1, yStep=1, Cycle; + + xDelta=x2-x1; + yDelta=y2-y1; + if(xDelta<0) + { + xDelta=-xDelta; + xStep=-1; + } + if(yDelta<0) + { + yDelta=-yDelta; + yStep=-1; + } + if(yDelta>1; + while(x1 != x2) + { + Plot(x1, y1, Color); + Cycle+=yDelta; + if(Cycle>xDelta) + { + Cycle-=xDelta; + y1+=yStep; + } + x1+=xStep; + } + Plot(x1,y1,Color); + } + else + { + Cycle=yDelta >>1; + + while(y1 != y2) + { + Plot(x1, y1, Color); + Cycle+=xDelta; + if(Cycle>yDelta) + { + Cycle-=yDelta; + x1+=xStep; + } + y1+=yStep; + } + Plot(x1,y1,Color); + } +} + + + + + +void Plot(int x, int y, int color) +{ + char *PP; + + if(x<0 || y<0 || x>319 || y>199) + return; + PP=(char *) (0xE12000 + 160 * y + (x>>1)); + if(x & 0x01) + *PP=(*PP & 0xF0) | color; + else + *PP=(*PP & 0x0F) | (color<<4); +} + +int GetKey() +{ + char ch, *cp; + + cp = (char *) 0x00C000; /* wait for keypress */ + while ((*cp & 0x80) == 0) ; + ch = (*cp) & 0x7F; /* save the key */ + cp = (char *) 0x00C010; /* clear the strobe */ + *cp = 0; + return ch; +} \ No newline at end of file diff --git a/source/twilight/sorry/powerscroll/PMod2.REZ b/source/twilight/sorry/powerscroll/PMod2.REZ new file mode 100644 index 0000000..6af1a7d --- /dev/null +++ b/source/twilight/sorry/powerscroll/PMod2.REZ @@ -0,0 +1,101 @@ + +#include "types.rez" + +// --- Module name resouce + +resource rPString (0x1) { + "Power Scroll" +}; + +// --- About text resource + +resource rTextForLETextBox2 ($0010DD01) { + "\$01" + "J" + "\$00" + "\$00" + "\$01" + "L" + "\$00" + "\$00" + "\$01" + "R" + "\$04" + "\$00" + "\$01" + "F" + "\$FE" + "\$FF" + "\$00" + "\$08" + "\$01" + "C" + "\$11" + "\$11" + "\$01" + "B" + "\$FF" + "\$FF" + "This module scrolls text you create in the sleek looking DYA PowerFont " + "at speeds you choose." +}; + +// --- Version resource + +resource rVersion (0x1) { + { $1,$0,$1,beta,$1 }, // Version 1.0.1b1 + verUS, // US Version + "Twilight II Meltdown Module", // program's name + "By J. Maricondo. Art by M. Keller.\$0D" + "Copyright 1991 Jim Maricondo." // copyright notice +}; + +// --- About icon resource + +resource rIcon ($0010DD01) { + $8000, // kind + $0014, // height + $001C, // width + + $"FFF0000000000000000000000FFF" + $"FFF0FFFFFFFFFFFFFFFFFFFF0FFF" + $"FFF0F000000000000000000F0FFF" + $"FFF0F00DDDDD00100100100F0FFF" + $"FFF0F0D0000010010010010F0FFF" + $"FFF0F0D0DDD010010010010F0FFF" + $"FFF0F0D0000010010010010F0FFF" + $"FFF0F0D0111010010010010F0FFF" + $"FFF0F0D010D010010010010F0FFF" + $"FFF0F0D010D010010010010F0FFF" + $"FFF0F0D110D110010010010F0FFF" + $"FFF0F000000000000000000F0FFF" + $"FFF0FFFFFFFFFFFFFFFFAFFF0FFF" + $"FFF0000000000000000000000FFF" + $"FFFF0FFFFFFFFFFFFFFFFFF0FFFF" + $"FFFF0FFFFFFFFFFFFFFFFFF0FFFF" + $"FFFF0FF4AFFFFFFFFFFFFFF0FFFF" + $"FFFF0CCCCCCCCCCCCCCCCCC0FFFF" + $"FFFF0FFFFFFFFFFFFFFFAFF0FFFF" + $"FFFF00000000000000000000FFFF", + + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"000FFFFFFFFFFFFFFFFFFFFFF000" + $"0000FFFFFFFFFFFFFFFFFFFF0000" + $"0000FFFFFFFFFFFFFFFFFFFF0000" + $"0000FFFFFFFFFFFFFFFFFFFF0000" + $"0000FFFFFFFFFFFFFFFFFFFF0000" + $"0000FFFFFFFFFFFFFFFFFFFF0000" + $"0000FFFFFFFFFFFFFFFFFFFF0000"; +}; diff --git a/source/twilight/sorry/powerscroll/Power.Mac b/source/twilight/sorry/powerscroll/Power.Mac new file mode 100644 index 0000000..3c1246a --- /dev/null +++ b/source/twilight/sorry/powerscroll/Power.Mac @@ -0,0 +1,127 @@ + + MACRO +&lab str &string +&lab dc i1'L:&string',C'&string' + MEND + MACRO +&lab _MMStartUp +&lab ldx #$0202 + jsl $E10000 + MEND + MACRO +&lab _MMShutDown +&lab ldx #$0302 + jsl $E10000 + MEND + MACRO +&lab _DisposeAll +&lab ldx #$1102 + jsl $E10000 + MEND + MACRO +&lab _NewHandle +&lab ldx #$0902 + jsl $E10000 + MEND + MACRO +&lab _TLStartUp +&lab ldx #$0201 + jsl $E10000 + MEND + MACRO +&lab _TLShutDown +&lab ldx #$0301 + jsl $E10000 + MEND + MACRO +&lab pushlong &addr,&offset +&lab ANOP + LCLC &C + LCLC &REST +&C AMID &addr,1,1 + AIF "&C"="#",.immediate + AIF "&C"="[",.zeropage + AIF C:&offset=0,.nooffset + AIF "&offset"="s",.stack + pushword &addr+2,&offset + pushword &addr,&offset + MEXIT +.nooffset + pushword &addr+2 + pushword &addr + MEXIT +.immediate +&REST AMID &addr,2,L:&addr-1 + dc I1'$F4',I2'(&REST)|-16' + dc I1'$F4',I2'&REST' + MEXIT +.stack + pushword &addr+2,s + pushword &addr+2,s + MEXIT +.zeropage + ldy #&offset+2 + pushword &addr,y + ldy #&offset + pushword &addr,y + MEND + MACRO +&lab pushword &SYSOPR +&lab ANOP + AIF C:&SYSOPR=0,.b + LCLC &C +&C AMID "&SYSOPR",1,1 + AIF ("&C"="#").AND.(S:LONGA),.immediate + lda &SYSOPR + pha + MEXIT +.b + pha + MEXIT +.immediate + LCLC &REST + LCLA &BL +&BL ASEARCH "&SYSOPR"," ",1 + AIF &BL>0,.a +&BL SETA L:&SYSOPR+1 +.a +&REST AMID "&SYSOPR",2,&BL-2 + dc I1'$F4',I2'&REST' + MEND + MACRO +&lab longm +&lab ANOP + rep #%00100000 + longa on + MEND + MACRO +&lab shortm +&lab ANOP + sep #%00100000 + longa off + MEND + MACRO +&lab _Quit ¶ms +&lab jsl $E100A8 + dc i2"$29" + dc i4"¶ms" + MEND + MACRO +&lab WordResult +&lab phd + MEND + MACRO +&lab LongResult +&lab phd + phd + MEND + MACRO +&lab _SysFailMgr +&lab ldx #$1503 + jsl $E10000 + MEND + MACRO +&LAB JCS &BP +&LAB BCC *+5 + BRL &BP + MEND diff --git a/source/twilight/sorry/powerscroll/make b/source/twilight/sorry/powerscroll/make new file mode 100644 index 0000000..d1aa61b --- /dev/null +++ b/source/twilight/sorry/powerscroll/make @@ -0,0 +1,14 @@ +echo unset keeptype +unset keeptype +echo asml PMod2.asm keep=PMod2.d +asml PMod2.asm keep=PMod2.d +echo duplicate -d PMod2.d PMod2 +duplicate -d PMod2.d PMod2 +echo duplicate -r PMod2.r PMod2 +duplicate -r PMod2.r PMod2 +echo filetype PMod2 $BC +filetype PMod2 $BC +echo setfile PMod2 -at $4004 +setfile PMod2 -at $4004 +echo copy PMod2 /jim1/system/cdevs/Twilight/PowerScroll1.0 +copy -c PMod2 /jim1/system/cdevs/Twilight/PowerScroll1.0 diff --git a/source/twilight/sorry/powerscroll/pmod2.asm b/source/twilight/sorry/powerscroll/pmod2.asm new file mode 100644 index 0000000..34a474e --- /dev/null +++ b/source/twilight/sorry/powerscroll/pmod2.asm @@ -0,0 +1,2044 @@ + + msb off + longa on + longi on + absaddr on + mcopy power.mac + mcopy 7/m16.msc + mcopy 7/m16.util2 + mcopy 7/m16.quickdraw +*-----------------------------------------------------------------------------* +Letter gequ <0 +Position gequ Letter+4 +Stage gequ Position+2 +lines gequ Stage+2 +MasterID gequ lines+2 +MyID gequ MasterID+2 +twice gequ MyID+2 +Speed gequ twice+2 +bordercol gequ speed+2 + +topline gequ 91 +topline1 gequ topline+1 +topline2 gequ topline1+1 +topline3 gequ topline2+1 +topline4 gequ topline3+1 +topline5 gequ topline4+1 +topline6 gequ topline5+1 +topline7 gequ topline6+1 +topline8 gequ topline7+1 +topline9 gequ topline8+1 +topline10 gequ topline9+1 +topline11 gequ topline10+1 +topline12 gequ topline11+1 +topline13 gequ topline12+1 +topline14 gequ topline13+1 +topline15 gequ topline14+1 +topline16 gequ topline15+1 +topline18 gequ topLine16+2 + +shrb gequ $E1E1 +NewVideo gequ $E0C029 +SHR gequ $E12000 +SCBs gequ $E19D00 +Palette0 gequ $E19E00 +Palette1 gequ $E19E20 +Gun gequ $E0C02E +Border gequ $E0C034 +VBLWait gequ $E0C019 bit 7 = 1 if not VBL +CLRAN0 gequ $C059 set annunciator 0 +SETAN1 gequ $C05A clear annunciator 1 +SETAN2 gequ $C05C clear annunciator 2 +CLRAN2 gequ $C05D set annunciator 2 +*-----------------------------------------------------------------------------* +PowerDemo Start + Using FontDATA + + case off + phb + phk + plb + +* brl beginIt +* +* dc c' Twilight PowerScroll Module 1.0. ' +* dc c' January 19, 1991. This module and all modules and ' +* dc c'all other files distributed with Twilight 2.0 with the ' +* dc c'exception of ColorStrobe are copyrighted 1991 by Jim ' +* dc c'Maricondo and Jonah Stich. All rights reserved. ' + +beginIt anop +* LongResult +* _GetPort +* PullLong orgPort +* +* PushLong #MyPort Open a new grafPort +* _OpenPort +* +* PushLong #MyPortLoc make it point to our memory +* _SetPortLoc +* +* PushLong #bounds +* _SetPortRect +* + shortm + lda #$C1 turn on/linearize SHR + sta >NewVideo + longm + + shortm + lda >Border save old border color and make border + pha color now black + and #$0F + sta bordercol + pla + and #$F0 + sta >Border + longm + + ldx #$8000-2 zero shr display buffer + lda #0 +zeroSHR sta >SHR,x + dex + dex + bpl zeroSHR + +* ldx #0 +* txa +*scb2 sta >SCBs,x +* inx +* inx +* cpx #144 +* blt scb2 + +* ldx #0 +* lda #$8181 +*scb3 sta >SCBs+144,x +* inx +* inx +* cpx #54 +* blt scb3 + +* lda #$0000 +* sta >Palette1 + + ldx #$20-2 +palette lda PowerFontPal,x + sta >Palette0,x + dex + dex + bpl palette + +* PushWord #15 foreground color of text: white +* _SetForeColor +* PushWord #0 background color: black +* _SetBackColor +* +* PushWord #20 horizontal (x) +* PushWord #160-6 vertical (y) +* _MoveTo +* PushLong #NameStr +* _DrawString +* +* PushWord #20 horizontal (x) +* PushWord #169-6 vertical (y) +* _MoveTo +* PushLong #NameStr2 +* _DrawString + + DefineStack +oldDirectPage word +oldBank byte +returnAddress block 3 +MasterID word +MovePtr long +TextPtr long + + phd Right here we're doing several things.. + tsc First we're checking if the first 2 + tcd letters of the scroll text are "@@". + lda [TextPtr] If they are, then we set flags to tell + and #$00FF our draw and scroll routines to scroll + sta |length slow. + stz noZIP + stz slowflag Then we're getting the length byte of + ldy #1 the pascal string of text that was + lda [TextPtr],y passed to us. We store it as the + and #$7F7F length of the string for later use. + msb off Lastly, we're taking the address of the + cmp #'%%' textedit pascal string+1 and storing + bne noSlow it directly to the operand field of a + sta slowflag lda >Long opcode. This way we can use + lda TextPtr,s + inc a add 1 to skip over length byte + inc a add 1 more to skip over % + inc a add 1 more to skip over % + bra noSlow2 +noSlow anop + lda TextPtr,s >long,x addressing instead of [dp],y. + inc a [We're adding 1 to it to skip over the +noSlow2 sta FillStr1+1 length byte at the beginning of it] + sta FillStr2+1 + sta FillStr3+1 + lda TextPtr+2,s + sta FillStr1+3 + sta FillStr2+3 + sta FillStr3+3 + shortm + lda #$EA + sta FillStr1+4 + sta FillStr2+4 + sta FillStr3+4 + longm + pld + + stz Speed Here we're just initializing variables + lda slowFlag and setting speed based on the first + beq fastok speed flag set up above. + sta speed +fastok anop + stz Stage + stz Position + lda #^No + sta Letter+2 + lda #No + sta Letter + +* lda >$BCFF00 check for TWGS +* cmp #$5754 cmp #"TW" +* bne speed_ok no twgs +* lda >$BCFF02 +* cmp #$5347 cmp #"GS" +* bne speed_ok no twgs +* lda #-1 +* sta noZIP +*speed_ok anop +* +*CheckZip anop +** ldy #$0000 +**FindZip lda FindZip,y +** dey +** bne FindZip +* php THIS ROUTINE CHECKS FOR PRESENCE OF A +* shortm ZIPGS +* lda #$5A +* sta >SETAN1 clear annunciator 1 +* sta >SETAN1 clear annunciator 1 +* sta >SETAN1 clear annunciator 1 +* sta >SETAN1 clear annunciator 1 +* lda >CLRAN0 set annunciator 0 +* eor #$F8 +* sta Temp1 +* sta >CLRAN0 set annunciator 0 +* lda >CLRAN0 set annunciator 0 +* cmp Temp1 +* bne noZip01 +* eor #$F8 +* sta >CLRAN0 set annunciator 0 +* lda #$A5 +* sta >SETAN1 clear annunciator 1 +* longm +* lda #-1 +* sta noZip +*noZip01 plp +* +** lda noZIP +** beq skipZIP +** shortm +** lda >$E0C036 +** and #$7F +** sta >$E0C036 +** longm +** +**skipzip anop + phd +GetChar anop + pld + +* ldx TabOffset This is our color cycle routine. It +* cpx #EndTab-ColTab cycles the credits. :) +* blt ok +* stz TabOffset +* ldx #0 +*ok anop +* lda ColTab,x +* sta >Palette1+$6 +* sta >Palette1+$E +* sta >Palette1+$16 +* sta >Palette1+$1E +* inc TabOffset +* inc TabOffset + +* lda noZIP +* beq skipZIP + +* shortm +*waitVBL lda >VBLWait +* bmi waitVBL +*wait2 lda >VBLWait +* bpl wait2 +* longm +* bra SkipGUN + +skipZIP anop + shortm +wait lda >Gun We wait for the electron gun to be + cmp #(topline/2)+$80 ;was tl18 refreshing the line below the last + bne wait ; was blt; line of our scroll before we start + longm redrawing, so the drawing won't tear. + +skipGUN jsr Scroll Scroll over our text! + +CheckOther anop Now check if a key was pressed, etc. + phd + tsc + tcd + lda [MovePtr] + beq GetChar + + pld If so, quit. + +* lda noZIP +* beq skipZIP2 +* shortm +* lda >$E0C036 +* ora #$80 +* sta >$E0C036 +* longm +* +*skipzip2 anop + PushLong orgPort + _SetPort restore original port + + shortm restore users border color + lda >Border + and #$F0 + ora bordercol + sta >Border + longmx + + plb + lda 2,s Move up RTL on stack.. + sta 2+10,s + lda 1,s + sta 1+10,s + tsc Remove input paramaters + clc + adc #10 (MasterID+MovePtr+TextPtr) + tcs + clc + rtl + +Temp1 ds 2 +noZip ds 2 + + End +*-----------------------------------------------------------------------------* +DrawNextStep Start + Using FontDATA + + lda Speed Check if speed flag says to go fast + jeq FAST or slow. + +SLOW anop + lda Stage + beq Stage0_slow + cmp #1 + beq Stage1_slow + cmp #2 + beq Stage2_slow + cmp #3 + beq Stage3_slow + +Stage4_slow anop + ldy #4*2 Draw last 1/4th of this letter. + jsr drawUpdate + stz Stage Start at beginning of next letter. + inc Position Move one letter over. + rts + +Stage0_slow anop + lda length + cmp Position + bge contHere + stz Position +contHere ldx Position +fillStr1 entry + lda >String,x + nop + and #$007F + cmp #$20 + bge OkVar1 + inc Position + bra stage0_slow + +okVar1 anop + cmp #$7F + blt OkVar2 + inc Position + bra stage0_slow + +okVar2 anop + sec + sbc #$20 + asl a + tax + lda LetterAddrTab,x + sta Letter + + ldy #0*2 + jsr drawUpdate + lda #1 + sta Stage + rts + +Stage1_slow anop + ldy #1*2 + jsr drawUpdate + lda #2 + sta Stage + rts + +Stage2_slow anop + ldy #2*2 + jsr drawUpdate + lda #3 + sta Stage + rts + +Stage3_slow anop + ldy #3*2 + jsr drawUpdate + lda #4 + sta Stage + rts + +DrawUpdate anop + lda #17 # of lines of each character + sta lines + ldx #0 +s4_loop_slow lda [Letter],y + sta >(topLine*$A0)+SHR+$8E,x + tya + clc + adc #10 width in bytes of each character + tay + txa + clc + adc #$A0 length in bytes of a SHR line + tax + dec lines + bne s4_loop_slow + rts + + + +FAST anop + lda Stage + beq Stage0 + cmp #1 + beq Stage1 + cmp #2 + beq Stage2 + cmp #3 + beq Stage3 + +Stage4 anop + ldy #6 Draw last 1/6th of this pair of letters. + jsr DrawLong + stz Stage Start at beginning of next letter. + inc Position Move one letter over. + rts + + +Stage0 anop + lda length + cmp Position + bge contHere2 + stz Position +contHere2 ldx Position +fillStr2 entry + lda >String,x + nop + and #$007F + cmp #$20 + bge OkVar3 + inc Position + bra stage0 + +okVar3 anop + cmp #$7F + blt OkVar4 + inc Position + bra stage0 + +okVar4 anop + sec + sbc #$20 + asl a + tax + lda LetterAddrTab,x + sta Letter + + ldy #0 + jsr DrawLong + lda #1 + sta Stage + rts + + +Stage1 anop + ldy #4 + jsr DrawLong + lda #2 + sta Stage + rts + + +Stage3 anop + ldy #2 + jsr DrawLong + lda #4 + sta Stage + rts + + +Stage2 anop + ldy #8 + lda #17 # of lines of each character + sta lines + ldx #0 +s6_loop lda [Letter],y + sta >(topline*$A0)+SHR+$8C,x + tya + clc + adc #10 width in bytes of each character + tay + txa + clc + adc #$A0 length in bytes of a SHR line + tax + dec lines + bne s6_loop + + inc Position +loooop anop + lda length + cmp Position + bge contHere3 ;bne + stz Position +contHere3 ldx position +fillStr3 entry + lda >String,x + nop + and #$007F + cmp #$20 + bge OkVar5 + inc Position + bra loooop + +okVar5 anop + cmp #$7F + blt OkVar6 + inc Position + bra loooop + +okVar6 anop + sec + sbc #$20 + asl a + tax + lda LetterAddrTab,x + sta Letter + + ldy #0 + lda #17 # of lines of each character + sta lines + ldx #0 +s7_loop lda [Letter],y + sta >(topline*$A0)+SHR+$8E,x + tya + clc + adc #10 width in bytes of each character + tay + txa + clc + adc #$A0 length in bytes of a SHR line + tax + dec lines + bne s7_loop + + lda #3 + sta Stage + rts + + +DrawLong anop + lda #17 # of lines of each character + sta lines + ldx #0 +s4_loop lda #2 + sta twice +s5_loop lda [Letter],y + sta >(topLine*$A0)+SHR+$8C,x + iny + iny + inx + inx + dec twice + bne s5_loop + tya + clc + adc #10-4 width in bytes of each character + tay + txa + clc + adc #$A0-4 length in bytes of a SHR line + tax + dec lines + bne s4_loop + rts + + End +*-----------------------------------------------------------------------------* +Scroll Start + Using FontDATA + + pea SHRb + plb + plb + + lda Speed + bne SLOW_Scroll + + ldx #(topline*$A0)+16 1 + jsr ScrollIt + ldx #(topline1*$A0)+16 2 + jsr ScrollIt + ldx #(topline2*$A0)+16 3 + jsr ScrollIt + ldx #(topline3*$A0)+16 4 + jsr ScrollIt + ldx #(topline4*$A0)+16 5 + jsr ScrollIt + ldx #(topline5*$A0)+16 6 + jsr ScrollIt + ldx #(topline6*$A0)+16 7 + jsr ScrollIt + ldx #(topline7*$A0)+16 8 + jsr ScrollIt + ldx #(topline8*$A0)+16 9 + jsr ScrollIt + ldx #(topline9*$A0)+16 10 + jsr ScrollIt + ldx #(topline10*$A0)+16 11 + jsr ScrollIt + ldx #(topline11*$A0)+16 12 + jsr ScrollIt + ldx #(topline12*$A0)+16 13 + jsr ScrollIt + ldx #(topline13*$A0)+16 14 + jsr ScrollIt + ldx #(topline14*$A0)+16 15 + jsr ScrollIt + ldx #(topline15*$A0)+16 16 + jsr ScrollIt + ldx #(topline16*$A0)+16 17 + jsr ScrollIt + + phk + plb + jsr DrawNextStep + rts + + +SLOW_Scroll anop + ldx #(topline*$A0)+16 1 + jsr ScrollItSlow + ldx #(topline1*$A0)+16 2 + jsr ScrollItSlow + ldx #(topline2*$A0)+16 3 + jsr ScrollItSlow + ldx #(topline3*$A0)+16 4 + jsr ScrollItSlow + ldx #(topline4*$A0)+16 5 + jsr ScrollItSlow + ldx #(topline5*$A0)+16 6 + jsr ScrollItSlow + ldx #(topline6*$A0)+16 7 + jsr ScrollItSlow + ldx #(topline7*$A0)+16 8 + jsr ScrollItSlow + ldx #(topline8*$A0)+16 9 + jsr ScrollItSlow + ldx #(topline9*$A0)+16 10 + jsr ScrollItSlow + ldx #(topline10*$A0)+16 11 + jsr ScrollItSlow + ldx #(topline11*$A0)+16 12 + jsr ScrollItSlow + ldx #(topline12*$A0)+16 13 + jsr ScrollItSlow + ldx #(topline13*$A0)+16 14 + jsr ScrollItSlow + ldx #(topline14*$A0)+16 15 + jsr ScrollItSlow + ldx #(topline15*$A0)+16 16 + jsr ScrollItSlow + ldx #(topline16*$A0)+16 17 + jsr ScrollItSlow + + phk + plb + jsr DrawNextStep + rts + + +ScrollIt anop + lda |$2000,x + sta |$2000-4,x + + lda |$2002,x + sta |$2000-2,x + lda |$2004,x + sta |$2002-2,x + lda |$2006,x + sta |$2004-2,x + lda |$2008,x + sta |$2006-2,x + lda |$200A,x + sta |$2008-2,x + lda |$200C,x + sta |$200A-2,x + lda |$200E,x + sta |$200C-2,x + lda |$2010,x + sta |$200E-2,x + + lda |$2012,x + sta |$2010-2,x + lda |$2014,x + sta |$2012-2,x + lda |$2016,x + sta |$2014-2,x + lda |$2018,x + sta |$2016-2,x + lda |$201A,x + sta |$2018-2,x + lda |$201C,x + sta |$201A-2,x + lda |$201E,x + sta |$201C-2,x + lda |$2020,x + sta |$201E-2,x + + lda |$2022,x + sta |$2020-2,x + lda |$2024,x + sta |$2022-2,x + lda |$2026,x + sta |$2024-2,x + lda |$2028,x + sta |$2026-2,x + lda |$202A,x + sta |$2028-2,x + lda |$202C,x + sta |$202A-2,x + lda |$202E,x + sta |$202C-2,x + lda |$2030,x + sta |$202E-2,x + + lda |$2032,x + sta |$2030-2,x + lda |$2034,x + sta |$2032-2,x + lda |$2036,x + sta |$2034-2,x + lda |$2038,x + sta |$2036-2,x + lda |$203A,x + sta |$2038-2,x + lda |$203C,x + sta |$203A-2,x + lda |$203E,x + sta |$203C-2,x + lda |$2040,x + sta |$203E-2,x + + lda |$2042,x + sta |$2040-2,x + lda |$2044,x + sta |$2042-2,x + lda |$2046,x + sta |$2044-2,x + lda |$2048,x + sta |$2046-2,x + lda |$204A,x + sta |$2048-2,x + lda |$204C,x + sta |$204A-2,x + lda |$204E,x + sta |$204C-2,x + lda |$2050,x + sta |$204E-2,x + + lda |$2052,x + sta |$2050-2,x + lda |$2054,x + sta |$2052-2,x + lda |$2056,x + sta |$2054-2,x + lda |$2058,x + sta |$2056-2,x + lda |$205A,x + sta |$2058-2,x + lda |$205C,x + sta |$205A-2,x + lda |$205E,x + sta |$205C-2,x + lda |$2060,x + sta |$205E-2,x + + lda |$2062,x + sta |$2060-2,x + lda |$2064,x + sta |$2062-2,x + lda |$2066,x + sta |$2064-2,x + lda |$2068,x + sta |$2066-2,x + lda |$206A,x + sta |$2068-2,x + lda |$206C,x + sta |$206A-2,x + lda |$206E,x + sta |$206C-2,x + + + lda |$2070,x + sta |$206E-2,x + lda |$2072,x + sta |$2070-2,x + lda |$2074,x + sta |$2072-2,x + lda |$2076,x + sta |$2074-2,x + lda |$2078,x + sta |$2076-2,x + lda |$207A,x + sta |$2078-2,x + lda |$207C,x + sta |$207A-2,x + lda |$207E,x + sta |$207C-2,x + rts + + +ScrollItSlow anop + lda |$2000-2,x + sta |$2000-4,x + lda |$2000,x + sta |$2000-2,x + + lda |$2002,x + sta |$2000,x + lda |$2004,x + sta |$2002,x + lda |$2006,x + sta |$2004,x + lda |$2008,x + sta |$2006,x + lda |$200A,x + sta |$2008,x + lda |$200C,x + sta |$200A,x + lda |$200E,x + sta |$200C,x + lda |$2010,x + sta |$200E,x + + lda |$2012,x + sta |$2010,x + lda |$2014,x + sta |$2012,x + lda |$2016,x + sta |$2014,x + lda |$2018,x + sta |$2016,x + lda |$201A,x + sta |$2018,x + lda |$201C,x + sta |$201A,x + lda |$201E,x + sta |$201C,x + lda |$2020,x + sta |$201E,x + + lda |$2022,x + sta |$2020,x + lda |$2024,x + sta |$2022,x + lda |$2026,x + sta |$2024,x + lda |$2028,x + sta |$2026,x + lda |$202A,x + sta |$2028,x + lda |$202C,x + sta |$202A,x + lda |$202E,x + sta |$202C,x + lda |$2030,x + sta |$202E,x + + lda |$2032,x + sta |$2030,x + lda |$2034,x + sta |$2032,x + lda |$2036,x + sta |$2034,x + lda |$2038,x + sta |$2036,x + lda |$203A,x + sta |$2038,x + lda |$203C,x + sta |$203A,x + lda |$203E,x + sta |$203C,x + lda |$2040,x + sta |$203E,x + + lda |$2042,x + sta |$2040,x + lda |$2044,x + sta |$2042,x + lda |$2046,x + sta |$2044,x + lda |$2048,x + sta |$2046,x + lda |$204A,x + sta |$2048,x + lda |$204C,x + sta |$204A,x + lda |$204E,x + sta |$204C,x + lda |$2050,x + sta |$204E,x + + lda |$2052,x + sta |$2050,x + lda |$2054,x + sta |$2052,x + lda |$2056,x + sta |$2054,x + lda |$2058,x + sta |$2056,x + lda |$205A,x + sta |$2058,x + lda |$205C,x + sta |$205A,x + lda |$205E,x + sta |$205C,x + lda |$2060,x + sta |$205E,x + + lda |$2062,x + sta |$2060,x + lda |$2064,x + sta |$2062,x + lda |$2066,x + sta |$2064,x + lda |$2068,x + sta |$2066,x + lda |$206A,x + sta |$2068,x + lda |$206C,x + sta |$206A,x + lda |$206E,x + sta |$206C,x + lda |$2070,x + sta |$206E,x + + lda |$2072,x + sta |$2070,x + lda |$2074,x + sta |$2072,x + lda |$2076,x + sta |$2074,x + lda |$2078,x + sta |$2076,x + lda |$207A,x + sta |$2078,x + lda |$207C,x + sta |$207A,x + lda |$207E,x + sta |$207C,x + rts + + End +*-----------------------------------------------------------------------------* +FontDATA Data + +*ColTab anop +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$111,$111,$111' +* dc i'$222,$222,$222' +* dc i'$333,$333,$333' +* dc i'$444,$444,$444' +* dc i'$555,$555,$555' +* dc i'$666,$666,$666' +* dc i'$777,$777,$777' +* dc i'$888,$888,$888' +* dc i'$999,$999,$999' +* dc i'$aaa,$aaa,$aaa' +* dc i'$bbb,$bbb,$bbb' +* dc i'$ccc,$ccc,$ccc' +* dc i'$ddd,$ddd,$ddd' +* dc i'$eee,$eee,$eee' +* dc i'$fff,$fff,$fff' +* dc i'$eee,$eee,$eee' +* dc i'$ddd,$ddd,$ddd' +* dc i'$ccc,$ccc,$ccc' +* dc i'$bbb,$bbb,$bbb' +* dc i'$aaa,$aaa,$aaa' +* dc i'$999,$999,$999' +* dc i'$888,$888,$888' +* dc i'$777,$777,$777' +* dc i'$666,$666,$666' +* dc i'$555,$555,$555' +* dc i'$444,$444,$444' +* dc i'$333,$333,$333' +* dc i'$222,$222,$222' +* dc i'$111,$111,$111' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +*EndTab anop + +String anop + +LetterAddrTab anop + dc a'lspace,lexp,no,no,no,no,no,lapos,lshift9,lshift0,no,no' + dc a'lcom,ldash,lper,lslash' + dc a'l0,l1,l2,l3,l4,l5,l6,l7,l8,l9,lcol,lscol,no,no,no' + dc a'lquest,no,la' + dc a'lb,lc,ld,le,lf,lg,lh,li,lj,lk,ll,lm,ln,lo,lp,lq,lr,ls' + dc a'lt,lu,lv,lw,lx,ly,lz,no,lslash2' + dc a'no,no,no,no,la,lb,lc,ld,le,lf,lg,lh,li,lj,lk,ll,lm,ln' + dc a'lo,lp,lq,lr,ls,lt,lu,lv,lw,lx,ly,lz,no,no,no,no' + +* c' !"#$%&'()*+,-./' +* c'0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\' +* c']^_`abcdefghijklmnopqrstuvwxyz{|}~' + +PowerFontPal anop + dc h'0000 0500 0700 0a00 0c00 0f00' + dc h'f00f 0004 0008 0009 000a 000b' + dc h'000c 000d 000e 000f' + +no anop +lspace anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + +lshift9 ANOP + dc h'00000001255555500000' + dc h'00000025500000400000' + dc h'00000250000000400000' + dc h'00001500000000400000' + dc h'00002500000144400000' + dc h'00005000014400000000' + dc h'00005000040000000000' + dc h'00005000040000000000' + dc h'00005000040000000000' + dc h'00005000040000000000' + dc h'00005000040000000000' + dc h'00005000015400000000' + dc h'00002500000155500000' + dc h'00001500000000400000' + dc h'00000250000000400000' + dc h'00000025500000400000' + dc h'00000001254444400000' + +lshift0 ANOP + dc h'00005555552100000000' + dc h'00005000005520000000' + dc h'00005000000042000000' + dc h'00005000000004100000' + dc h'00005441000004200000' + dc h'00000004410000400000' + dc h'00000000040000400000' + dc h'00000000040000400000' + dc h'00000000040000400000' + dc h'00000000040000400000' + dc h'00000000040000400000' + dc h'00000004510000400000' + dc h'00005551000004200000' + dc h'00005000000004100000' + dc h'00005000000042000000' + dc h'00005000004420000000' + dc h'00005444442100000000' +lA anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444420000040' + dc h'00000000000052000040' + dc h'55555555555554000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444442000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000000444440' + +lB anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000140' + dc h'50000000000000000400' + dc h'50000000000000000140' + dc h'50000444444442000040' + dc h'50000400000005000040' + dc h'50000455555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +lC anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555500000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000255555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444444444440' + +lD anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555500000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000455555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +lE anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444444444440' + dc h'50000400000000000000' + dc h'50000455555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +lF anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444444444440' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'54444400000000000000' + +lG anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555500000000000000' + dc h'50000400000000000000' + dc h'50000400000005555550' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000255555555000040' + dc h'50000000000000000040' + dc h'50000000000000000140' + dc h'25000000000000001420' + dc h'02444444444444444200' + +lH anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005000040' + dc h'00000000000005000040' + dc h'55555555555555000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444444000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005444440' + +lI anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'00000055555550000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'55555550000044444440' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +lJ anop + dc h'00000000000005555550' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'55555500000005000040' + dc h'40000500000005000040' + dc h'40000500000005000040' + dc h'40000510000005000040' + dc h'40000255555552000040' + dc h'40000000000000000040' + dc h'41000000000000000140' + dc h'24100000000000001420' + dc h'02444444444444444200' + +lK anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000400000015000040' + dc h'50000400000024000040' + dc h'54444400000151000140' + dc h'00000000001520000230' + dc h'55555555554200001410' + dc h'50000000000000014200' + dc h'50000000000000042000' + dc h'50000000000000014200' + dc h'50000444444200001410' + dc h'50000400001420000230' + dc h'50000400000141000140' + dc h'50000400000023000040' + dc h'50000400000014000040' + dc h'50000400000004000040' + dc h'54444400000004444440' + +lL anop + dc h'55555500000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'54444400000000000000' + dc h'00000000000000000000' + dc h'55555500000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000455555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +lM anop + dc h'02555555202555555200' + dc h'25000000425000000420' + dc h'50000000252000000040' + dc h'50000000000000000040' + dc h'54444442000000000040' + dc h'00000005000242000040' + dc h'55555505000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405444405000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005444440' + +lN anop + dc h'55555500000005555550' + dc h'50000040000005000040' + dc h'50000004000005000040' + dc h'50000000400005000040' + dc h'54444444440005000040' + dc h'00000000000005000040' + dc h'55555555555005000040' + dc h'50000000000405000040' + dc h'50000000000045000040' + dc h'50000000000005000040' + dc h'50000444400000000040' + dc h'50000400050000000040' + dc h'50000400005000000040' + dc h'50000400000500000040' + dc h'50000400000050000040' + dc h'50000400000005000040' + dc h'54444400000001444440' + +lO anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555500000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000255555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +lP anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'50000444444444444200' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'54444400000000000000' + +lQ anop + dc h'02555555555555555200' + dc h'25000000000000000520' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'54444400000005000040' + dc h'50000400000525000040' + dc h'50000400005045000040' + dc h'50000400050005000040' + dc h'50000400500000000040' + dc h'50000400250000000040' + dc h'50000255555000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444444444440' + +lR anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'50000004444444444200' + dc h'05000000400000000000' + dc h'00500000040000000000' + dc h'00050000004000000000' + dc h'00005000000400000000' + dc h'00000500000040000000' + dc h'00000054444444000000' + +lS anop + dc h'02555555555555555550' + dc h'25000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444442000040' + dc h'00000000000004000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +lT anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'00000055555550000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000054444440000000' + +lU anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005000040' + dc h'00000000000005000040' + dc h'55555500000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000255555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +lV anop + dc h'55555500000000005550' + dc h'50000400000000050040' + dc h'50000400000000500040' + dc h'50000400000005000040' + dc h'54444400000050000040' + dc h'00000000000500000040' + dc h'55555500005000000400' + dc h'50000400050000004000' + dc h'50000400500000040000' + dc h'50000405000000400000' + dc h'50000450000004000000' + dc h'50000400000040000000' + dc h'50000000000400000000' + dc h'50000000004000000000' + dc h'50000000040000000000' + dc h'50000000400000000000' + dc h'54444444000000000000' + +lW anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005000040' + dc h'00000000000005000040' + dc h'55555505555505000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000252000252000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000242000000040' + dc h'25000000405000000420' + dc h'02444444202444444200' + +lX anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000410000015000040' + dc h'50000320000024000040' + dc h'54444441000151000140' + dc h'00000000001520000230' + dc h'15555555554200001410' + dc h'02410000000000014200' + dc h'00240000000000042000' + dc h'02510000000000014200' + dc h'15100002454200001410' + dc h'42000024101520000230' + dc h'51000141000151000140' + dc h'50000320000024000040' + dc h'50000410000015000040' + dc h'50000400000005000040' + dc h'54444400000005444440' + +lY anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000410000015000040' + dc h'50000320000024000040' + dc h'54444441000151000140' + dc h'00000000001520000230' + dc h'15555555554200001410' + dc h'02500000000000004200' + dc h'00250000000000142000' + dc h'00015100000001410000' + dc h'00000520000014000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000055444440000000' + +lZ anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000400' + dc h'54444444444444444000' + dc h'00000000000000000000' + dc h'00000005555555500000' + dc h'00000050000004000000' + dc h'00000500000040000000' + dc h'00005000000400000000' + dc h'00050000004000000000' + dc h'00500000040000000000' + dc h'05000000455555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +l0 anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555500055505555550' + dc h'50000400500405000040' + dc h'50000405000405000040' + dc h'50000450000405000040' + dc h'50000400000405000040' + dc h'50000000004005000040' + dc h'50000000045552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +l1 anop + dc h'00000555555550000000' + dc h'00005000000040000000' + dc h'00050000000040000000' + dc h'00500000000040000000' + dc h'05444444444440000000' + dc h'00000000000000000000' + dc h'00000055555550000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'55555550000044444440' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +l2 anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'02555555555555555550' + dc h'25000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'50000244444444444200' + dc h'50000400000000000000' + dc h'50000255555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +l3 anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000140' + dc h'50000000000000000410' + dc h'50000000000000000140' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +l4 anop + dc h'00000555555505555550' + dc h'00005000004005000040' + dc h'00050000040005000040' + dc h'00500000400005000040' + dc h'05444444000005000040' + dc h'00000000000005000040' + dc h'55555555555555000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005444440' + +l5 anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +l6 anop + dc h'02555555555555555550' + dc h'25000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444442000040' + dc h'50000400000005000040' + dc h'50000455555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +l7 anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000400' + dc h'54444444444444444000' + dc h'00000000000000000000' + dc h'00000005555555500000' + dc h'00000050000004000000' + dc h'00000500000040000000' + dc h'00005000000400000000' + dc h'00050000004000000000' + dc h'00500000040000000000' + dc h'05000000400000000000' + dc h'50000004000000000000' + dc h'50000040000000000000' + dc h'50000400000000000000' + dc h'54444000000000000000' + +l8 anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'51000000000000000140' + dc h'04000000000000000400' + dc h'51000000000000000140' + dc h'50000244444442000040' + dc h'50000400000005000040' + dc h'50000255555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +l9 anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000244444442000040' + dc h'50000400000005000040' + dc h'50000255555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +lexp anop + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + dc h'00000000000000000000' + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + +ldash anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + +lcol anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + dc h'00000000000000000000' + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + +lapos anop + dc h'00000055555500000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000054400400000000' + dc h'00000000500400000000' + dc h'00000000504200000000' + dc h'00000000542000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + +lcom anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000055555500000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000054400400000000' + dc h'00000000500400000000' + dc h'00000000504200000000' + dc h'00000000542000000000' + +lscol anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000055555500000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000054444400000000' + dc h'00000000000000000000' + dc h'00000055555500000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000054400400000000' + dc h'00000000500400000000' + dc h'00000000504200000000' + dc h'00000000542000000000' + +lper anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + +lSlash anop + dc h'00000000000005555550' + dc h'00000000000050000040' + dc h'00000000000500000040' + dc h'00000000005000000400' + dc h'00000000055444444000' + dc h'00000000000000000000' + dc h'00000005555555400000' + dc h'00000050000004000000' + dc h'00000500000040000000' + dc h'00005000000400000000' + dc h'00050000004000000000' + dc h'00500000040000000000' + dc h'05000000400000000000' + dc h'50000004000000000000' + dc h'50000040000000000000' + dc h'50000400000000000000' + dc h'54444000000000000000' + +lslash2 anop + dc h'55555500000000000000' + dc h'50000040000000000000' + dc h'50000004000000000000' + dc h'05000000400000000000' + dc h'00544444440000000000' + dc h'00000000000000000000' + dc h'00005555555500000000' + dc h'00000500000040000000' + dc h'00000050000004000000' + dc h'00000005000000400000' + dc h'00000000500000040000' + dc h'00000000050000004000' + dc h'00000000005000000400' + dc h'00000000000500000040' + dc h'00000000000050000040' + dc h'00000000000005000040' + dc h'00000000000000544440' + +lquest anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'00000025555552000040' + dc h'00000250000000000040' + dc h'00000500000000000040' + dc h'00000500000000000420' + dc h'00000544444444444200' + dc h'00000000000000000000' + dc h'00000555555000000000' + dc h'00000500004000000000' + dc h'00000500004000000000' + dc h'00000500004000000000' + dc h'00000544444000000000' + + msb off +*NameStr entry +* str 'Twilight PowerScroll 1.0 module. ' +* +*NameStr2 entry +* str 'by Jim Maricondo, Matt Keller, and Jonah Stich. ' + +length entry + ds 2 +slowflag entry + ds 2 +noZip entry + ds 2 +taboffset ds 2 + +MyPortLoc anop +SCB dc i'$0080' portSCB +Pix dc i4'$E12000' ptrToPixImage + dc i'$00A0' width in bytes of each line in image +bounds dc i'0,0' boundary rectangle +mode dc i'200,640' was reverse! +MyPort ds $AA +orgPort ds 4 + + End +*-----------------------------------------------------------------------------* +*MemoryError Start +* +* pha +* PushLong #0 +* _SysFailMgr +* +* End +*---------------------------- \ No newline at end of file diff --git a/source/twilight/sorry/powerscroll/pmod2.asm.c b/source/twilight/sorry/powerscroll/pmod2.asm.c new file mode 100644 index 0000000..acaa2ff --- /dev/null +++ b/source/twilight/sorry/powerscroll/pmod2.asm.c @@ -0,0 +1,1917 @@ + + msb off + longa on + longi on + mcopy power.mac + mcopy 18/m16.msc + mcopy 18/m16.util2 + mcopy 18/m16.quickdraw +*-----------------------------------------------------------------------------* +Letter gequ 0 +Position gequ Letter+4 +Stage gequ Position+2 +lines gequ Stage+2 +MasterID gequ lines+2 +MyID gequ MasterID+2 +twice gequ MyID+2 +Speed gequ twice+2 +bordercol gequ speed+2 + +topline gequ 91 +topline1 gequ topline+1 +topline2 gequ topline1+1 +topline3 gequ topline2+1 +topline4 gequ topline3+1 +topline5 gequ topline4+1 +topline6 gequ topline5+1 +topline7 gequ topline6+1 +topline8 gequ topline7+1 +topline9 gequ topline8+1 +topline10 gequ topline9+1 +topline11 gequ topline10+1 +topline12 gequ topline11+1 +topline13 gequ topline12+1 +topline14 gequ topline13+1 +topline15 gequ topline14+1 +topline16 gequ topline15+1 +topline18 gequ topLine16+2 + +shrb gequ $E1E1 +NewVideo gequ $E0C029 +SHR gequ $E12000 +SCBs gequ $E19D00 +Palette0 gequ $E19E00 +Palette1 gequ $E19E20 +Gun gequ $E0C02E +Border gequ $E0C034 +*-----------------------------------------------------------------------------* +PowerDemo Start + Using FontDATA + + phb + phk + plb + + brl beginIt + + dc c' Twilight PowerScroll Module 1.0. ' + dc c' January 19, 1991. This module and all modules and ' + dc c'all other files distributed with Twilight 2.0 with the ' + dc c'exception of ColorStrobe are copyrighted 1991 by Jim ' + dc c'Maricondo and Jonah Stich. All rights reserved. ' + +beginIt LongResult + _GetPort + PullLong orgPort + + PushLong #MyPort Open a new grafPort + _OpenPort + + PushLong #MyPortLoc make it point to our memory + _SetPortLoc + + PushLong #bounds + _SetPortRect + + shortm + lda #$C1 turn on/linearize SHR + sta >NewVideo + longm + + shortm + lda >Border save old border color and make border + pha color now black + and #$0F + sta bordercol + pla + and #$F0 + sta >Border + longm + + ldx #$8000-2 zero shr display buffer + lda #0 +zeroSHR sta >SHR,x + dex + dex + bpl zeroSHR + +* ldx #0 +* txa +*scb2 sta >SCBs,x +* inx +* inx +* cpx #144 +* blt scb2 + + ldx #0 + lda #$8181 +scb3 sta >SCBs+144,x + inx + inx + cpx #54 + blt scb3 + +* lda #$0000 +* sta >Palette1 + + ldx #$20-2 +palette lda PowerFontPal,x + sta >Palette0,x + dex + dex + bpl palette + + PushWord #15 foreground color of text: white + _SetForeColor + PushWord #0 background color: black + _SetBackColor + + PushWord #20 horizontal (x) + PushWord #160-6 vertical (y) + _MoveTo + PushLong #NameStr + _DrawString + + PushWord #20 horizontal (x) + PushWord #169-6 vertical (y) + _MoveTo + PushLong #NameStr2 + _DrawString + + DefineStack +oldDirectPage word +oldBank byte +returnAddress block 3 +MasterID word +MovePtr long +TextPtr long + + phd Right here we're doing several things.. + tsc First we're checking if the first 2 + tcd letters of the scroll text are "@@". + lda [TextPtr] If they are, then we set flags to tell + and #$00FF our draw and scroll routines to scroll + sta |length slow. + stz slowflag Then we're getting the length byte of + ldy #1 the pascal string of text that was + lda [TextPtr],y passed to us. We store it as the + and #$7F7F length of the string for later use. + msb off Lastly, we're taking the address of the + cmp #'@@' textedit pascal string+1 and storing + bne noSlow it directly to the operand field of a + sta slowflag lda >Long opcode. This way we can use +noSlow lda TextPtr,s >long,x addressing instead of [dp],y. + inc a [We're adding 1 to it to skip over the + sta FillStr1+1 length byte at the beginning of it] + sta FillStr2+1 + sta FillStr3+1 + lda TextPtr+2,s + sta FillStr1+3 + sta FillStr2+3 + sta FillStr3+3 + shortm + lda #$EA + sta FillStr1+4 + sta FillStr2+4 + sta FillStr3+4 + longm + pld + + stz Speed Here we're just initializing variables + lda slowFlag and setting speed based on the first + beq fastok speed flag set up above. + sta speed +fastok anop + stz Stage + stz Position + lda #^No + sta Letter+2 + lda #No + sta Letter + + phd +GetChar anop + pld + + ldx TabOffset This is our color cycle routine. It + cpx #EndTab-ColTab cycles the credits. :) + blt ok + stz TabOffset + ldx #0 +ok anop + lda ColTab,x + sta >Palette1+$6 + sta >Palette1+$E + sta >Palette1+$16 + sta >Palette1+$1E + inc TabOffset + inc TabOffset + + shortm +wait lda >Gun We wait for the electron gun to be + cmp #(topline18/2)+$80 refreshing the line below the last + blt wait line of our scroll before we start + longm redrawing, so the drawing won't tear. + + jsr Scroll Scroll over our text! + +CheckOther anop Now check if a key was pressed, etc. + phd + tsc + tcd + lda [MovePtr] + beq GetChar + + pld If so, quit. + + PushLong orgPort + _SetPort restore original port + + shortm restore users border color + lda >Border + and #$F0 + ora Border + longmx + + plb + + lda 2,s Move up RTL on stack.. + sta 12,s + lda 1,s + sta 11,s + + tsc Remove input paramaters + clc + adc #10 (MasterID+MovePtr+TextPtr) + tcs + clc + rtl + + End +*-----------------------------------------------------------------------------* +DrawNextStep Start + Using FontDATA + + lda Speed Check if speed flag says to go fast + jeq FAST or slow. + +SLOW anop + lda Stage + beq Stage0_slow + cmp #1 + beq Stage1_slow + cmp #2 + beq Stage2_slow + cmp #3 + beq Stage3_slow + +Stage4_slow anop + ldy #4*2 Draw last 1/4th of this letter. + jsr drawUpdate + stz Stage Start at beginning of next letter. + inc Position Move one letter over. + rts + +Stage0_slow anop + lda length + cmp Position + bge contHere + stz Position +contHere ldx Position +fillStr1 entry + lda >String,x + nop + and #$007F + cmp #$20 + bge OkVar1 + inc Position + bra stage0_slow + +okVar1 anop + cmp #$7F + blt OkVar2 + inc Position + bra stage0_slow + +okVar2 anop + sec + sbc #$20 + asl a + tax + lda LetterAddrTab,x + sta Letter + + ldy #0*2 + jsr drawUpdate + lda #1 + sta Stage + rts + +Stage1_slow anop + ldy #1*2 + jsr drawUpdate + lda #2 + sta Stage + rts + +Stage2_slow anop + ldy #2*2 + jsr drawUpdate + lda #3 + sta Stage + rts + +Stage3_slow anop + ldy #3*2 + jsr drawUpdate + lda #4 + sta Stage + rts + +DrawUpdate anop + lda #17 # of lines of each character + sta lines + ldx #0 +s4_loop_slow lda [Letter],y + sta >(topLine*$A0)+SHR+$8E,x + tya + clc + adc #10 width in bytes of each character + tay + txa + clc + adc #$A0 length in bytes of a SHR line + tax + dec lines + bne s4_loop_slow + rts + + + +FAST anop + lda Stage + beq Stage0 + cmp #1 + beq Stage1 + cmp #2 + beq Stage2 + cmp #3 + beq Stage3 + +Stage4 anop + ldy #6 Draw last 1/6th of this pair of letters. + jsr DrawLong + stz Stage Start at beginning of next letter. + inc Position Move one letter over. + rts + + +Stage0 anop + lda length + cmp Position + bge contHere2 + stz Position +contHere2 ldx Position +fillStr2 entry + lda >String,x + nop + and #$007F + cmp #$20 + bge OkVar3 + inc Position + bra stage0 + +okVar3 anop + cmp #$7F + blt OkVar4 + inc Position + bra stage0 + +okVar4 anop + sec + sbc #$20 + asl a + tax + lda LetterAddrTab,x + sta Letter + + ldy #0 + jsr DrawLong + lda #1 + sta Stage + rts + + +Stage1 anop + ldy #4 + jsr DrawLong + lda #2 + sta Stage + rts + + +Stage3 anop + ldy #2 + jsr DrawLong + lda #4 + sta Stage + rts + + +Stage2 anop + ldy #8 + lda #17 # of lines of each character + sta lines + ldx #0 +s6_loop lda [Letter],y + sta >(topline*$A0)+SHR+$8C,x + tya + clc + adc #10 width in bytes of each character + tay + txa + clc + adc #$A0 length in bytes of a SHR line + tax + dec lines + bne s6_loop + + inc Position +loooop anop + lda length + cmp Position + bge contHere3 ;bne + stz Position +contHere3 ldx position +fillStr3 entry + lda >String,x + nop + and #$007F + cmp #$20 + bge OkVar5 + inc Position + bra loooop + +okVar5 anop + cmp #$7F + blt OkVar6 + inc Position + bra loooop + +okVar6 anop + sec + sbc #$20 + asl a + tax + lda LetterAddrTab,x + sta Letter + + ldy #0 + lda #17 # of lines of each character + sta lines + ldx #0 +s7_loop lda [Letter],y + sta >(topline*$A0)+SHR+$8E,x + tya + clc + adc #10 width in bytes of each character + tay + txa + clc + adc #$A0 length in bytes of a SHR line + tax + dec lines + bne s7_loop + + lda #3 + sta Stage + rts + + +DrawLong anop + lda #17 # of lines of each character + sta lines + ldx #0 +s4_loop lda #2 + sta twice +s5_loop lda [Letter],y + sta >(topLine*$A0)+SHR+$8C,x + iny + iny + inx + inx + dec twice + bne s5_loop + tya + clc + adc #10-4 width in bytes of each character + tay + txa + clc + adc #$A0-4 length in bytes of a SHR line + tax + dec lines + bne s4_loop + rts + + End +*-----------------------------------------------------------------------------* +Scroll Start + Using FontDATA + + pea SHRb + plb + plb + + lda Speed + bne SLOW_Scroll + + ldx #(topline*$A0)+16 1 + jsr ScrollIt + ldx #(topline1*$A0)+16 2 + jsr ScrollIt + ldx #(topline2*$A0)+16 3 + jsr ScrollIt + ldx #(topline3*$A0)+16 4 + jsr ScrollIt + ldx #(topline4*$A0)+16 5 + jsr ScrollIt + ldx #(topline5*$A0)+16 6 + jsr ScrollIt + ldx #(topline6*$A0)+16 7 + jsr ScrollIt + ldx #(topline7*$A0)+16 8 + jsr ScrollIt + ldx #(topline8*$A0)+16 9 + jsr ScrollIt + ldx #(topline9*$A0)+16 10 + jsr ScrollIt + ldx #(topline10*$A0)+16 11 + jsr ScrollIt + ldx #(topline11*$A0)+16 12 + jsr ScrollIt + ldx #(topline12*$A0)+16 13 + jsr ScrollIt + ldx #(topline13*$A0)+16 14 + jsr ScrollIt + ldx #(topline14*$A0)+16 15 + jsr ScrollIt + ldx #(topline15*$A0)+16 16 + jsr ScrollIt + ldx #(topline16*$A0)+16 17 + jsr ScrollIt + + phk + plb + jsr DrawNextStep + rts + + +SLOW_Scroll anop + ldx #(topline*$A0)+16 1 + jsr ScrollItSlow + ldx #(topline1*$A0)+16 2 + jsr ScrollItSlow + ldx #(topline2*$A0)+16 3 + jsr ScrollItSlow + ldx #(topline3*$A0)+16 4 + jsr ScrollItSlow + ldx #(topline4*$A0)+16 5 + jsr ScrollItSlow + ldx #(topline5*$A0)+16 6 + jsr ScrollItSlow + ldx #(topline6*$A0)+16 7 + jsr ScrollItSlow + ldx #(topline7*$A0)+16 8 + jsr ScrollItSlow + ldx #(topline8*$A0)+16 9 + jsr ScrollItSlow + ldx #(topline9*$A0)+16 10 + jsr ScrollItSlow + ldx #(topline10*$A0)+16 11 + jsr ScrollItSlow + ldx #(topline11*$A0)+16 12 + jsr ScrollItSlow + ldx #(topline12*$A0)+16 13 + jsr ScrollItSlow + ldx #(topline13*$A0)+16 14 + jsr ScrollItSlow + ldx #(topline14*$A0)+16 15 + jsr ScrollItSlow + ldx #(topline15*$A0)+16 16 + jsr ScrollItSlow + ldx #(topline16*$A0)+16 17 + jsr ScrollItSlow + + phk + plb + jsr DrawNextStep + rts + + +ScrollIt anop + lda |$2000,x + sta |$2000-4,x + + lda |$2002,x + sta |$2000-2,x + lda |$2004,x + sta |$2002-2,x + lda |$2006,x + sta |$2004-2,x + lda |$2008,x + sta |$2006-2,x + lda |$200A,x + sta |$2008-2,x + lda |$200C,x + sta |$200A-2,x + lda |$200E,x + sta |$200C-2,x + lda |$2010,x + sta |$200E-2,x + + lda |$2012,x + sta |$2010-2,x + lda |$2014,x + sta |$2012-2,x + lda |$2016,x + sta |$2014-2,x + lda |$2018,x + sta |$2016-2,x + lda |$201A,x + sta |$2018-2,x + lda |$201C,x + sta |$201A-2,x + lda |$201E,x + sta |$201C-2,x + lda |$2020,x + sta |$201E-2,x + + lda |$2022,x + sta |$2020-2,x + lda |$2024,x + sta |$2022-2,x + lda |$2026,x + sta |$2024-2,x + lda |$2028,x + sta |$2026-2,x + lda |$202A,x + sta |$2028-2,x + lda |$202C,x + sta |$202A-2,x + lda |$202E,x + sta |$202C-2,x + lda |$2030,x + sta |$202E-2,x + + lda |$2032,x + sta |$2030-2,x + lda |$2034,x + sta |$2032-2,x + lda |$2036,x + sta |$2034-2,x + lda |$2038,x + sta |$2036-2,x + lda |$203A,x + sta |$2038-2,x + lda |$203C,x + sta |$203A-2,x + lda |$203E,x + sta |$203C-2,x + lda |$2040,x + sta |$203E-2,x + + lda |$2042,x + sta |$2040-2,x + lda |$2044,x + sta |$2042-2,x + lda |$2046,x + sta |$2044-2,x + lda |$2048,x + sta |$2046-2,x + lda |$204A,x + sta |$2048-2,x + lda |$204C,x + sta |$204A-2,x + lda |$204E,x + sta |$204C-2,x + lda |$2050,x + sta |$204E-2,x + + lda |$2052,x + sta |$2050-2,x + lda |$2054,x + sta |$2052-2,x + lda |$2056,x + sta |$2054-2,x + lda |$2058,x + sta |$2056-2,x + lda |$205A,x + sta |$2058-2,x + lda |$205C,x + sta |$205A-2,x + lda |$205E,x + sta |$205C-2,x + lda |$2060,x + sta |$205E-2,x + + lda |$2062,x + sta |$2060-2,x + lda |$2064,x + sta |$2062-2,x + lda |$2066,x + sta |$2064-2,x + lda |$2068,x + sta |$2066-2,x + lda |$206A,x + sta |$2068-2,x + lda |$206C,x + sta |$206A-2,x + lda |$206E,x + sta |$206C-2,x + + + lda |$2070,x + sta |$206E-2,x + lda |$2072,x + sta |$2070-2,x + lda |$2074,x + sta |$2072-2,x + lda |$2076,x + sta |$2074-2,x + lda |$2078,x + sta |$2076-2,x + lda |$207A,x + sta |$2078-2,x + lda |$207C,x + sta |$207A-2,x + lda |$207E,x + sta |$207C-2,x + rts + + +ScrollItSlow anop + lda |$2000-2,x + sta |$2000-4,x + lda |$2000,x + sta |$2000-2,x + + lda |$2002,x + sta |$2000,x + lda |$2004,x + sta |$2002,x + lda |$2006,x + sta |$2004,x + lda |$2008,x + sta |$2006,x + lda |$200A,x + sta |$2008,x + lda |$200C,x + sta |$200A,x + lda |$200E,x + sta |$200C,x + lda |$2010,x + sta |$200E,x + + lda |$2012,x + sta |$2010,x + lda |$2014,x + sta |$2012,x + lda |$2016,x + sta |$2014,x + lda |$2018,x + sta |$2016,x + lda |$201A,x + sta |$2018,x + lda |$201C,x + sta |$201A,x + lda |$201E,x + sta |$201C,x + lda |$2020,x + sta |$201E,x + + lda |$2022,x + sta |$2020,x + lda |$2024,x + sta |$2022,x + lda |$2026,x + sta |$2024,x + lda |$2028,x + sta |$2026,x + lda |$202A,x + sta |$2028,x + lda |$202C,x + sta |$202A,x + lda |$202E,x + sta |$202C,x + lda |$2030,x + sta |$202E,x + + lda |$2032,x + sta |$2030,x + lda |$2034,x + sta |$2032,x + lda |$2036,x + sta |$2034,x + lda |$2038,x + sta |$2036,x + lda |$203A,x + sta |$2038,x + lda |$203C,x + sta |$203A,x + lda |$203E,x + sta |$203C,x + lda |$2040,x + sta |$203E,x + + lda |$2042,x + sta |$2040,x + lda |$2044,x + sta |$2042,x + lda |$2046,x + sta |$2044,x + lda |$2048,x + sta |$2046,x + lda |$204A,x + sta |$2048,x + lda |$204C,x + sta |$204A,x + lda |$204E,x + sta |$204C,x + lda |$2050,x + sta |$204E,x + + lda |$2052,x + sta |$2050,x + lda |$2054,x + sta |$2052,x + lda |$2056,x + sta |$2054,x + lda |$2058,x + sta |$2056,x + lda |$205A,x + sta |$2058,x + lda |$205C,x + sta |$205A,x + lda |$205E,x + sta |$205C,x + lda |$2060,x + sta |$205E,x + + lda |$2062,x + sta |$2060,x + lda |$2064,x + sta |$2062,x + lda |$2066,x + sta |$2064,x + lda |$2068,x + sta |$2066,x + lda |$206A,x + sta |$2068,x + lda |$206C,x + sta |$206A,x + lda |$206E,x + sta |$206C,x + lda |$2070,x + sta |$206E,x + + lda |$2072,x + sta |$2070,x + lda |$2074,x + sta |$2072,x + lda |$2076,x + sta |$2074,x + lda |$2078,x + sta |$2076,x + lda |$207A,x + sta |$2078,x + lda |$207C,x + sta |$207A,x + lda |$207E,x + sta |$207C,x + rts + + End +*-----------------------------------------------------------------------------* +FontDATA Data + +ColTab anop + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$111,$111,$111' + dc i'$222,$222,$222' + dc i'$333,$333,$333' + dc i'$444,$444,$444' + dc i'$555,$555,$555' + dc i'$666,$666,$666' + dc i'$777,$777,$777' + dc i'$888,$888,$888' + dc i'$999,$999,$999' + dc i'$aaa,$aaa,$aaa' + dc i'$bbb,$bbb,$bbb' + dc i'$ccc,$ccc,$ccc' + dc i'$ddd,$ddd,$ddd' + dc i'$eee,$eee,$eee' + dc i'$fff,$fff,$fff' + dc i'$eee,$eee,$eee' + dc i'$ddd,$ddd,$ddd' + dc i'$ccc,$ccc,$ccc' + dc i'$bbb,$bbb,$bbb' + dc i'$aaa,$aaa,$aaa' + dc i'$999,$999,$999' + dc i'$888,$888,$888' + dc i'$777,$777,$777' + dc i'$666,$666,$666' + dc i'$555,$555,$555' + dc i'$444,$444,$444' + dc i'$333,$333,$333' + dc i'$222,$222,$222' + dc i'$111,$111,$111' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +EndTab anop + +String anop + +LetterAddrTab anop + dc a'lspace,lexp,no,no,no,no,no,lapos,no,no,no,no' + dc a'lcom,ldash,lper,lslash' + dc a'l0,l1,l2,l3,l4,l5,l6,l7,l8,l9,lcol,lscol,no,no,no' + dc a'lquest,no,la' + dc a'lb,lc,ld,le,lf,lg,lh,li,lj,lk,ll,lm,ln,lo,lp,lq,lr,ls' + dc a'lt,lu,lv,lw,lx,ly,lz,no,lslash2' + dc a'no,no,no,no,la,lb,lc,ld,le,lf,lg,lh,li,lj,lk,ll,lm,ln' + dc a'lo,lp,lq,lr,ls,lt,lu,lv,lw,lx,ly,lz,no,no,no,no' + +* c' !"#$%&'()*+,-./' +* c'0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\' +* c']^_`abcdefghijklmnopqrstuvwxyz{|}~' + +PowerFontPal anop + dc h'0000 0500 0700 0a00 0c00 0f00' + dc h'f00f 0004 0008 0009 000a 000b' + dc h'000c 000d 000e 000f' + +no anop +lspace anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + +lA anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444420000040' + dc h'00000000000052000040' + dc h'55555555555554000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444442000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000000444440' + +lB anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000140' + dc h'50000000000000000400' + dc h'50000000000000000140' + dc h'50000444444442000040' + dc h'50000400000005000040' + dc h'50000455555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +lC anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555500000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000255555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444444444440' + +lD anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555500000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000455555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +lE anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444444444440' + dc h'50000400000000000000' + dc h'50000455555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +lF anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444444444440' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'54444400000000000000' + +lG anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555500000000000000' + dc h'50000400000000000000' + dc h'50000400000005555550' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000255555555000040' + dc h'50000000000000000040' + dc h'50000000000000000140' + dc h'25000000000000001420' + dc h'02444444444444444200' + +lH anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005000040' + dc h'00000000000005000040' + dc h'55555555555555000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444444000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005444440' + +lI anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'00000055555550000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'55555550000044444440' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +lJ anop + dc h'00000000000005555550' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'55555500000005000040' + dc h'40000500000005000040' + dc h'40000500000005000040' + dc h'40000510000005000040' + dc h'40000255555552000040' + dc h'40000000000000000040' + dc h'41000000000000000140' + dc h'24100000000000001420' + dc h'02444444444444444200' + +lK anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000400000015000040' + dc h'50000400000024000040' + dc h'54444400000151000140' + dc h'00000000001520000230' + dc h'55555555554200001410' + dc h'50000000000000014200' + dc h'50000000000000042000' + dc h'50000000000000014200' + dc h'50000444444200001410' + dc h'50000400001420000230' + dc h'50000400000141000140' + dc h'50000400000023000040' + dc h'50000400000014000040' + dc h'50000400000004000040' + dc h'54444400000004444440' + +lL anop + dc h'55555500000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'54444400000000000000' + dc h'00000000000000000000' + dc h'55555500000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000455555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +lM anop + dc h'02555555202555555200' + dc h'25000000425000000420' + dc h'50000000252000000040' + dc h'50000000000000000040' + dc h'54444442000000000040' + dc h'00000005000242000040' + dc h'55555505000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405444405000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005444440' + +lN anop + dc h'55555500000005555550' + dc h'50000040000005000040' + dc h'50000004000005000040' + dc h'50000000400005000040' + dc h'54444444440005000040' + dc h'00000000000005000040' + dc h'55555555555005000040' + dc h'50000000000405000040' + dc h'50000000000045000040' + dc h'50000000000005000040' + dc h'50000444400000000040' + dc h'50000400050000000040' + dc h'50000400005000000040' + dc h'50000400000500000040' + dc h'50000400000050000040' + dc h'50000400000005000040' + dc h'54444400000001444440' + +lO anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555500000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000255555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +lP anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'50000444444444444200' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'54444400000000000000' + +lQ anop + dc h'02555555555555555200' + dc h'25000000000000000520' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'54444400000005000040' + dc h'50000400000525000040' + dc h'50000400005045000040' + dc h'50000400050005000040' + dc h'50000400500000000040' + dc h'50000400250000000040' + dc h'50000255555000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444444444440' + +lR anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'50000004444444444200' + dc h'05000000400000000000' + dc h'00500000040000000000' + dc h'00050000004000000000' + dc h'00005000000400000000' + dc h'00000500000040000000' + dc h'00000054444444000000' + +lS anop + dc h'02555555555555555550' + dc h'25000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444442000040' + dc h'00000000000004000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +lT anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'00000055555550000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000054444440000000' + +lU anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005000040' + dc h'00000000000005000040' + dc h'55555500000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000255555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +lV anop + dc h'55555500000000005550' + dc h'50000400000000050040' + dc h'50000400000000500040' + dc h'50000400000005000040' + dc h'54444400000050000040' + dc h'00000000000500000040' + dc h'55555500005000000400' + dc h'50000400050000004000' + dc h'50000400500000040000' + dc h'50000405000000400000' + dc h'50000450000004000000' + dc h'50000400000040000000' + dc h'50000000000400000000' + dc h'50000000004000000000' + dc h'50000000040000000000' + dc h'50000000400000000000' + dc h'54444444000000000000' + +lW anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005000040' + dc h'00000000000005000040' + dc h'55555505555505000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000252000252000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000242000000040' + dc h'25000000405000000420' + dc h'02444444202444444200' + +lX anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000410000015000040' + dc h'50000320000024000040' + dc h'54444441000151000140' + dc h'00000000001520000230' + dc h'15555555554200001410' + dc h'02410000000000014200' + dc h'00240000000000042000' + dc h'02510000000000014200' + dc h'15100002454200001410' + dc h'42000024101520000230' + dc h'51000141000151000140' + dc h'50000320000024000040' + dc h'50000410000015000040' + dc h'50000400000005000040' + dc h'54444400000005444440' + +lY anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000410000015000040' + dc h'50000320000024000040' + dc h'54444441000151000140' + dc h'00000000001520000230' + dc h'15555555554200001410' + dc h'02500000000000004200' + dc h'00250000000000142000' + dc h'00015100000001410000' + dc h'00000520000014000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000055444440000000' + +lZ anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000400' + dc h'54444444444444444000' + dc h'00000000000000000000' + dc h'00000005555555500000' + dc h'00000050000004000000' + dc h'00000500000040000000' + dc h'00005000000400000000' + dc h'00050000004000000000' + dc h'00500000040000000000' + dc h'05000000455555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +l0 anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555500055505555550' + dc h'50000400500405000040' + dc h'50000405000405000040' + dc h'50000450000405000040' + dc h'50000400000405000040' + dc h'50000000004005000040' + dc h'50000000045552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +l1 anop + dc h'00000555555550000000' + dc h'00005000000040000000' + dc h'00050000000040000000' + dc h'00500000000040000000' + dc h'05444444444440000000' + dc h'00000000000000000000' + dc h'00000055555550000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'55555550000044444440' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +l2 anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'02555555555555555550' + dc h'25000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'50000244444444444200' + dc h'50000400000000000000' + dc h'50000255555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +l3 anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000140' + dc h'50000000000000000410' + dc h'50000000000000000140' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +l4 anop + dc h'00000555555505555550' + dc h'00005000004005000040' + dc h'00050000040005000040' + dc h'00500000400005000040' + dc h'05444444000005000040' + dc h'00000000000005000040' + dc h'55555555555555000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005444440' + +l5 anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +l6 anop + dc h'02555555555555555550' + dc h'25000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444442000040' + dc h'50000400000005000040' + dc h'50000455555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +l7 anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000400' + dc h'54444444444444444000' + dc h'00000000000000000000' + dc h'00000005555555500000' + dc h'00000050000004000000' + dc h'00000500000040000000' + dc h'00005000000400000000' + dc h'00050000004000000000' + dc h'00500000040000000000' + dc h'05000000400000000000' + dc h'50000004000000000000' + dc h'50000040000000000000' + dc h'50000400000000000000' + dc h'54444000000000000000' + +l8 anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'51000000000000000140' + dc h'04000000000000000400' + dc h'51000000000000000140' + dc h'50000244444442000040' + dc h'50000400000005000040' + dc h'50000255555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +l9 anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000244444442000040' + dc h'50000400000005000040' + dc h'50000255555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +lexp anop + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + dc h'00000000000000000000' + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + +ldash anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + +lcol anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + dc h'00000000000000000000' + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + +lapos anop + dc h'00000055555500000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000054400400000000' + dc h'00000000500400000000' + dc h'00000000504200000000' + dc h'00000000542000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + +lcom anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000055555500000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000054400400000000' + dc h'00000000500400000000' + dc h'00000000504200000000' + dc h'00000000542000000000' + +lscol anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000055555500000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000054444400000000' + dc h'00000000000000000000' + dc h'00000055555500000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000054400400000000' + dc h'00000000500400000000' + dc h'00000000504200000000' + dc h'00000000542000000000' + +lper anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + +lSlash anop + dc h'00000000000005555550' + dc h'00000000000050000040' + dc h'00000000000500000040' + dc h'00000000005000000400' + dc h'00000000055444444000' + dc h'00000000000000000000' + dc h'00000005555555400000' + dc h'00000050000004000000' + dc h'00000500000040000000' + dc h'00005000000400000000' + dc h'00050000004000000000' + dc h'00500000040000000000' + dc h'05000000400000000000' + dc h'50000004000000000000' + dc h'50000040000000000000' + dc h'50000400000000000000' + dc h'54444000000000000000' + +lslash2 anop + dc h'55555500000000000000' + dc h'50000040000000000000' + dc h'50000004000000000000' + dc h'05000000400000000000' + dc h'00544444440000000000' + dc h'00000000000000000000' + dc h'00005555555500000000' + dc h'00000500000040000000' + dc h'00000050000004000000' + dc h'00000005000000400000' + dc h'00000000500000040000' + dc h'00000000050000004000' + dc h'00000000005000000400' + dc h'00000000000500000040' + dc h'00000000000050000040' + dc h'00000000000005000040' + dc h'00000000000000544440' + +lquest anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'00000025555552000040' + dc h'00000250000000000040' + dc h'00000500000000000040' + dc h'00000500000000000420' + dc h'00000544444444444200' + dc h'00000000000000000000' + dc h'00000555555000000000' + dc h'00000500004000000000' + dc h'00000500004000000000' + dc h'00000500004000000000' + dc h'00000544444000000000' + + msb off +NameStr entry + str 'Twilight PowerScroll 1.0 module. ' + +NameStr2 entry + str 'by Jim Maricondo, Matt Keller, and Jonah Stich. ' + +length entry + ds 2 +slowflag entry + ds 2 +taboffset ds 2 + +MyPortLoc anop +SCB dc i'$0080' portSCB +Pix dc i4'$E12000' ptrToPixImage + dc i'$00A0' width in bytes of each line in image +bounds dc i'0,0' boundary rectangle +mode dc i'200,640' was reverse! +MyPort ds $AA +orgPort ds 4 + + End +*-----------------------------------------------------------------------------* +MemoryError Start + + pha + PushLong #0 + _SysFailMgr + + End +*-----------------------------------------------------------------------------* \ No newline at end of file diff --git a/source/twilight/sorry/powerscroll/pmod2.asm.d b/source/twilight/sorry/powerscroll/pmod2.asm.d new file mode 100644 index 0000000..d1daf99 --- /dev/null +++ b/source/twilight/sorry/powerscroll/pmod2.asm.d @@ -0,0 +1,1973 @@ + + msb off + longa on + longi on + mcopy power.mac + mcopy 18/m16.msc + mcopy 18/m16.util2 + mcopy 18/m16.quickdraw +*-----------------------------------------------------------------------------* +Letter gequ 0 +Position gequ Letter+4 +Stage gequ Position+2 +lines gequ Stage+2 +MasterID gequ lines+2 +MyID gequ MasterID+2 +twice gequ MyID+2 +Speed gequ twice+2 +bordercol gequ speed+2 + +topline gequ 91 +topline1 gequ topline+1 +topline2 gequ topline1+1 +topline3 gequ topline2+1 +topline4 gequ topline3+1 +topline5 gequ topline4+1 +topline6 gequ topline5+1 +topline7 gequ topline6+1 +topline8 gequ topline7+1 +topline9 gequ topline8+1 +topline10 gequ topline9+1 +topline11 gequ topline10+1 +topline12 gequ topline11+1 +topline13 gequ topline12+1 +topline14 gequ topline13+1 +topline15 gequ topline14+1 +topline16 gequ topline15+1 +topline18 gequ topLine16+2 + +shrb gequ $E1E1 +NewVideo gequ $E0C029 +SHR gequ $E12000 +SCBs gequ $E19D00 +Palette0 gequ $E19E00 +Palette1 gequ $E19E20 +Gun gequ $E0C02E +Border gequ $E0C034 +VBLWait gequ $E0C019 bit 7 = 1 if not VBL +*-----------------------------------------------------------------------------* +PowerDemo Start + Using FontDATA + + phb + phk + plb + + brl beginIt + + dc c' Twilight PowerScroll Module 1.0. ' + dc c' January 19, 1991. This module and all modules and ' + dc c'all other files distributed with Twilight 2.0 with the ' + dc c'exception of ColorStrobe are copyrighted 1991 by Jim ' + dc c'Maricondo and Jonah Stich. All rights reserved. ' + +beginIt LongResult + _GetPort + PullLong orgPort + + PushLong #MyPort Open a new grafPort + _OpenPort + + PushLong #MyPortLoc make it point to our memory + _SetPortLoc + + PushLong #bounds + _SetPortRect + + shortm + lda #$C1 turn on/linearize SHR + sta >NewVideo + longm + + shortm + lda >Border save old border color and make border + pha color now black + and #$0F + sta bordercol + pla + and #$F0 + sta >Border + longm + + ldx #$8000-2 zero shr display buffer + lda #0 +zeroSHR sta >SHR,x + dex + dex + bpl zeroSHR + +* ldx #0 +* txa +*scb2 sta >SCBs,x +* inx +* inx +* cpx #144 +* blt scb2 + + ldx #0 + lda #$8181 +scb3 sta >SCBs+144,x + inx + inx + cpx #54 + blt scb3 + +* lda #$0000 +* sta >Palette1 + + ldx #$20-2 +palette lda PowerFontPal,x + sta >Palette0,x + dex + dex + bpl palette + + PushWord #15 foreground color of text: white + _SetForeColor + PushWord #0 background color: black + _SetBackColor + + PushWord #20 horizontal (x) + PushWord #160-6 vertical (y) + _MoveTo + PushLong #NameStr + _DrawString + + PushWord #20 horizontal (x) + PushWord #169-6 vertical (y) + _MoveTo + PushLong #NameStr2 + _DrawString + + DefineStack +oldDirectPage word +oldBank byte +returnAddress block 3 +MasterID word +MovePtr long +TextPtr long + + phd Right here we're doing several things.. + tsc First we're checking if the first 2 + tcd letters of the scroll text are "@@". + lda [TextPtr] If they are, then we set flags to tell + and #$00FF our draw and scroll routines to scroll + sta |length slow. + stz noZIP + stz slowflag Then we're getting the length byte of + ldy #1 the pascal string of text that was + lda [TextPtr],y passed to us. We store it as the + and #$7F7F length of the string for later use. + msb off Lastly, we're taking the address of the + cmp #'%%' textedit pascal string+1 and storing + bne noSlow0 it directly to the operand field of a + sta slowflag lda >Long opcode. This way we can use + bra noSlow +noSlow0 cmp #'%1' + bne noSlow1 + sta noZIP + lda TextPtr,s + inc a add 1 to skip over length byte + inc a add 1 more to skip over % + inc a add 1 more to skip over 1 + bra noSlow2 +noSlow1 cmp #'%2' + bne noSlow + sta slowflag + sta noZIP + lda TextPtr,s + inc a add 1 to skip over length byte + inc a add 1 more to skip over % + inc a add 1 more to skip over 2 + bra noSlow2 +noSlow anop + lda TextPtr,s >long,x addressing instead of [dp],y. + inc a [We're adding 1 to it to skip over the +noSlow2 sta FillStr1+1 length byte at the beginning of it] + sta FillStr2+1 + sta FillStr3+1 + lda TextPtr+2,s + sta FillStr1+3 + sta FillStr2+3 + sta FillStr3+3 + shortm + lda #$EA + sta FillStr1+4 + sta FillStr2+4 + sta FillStr3+4 + longm + pld + + stz Speed Here we're just initializing variables + lda slowFlag and setting speed based on the first + beq fastok speed flag set up above. + sta speed +fastok anop + stz Stage + stz Position + lda #^No + sta Letter+2 + lda #No + sta Letter + +* lda noZIP +* beq skipZIP +* shortm +* lda >$E0C036 +* and #$7F +* sta >$E0C036 +* longm +* +*skipzip anop + phd +GetChar anop + pld + + ldx TabOffset This is our color cycle routine. It + cpx #EndTab-ColTab cycles the credits. :) + blt ok + stz TabOffset + ldx #0 +ok anop + lda ColTab,x + sta >Palette1+$6 + sta >Palette1+$E + sta >Palette1+$16 + sta >Palette1+$1E + inc TabOffset + inc TabOffset + + lda noZIP + beq skipZIP + + shortm +waitVBL lda >VBLWait + bpl waitVBL +wait2 lda >VBLWait + bmi wait2 + longm + +skipZIP anop + shortm +wait lda >Gun We wait for the electron gun to be + cmp #(topline18/2)+$80 refreshing the line below the last + blt wait line of our scroll before we start + longm redrawing, so the drawing won't tear. + +skipGUN jsr Scroll Scroll over our text! + +CheckOther anop Now check if a key was pressed, etc. + phd + tsc + tcd + lda [MovePtr] + beq GetChar + + pld If so, quit. + +* lda noZIP +* beq skipZIP2 +* shortm +* lda >$E0C036 +* ora #$80 +* sta >$E0C036 +* longm +* +*skipzip2 anop + PushLong orgPort + _SetPort restore original port + + shortm restore users border color + lda >Border + and #$F0 + ora Border + longmx + + plb + + lda 2,s Move up RTL on stack.. + sta 12,s + lda 1,s + sta 11,s + + tsc Remove input paramaters + clc + adc #10 (MasterID+MovePtr+TextPtr) + tcs + clc + rtl + + End +*-----------------------------------------------------------------------------* +DrawNextStep Start + Using FontDATA + + lda Speed Check if speed flag says to go fast + jeq FAST or slow. + +SLOW anop + lda Stage + beq Stage0_slow + cmp #1 + beq Stage1_slow + cmp #2 + beq Stage2_slow + cmp #3 + beq Stage3_slow + +Stage4_slow anop + ldy #4*2 Draw last 1/4th of this letter. + jsr drawUpdate + stz Stage Start at beginning of next letter. + inc Position Move one letter over. + rts + +Stage0_slow anop + lda length + cmp Position + bge contHere + stz Position +contHere ldx Position +fillStr1 entry + lda >String,x + nop + and #$007F + cmp #$20 + bge OkVar1 + inc Position + bra stage0_slow + +okVar1 anop + cmp #$7F + blt OkVar2 + inc Position + bra stage0_slow + +okVar2 anop + sec + sbc #$20 + asl a + tax + lda LetterAddrTab,x + sta Letter + + ldy #0*2 + jsr drawUpdate + lda #1 + sta Stage + rts + +Stage1_slow anop + ldy #1*2 + jsr drawUpdate + lda #2 + sta Stage + rts + +Stage2_slow anop + ldy #2*2 + jsr drawUpdate + lda #3 + sta Stage + rts + +Stage3_slow anop + ldy #3*2 + jsr drawUpdate + lda #4 + sta Stage + rts + +DrawUpdate anop + lda #17 # of lines of each character + sta lines + ldx #0 +s4_loop_slow lda [Letter],y + sta >(topLine*$A0)+SHR+$8E,x + tya + clc + adc #10 width in bytes of each character + tay + txa + clc + adc #$A0 length in bytes of a SHR line + tax + dec lines + bne s4_loop_slow + rts + + + +FAST anop + lda Stage + beq Stage0 + cmp #1 + beq Stage1 + cmp #2 + beq Stage2 + cmp #3 + beq Stage3 + +Stage4 anop + ldy #6 Draw last 1/6th of this pair of letters. + jsr DrawLong + stz Stage Start at beginning of next letter. + inc Position Move one letter over. + rts + + +Stage0 anop + lda length + cmp Position + bge contHere2 + stz Position +contHere2 ldx Position +fillStr2 entry + lda >String,x + nop + and #$007F + cmp #$20 + bge OkVar3 + inc Position + bra stage0 + +okVar3 anop + cmp #$7F + blt OkVar4 + inc Position + bra stage0 + +okVar4 anop + sec + sbc #$20 + asl a + tax + lda LetterAddrTab,x + sta Letter + + ldy #0 + jsr DrawLong + lda #1 + sta Stage + rts + + +Stage1 anop + ldy #4 + jsr DrawLong + lda #2 + sta Stage + rts + + +Stage3 anop + ldy #2 + jsr DrawLong + lda #4 + sta Stage + rts + + +Stage2 anop + ldy #8 + lda #17 # of lines of each character + sta lines + ldx #0 +s6_loop lda [Letter],y + sta >(topline*$A0)+SHR+$8C,x + tya + clc + adc #10 width in bytes of each character + tay + txa + clc + adc #$A0 length in bytes of a SHR line + tax + dec lines + bne s6_loop + + inc Position +loooop anop + lda length + cmp Position + bge contHere3 ;bne + stz Position +contHere3 ldx position +fillStr3 entry + lda >String,x + nop + and #$007F + cmp #$20 + bge OkVar5 + inc Position + bra loooop + +okVar5 anop + cmp #$7F + blt OkVar6 + inc Position + bra loooop + +okVar6 anop + sec + sbc #$20 + asl a + tax + lda LetterAddrTab,x + sta Letter + + ldy #0 + lda #17 # of lines of each character + sta lines + ldx #0 +s7_loop lda [Letter],y + sta >(topline*$A0)+SHR+$8E,x + tya + clc + adc #10 width in bytes of each character + tay + txa + clc + adc #$A0 length in bytes of a SHR line + tax + dec lines + bne s7_loop + + lda #3 + sta Stage + rts + + +DrawLong anop + lda #17 # of lines of each character + sta lines + ldx #0 +s4_loop lda #2 + sta twice +s5_loop lda [Letter],y + sta >(topLine*$A0)+SHR+$8C,x + iny + iny + inx + inx + dec twice + bne s5_loop + tya + clc + adc #10-4 width in bytes of each character + tay + txa + clc + adc #$A0-4 length in bytes of a SHR line + tax + dec lines + bne s4_loop + rts + + End +*-----------------------------------------------------------------------------* +Scroll Start + Using FontDATA + + pea SHRb + plb + plb + + lda Speed + bne SLOW_Scroll + + ldx #(topline*$A0)+16 1 + jsr ScrollIt + ldx #(topline1*$A0)+16 2 + jsr ScrollIt + ldx #(topline2*$A0)+16 3 + jsr ScrollIt + ldx #(topline3*$A0)+16 4 + jsr ScrollIt + ldx #(topline4*$A0)+16 5 + jsr ScrollIt + ldx #(topline5*$A0)+16 6 + jsr ScrollIt + ldx #(topline6*$A0)+16 7 + jsr ScrollIt + ldx #(topline7*$A0)+16 8 + jsr ScrollIt + ldx #(topline8*$A0)+16 9 + jsr ScrollIt + ldx #(topline9*$A0)+16 10 + jsr ScrollIt + ldx #(topline10*$A0)+16 11 + jsr ScrollIt + ldx #(topline11*$A0)+16 12 + jsr ScrollIt + ldx #(topline12*$A0)+16 13 + jsr ScrollIt + ldx #(topline13*$A0)+16 14 + jsr ScrollIt + ldx #(topline14*$A0)+16 15 + jsr ScrollIt + ldx #(topline15*$A0)+16 16 + jsr ScrollIt + ldx #(topline16*$A0)+16 17 + jsr ScrollIt + + phk + plb + jsr DrawNextStep + rts + + +SLOW_Scroll anop + ldx #(topline*$A0)+16 1 + jsr ScrollItSlow + ldx #(topline1*$A0)+16 2 + jsr ScrollItSlow + ldx #(topline2*$A0)+16 3 + jsr ScrollItSlow + ldx #(topline3*$A0)+16 4 + jsr ScrollItSlow + ldx #(topline4*$A0)+16 5 + jsr ScrollItSlow + ldx #(topline5*$A0)+16 6 + jsr ScrollItSlow + ldx #(topline6*$A0)+16 7 + jsr ScrollItSlow + ldx #(topline7*$A0)+16 8 + jsr ScrollItSlow + ldx #(topline8*$A0)+16 9 + jsr ScrollItSlow + ldx #(topline9*$A0)+16 10 + jsr ScrollItSlow + ldx #(topline10*$A0)+16 11 + jsr ScrollItSlow + ldx #(topline11*$A0)+16 12 + jsr ScrollItSlow + ldx #(topline12*$A0)+16 13 + jsr ScrollItSlow + ldx #(topline13*$A0)+16 14 + jsr ScrollItSlow + ldx #(topline14*$A0)+16 15 + jsr ScrollItSlow + ldx #(topline15*$A0)+16 16 + jsr ScrollItSlow + ldx #(topline16*$A0)+16 17 + jsr ScrollItSlow + + phk + plb + jsr DrawNextStep + rts + + +ScrollIt anop + lda |$2000,x + sta |$2000-4,x + + lda |$2002,x + sta |$2000-2,x + lda |$2004,x + sta |$2002-2,x + lda |$2006,x + sta |$2004-2,x + lda |$2008,x + sta |$2006-2,x + lda |$200A,x + sta |$2008-2,x + lda |$200C,x + sta |$200A-2,x + lda |$200E,x + sta |$200C-2,x + lda |$2010,x + sta |$200E-2,x + + lda |$2012,x + sta |$2010-2,x + lda |$2014,x + sta |$2012-2,x + lda |$2016,x + sta |$2014-2,x + lda |$2018,x + sta |$2016-2,x + lda |$201A,x + sta |$2018-2,x + lda |$201C,x + sta |$201A-2,x + lda |$201E,x + sta |$201C-2,x + lda |$2020,x + sta |$201E-2,x + + lda |$2022,x + sta |$2020-2,x + lda |$2024,x + sta |$2022-2,x + lda |$2026,x + sta |$2024-2,x + lda |$2028,x + sta |$2026-2,x + lda |$202A,x + sta |$2028-2,x + lda |$202C,x + sta |$202A-2,x + lda |$202E,x + sta |$202C-2,x + lda |$2030,x + sta |$202E-2,x + + lda |$2032,x + sta |$2030-2,x + lda |$2034,x + sta |$2032-2,x + lda |$2036,x + sta |$2034-2,x + lda |$2038,x + sta |$2036-2,x + lda |$203A,x + sta |$2038-2,x + lda |$203C,x + sta |$203A-2,x + lda |$203E,x + sta |$203C-2,x + lda |$2040,x + sta |$203E-2,x + + lda |$2042,x + sta |$2040-2,x + lda |$2044,x + sta |$2042-2,x + lda |$2046,x + sta |$2044-2,x + lda |$2048,x + sta |$2046-2,x + lda |$204A,x + sta |$2048-2,x + lda |$204C,x + sta |$204A-2,x + lda |$204E,x + sta |$204C-2,x + lda |$2050,x + sta |$204E-2,x + + lda |$2052,x + sta |$2050-2,x + lda |$2054,x + sta |$2052-2,x + lda |$2056,x + sta |$2054-2,x + lda |$2058,x + sta |$2056-2,x + lda |$205A,x + sta |$2058-2,x + lda |$205C,x + sta |$205A-2,x + lda |$205E,x + sta |$205C-2,x + lda |$2060,x + sta |$205E-2,x + + lda |$2062,x + sta |$2060-2,x + lda |$2064,x + sta |$2062-2,x + lda |$2066,x + sta |$2064-2,x + lda |$2068,x + sta |$2066-2,x + lda |$206A,x + sta |$2068-2,x + lda |$206C,x + sta |$206A-2,x + lda |$206E,x + sta |$206C-2,x + + + lda |$2070,x + sta |$206E-2,x + lda |$2072,x + sta |$2070-2,x + lda |$2074,x + sta |$2072-2,x + lda |$2076,x + sta |$2074-2,x + lda |$2078,x + sta |$2076-2,x + lda |$207A,x + sta |$2078-2,x + lda |$207C,x + sta |$207A-2,x + lda |$207E,x + sta |$207C-2,x + rts + + +ScrollItSlow anop + lda |$2000-2,x + sta |$2000-4,x + lda |$2000,x + sta |$2000-2,x + + lda |$2002,x + sta |$2000,x + lda |$2004,x + sta |$2002,x + lda |$2006,x + sta |$2004,x + lda |$2008,x + sta |$2006,x + lda |$200A,x + sta |$2008,x + lda |$200C,x + sta |$200A,x + lda |$200E,x + sta |$200C,x + lda |$2010,x + sta |$200E,x + + lda |$2012,x + sta |$2010,x + lda |$2014,x + sta |$2012,x + lda |$2016,x + sta |$2014,x + lda |$2018,x + sta |$2016,x + lda |$201A,x + sta |$2018,x + lda |$201C,x + sta |$201A,x + lda |$201E,x + sta |$201C,x + lda |$2020,x + sta |$201E,x + + lda |$2022,x + sta |$2020,x + lda |$2024,x + sta |$2022,x + lda |$2026,x + sta |$2024,x + lda |$2028,x + sta |$2026,x + lda |$202A,x + sta |$2028,x + lda |$202C,x + sta |$202A,x + lda |$202E,x + sta |$202C,x + lda |$2030,x + sta |$202E,x + + lda |$2032,x + sta |$2030,x + lda |$2034,x + sta |$2032,x + lda |$2036,x + sta |$2034,x + lda |$2038,x + sta |$2036,x + lda |$203A,x + sta |$2038,x + lda |$203C,x + sta |$203A,x + lda |$203E,x + sta |$203C,x + lda |$2040,x + sta |$203E,x + + lda |$2042,x + sta |$2040,x + lda |$2044,x + sta |$2042,x + lda |$2046,x + sta |$2044,x + lda |$2048,x + sta |$2046,x + lda |$204A,x + sta |$2048,x + lda |$204C,x + sta |$204A,x + lda |$204E,x + sta |$204C,x + lda |$2050,x + sta |$204E,x + + lda |$2052,x + sta |$2050,x + lda |$2054,x + sta |$2052,x + lda |$2056,x + sta |$2054,x + lda |$2058,x + sta |$2056,x + lda |$205A,x + sta |$2058,x + lda |$205C,x + sta |$205A,x + lda |$205E,x + sta |$205C,x + lda |$2060,x + sta |$205E,x + + lda |$2062,x + sta |$2060,x + lda |$2064,x + sta |$2062,x + lda |$2066,x + sta |$2064,x + lda |$2068,x + sta |$2066,x + lda |$206A,x + sta |$2068,x + lda |$206C,x + sta |$206A,x + lda |$206E,x + sta |$206C,x + lda |$2070,x + sta |$206E,x + + lda |$2072,x + sta |$2070,x + lda |$2074,x + sta |$2072,x + lda |$2076,x + sta |$2074,x + lda |$2078,x + sta |$2076,x + lda |$207A,x + sta |$2078,x + lda |$207C,x + sta |$207A,x + lda |$207E,x + sta |$207C,x + rts + + End +*-----------------------------------------------------------------------------* +FontDATA Data + +ColTab anop + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$111,$111,$111' + dc i'$222,$222,$222' + dc i'$333,$333,$333' + dc i'$444,$444,$444' + dc i'$555,$555,$555' + dc i'$666,$666,$666' + dc i'$777,$777,$777' + dc i'$888,$888,$888' + dc i'$999,$999,$999' + dc i'$aaa,$aaa,$aaa' + dc i'$bbb,$bbb,$bbb' + dc i'$ccc,$ccc,$ccc' + dc i'$ddd,$ddd,$ddd' + dc i'$eee,$eee,$eee' + dc i'$fff,$fff,$fff' + dc i'$eee,$eee,$eee' + dc i'$ddd,$ddd,$ddd' + dc i'$ccc,$ccc,$ccc' + dc i'$bbb,$bbb,$bbb' + dc i'$aaa,$aaa,$aaa' + dc i'$999,$999,$999' + dc i'$888,$888,$888' + dc i'$777,$777,$777' + dc i'$666,$666,$666' + dc i'$555,$555,$555' + dc i'$444,$444,$444' + dc i'$333,$333,$333' + dc i'$222,$222,$222' + dc i'$111,$111,$111' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +EndTab anop + +String anop + +LetterAddrTab anop + dc a'lspace,lexp,no,no,no,no,no,lapos,no,no,no,no' + dc a'lcom,ldash,lper,lslash' + dc a'l0,l1,l2,l3,l4,l5,l6,l7,l8,l9,lcol,lscol,no,no,no' + dc a'lquest,no,la' + dc a'lb,lc,ld,le,lf,lg,lh,li,lj,lk,ll,lm,ln,lo,lp,lq,lr,ls' + dc a'lt,lu,lv,lw,lx,ly,lz,no,lslash2' + dc a'no,no,no,no,la,lb,lc,ld,le,lf,lg,lh,li,lj,lk,ll,lm,ln' + dc a'lo,lp,lq,lr,ls,lt,lu,lv,lw,lx,ly,lz,no,no,no,no' + +* c' !"#$%&'()*+,-./' +* c'0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\' +* c']^_`abcdefghijklmnopqrstuvwxyz{|}~' + +PowerFontPal anop + dc h'0000 0500 0700 0a00 0c00 0f00' + dc h'f00f 0004 0008 0009 000a 000b' + dc h'000c 000d 000e 000f' + +no anop +lspace anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + +lA anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444420000040' + dc h'00000000000052000040' + dc h'55555555555554000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444442000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000000444440' + +lB anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000140' + dc h'50000000000000000400' + dc h'50000000000000000140' + dc h'50000444444442000040' + dc h'50000400000005000040' + dc h'50000455555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +lC anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555500000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000255555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444444444440' + +lD anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555500000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000455555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +lE anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444444444440' + dc h'50000400000000000000' + dc h'50000455555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +lF anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444444444440' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'54444400000000000000' + +lG anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555500000000000000' + dc h'50000400000000000000' + dc h'50000400000005555550' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000255555555000040' + dc h'50000000000000000040' + dc h'50000000000000000140' + dc h'25000000000000001420' + dc h'02444444444444444200' + +lH anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005000040' + dc h'00000000000005000040' + dc h'55555555555555000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444444000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005444440' + +lI anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'00000055555550000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'55555550000044444440' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +lJ anop + dc h'00000000000005555550' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'55555500000005000040' + dc h'40000500000005000040' + dc h'40000500000005000040' + dc h'40000510000005000040' + dc h'40000255555552000040' + dc h'40000000000000000040' + dc h'41000000000000000140' + dc h'24100000000000001420' + dc h'02444444444444444200' + +lK anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000400000015000040' + dc h'50000400000024000040' + dc h'54444400000151000140' + dc h'00000000001520000230' + dc h'55555555554200001410' + dc h'50000000000000014200' + dc h'50000000000000042000' + dc h'50000000000000014200' + dc h'50000444444200001410' + dc h'50000400001420000230' + dc h'50000400000141000140' + dc h'50000400000023000040' + dc h'50000400000014000040' + dc h'50000400000004000040' + dc h'54444400000004444440' + +lL anop + dc h'55555500000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'54444400000000000000' + dc h'00000000000000000000' + dc h'55555500000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000455555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +lM anop + dc h'02555555202555555200' + dc h'25000000425000000420' + dc h'50000000252000000040' + dc h'50000000000000000040' + dc h'54444442000000000040' + dc h'00000005000242000040' + dc h'55555505000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405444405000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005444440' + +lN anop + dc h'55555500000005555550' + dc h'50000040000005000040' + dc h'50000004000005000040' + dc h'50000000400005000040' + dc h'54444444440005000040' + dc h'00000000000005000040' + dc h'55555555555005000040' + dc h'50000000000405000040' + dc h'50000000000045000040' + dc h'50000000000005000040' + dc h'50000444400000000040' + dc h'50000400050000000040' + dc h'50000400005000000040' + dc h'50000400000500000040' + dc h'50000400000050000040' + dc h'50000400000005000040' + dc h'54444400000001444440' + +lO anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555500000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000255555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +lP anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'50000444444444444200' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'54444400000000000000' + +lQ anop + dc h'02555555555555555200' + dc h'25000000000000000520' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'54444400000005000040' + dc h'50000400000525000040' + dc h'50000400005045000040' + dc h'50000400050005000040' + dc h'50000400500000000040' + dc h'50000400250000000040' + dc h'50000255555000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444444444440' + +lR anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'50000004444444444200' + dc h'05000000400000000000' + dc h'00500000040000000000' + dc h'00050000004000000000' + dc h'00005000000400000000' + dc h'00000500000040000000' + dc h'00000054444444000000' + +lS anop + dc h'02555555555555555550' + dc h'25000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444442000040' + dc h'00000000000004000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +lT anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'00000055555550000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000054444440000000' + +lU anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005000040' + dc h'00000000000005000040' + dc h'55555500000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000255555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +lV anop + dc h'55555500000000005550' + dc h'50000400000000050040' + dc h'50000400000000500040' + dc h'50000400000005000040' + dc h'54444400000050000040' + dc h'00000000000500000040' + dc h'55555500005000000400' + dc h'50000400050000004000' + dc h'50000400500000040000' + dc h'50000405000000400000' + dc h'50000450000004000000' + dc h'50000400000040000000' + dc h'50000000000400000000' + dc h'50000000004000000000' + dc h'50000000040000000000' + dc h'50000000400000000000' + dc h'54444444000000000000' + +lW anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005000040' + dc h'00000000000005000040' + dc h'55555505555505000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000252000252000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000242000000040' + dc h'25000000405000000420' + dc h'02444444202444444200' + +lX anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000410000015000040' + dc h'50000320000024000040' + dc h'54444441000151000140' + dc h'00000000001520000230' + dc h'15555555554200001410' + dc h'02410000000000014200' + dc h'00240000000000042000' + dc h'02510000000000014200' + dc h'15100002454200001410' + dc h'42000024101520000230' + dc h'51000141000151000140' + dc h'50000320000024000040' + dc h'50000410000015000040' + dc h'50000400000005000040' + dc h'54444400000005444440' + +lY anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000410000015000040' + dc h'50000320000024000040' + dc h'54444441000151000140' + dc h'00000000001520000230' + dc h'15555555554200001410' + dc h'02500000000000004200' + dc h'00250000000000142000' + dc h'00015100000001410000' + dc h'00000520000014000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000055444440000000' + +lZ anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000400' + dc h'54444444444444444000' + dc h'00000000000000000000' + dc h'00000005555555500000' + dc h'00000050000004000000' + dc h'00000500000040000000' + dc h'00005000000400000000' + dc h'00050000004000000000' + dc h'00500000040000000000' + dc h'05000000455555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +l0 anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555500055505555550' + dc h'50000400500405000040' + dc h'50000405000405000040' + dc h'50000450000405000040' + dc h'50000400000405000040' + dc h'50000000004005000040' + dc h'50000000045552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +l1 anop + dc h'00000555555550000000' + dc h'00005000000040000000' + dc h'00050000000040000000' + dc h'00500000000040000000' + dc h'05444444444440000000' + dc h'00000000000000000000' + dc h'00000055555550000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'55555550000044444440' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +l2 anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'02555555555555555550' + dc h'25000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'50000244444444444200' + dc h'50000400000000000000' + dc h'50000255555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +l3 anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000140' + dc h'50000000000000000410' + dc h'50000000000000000140' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +l4 anop + dc h'00000555555505555550' + dc h'00005000004005000040' + dc h'00050000040005000040' + dc h'00500000400005000040' + dc h'05444444000005000040' + dc h'00000000000005000040' + dc h'55555555555555000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005444440' + +l5 anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +l6 anop + dc h'02555555555555555550' + dc h'25000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444442000040' + dc h'50000400000005000040' + dc h'50000455555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +l7 anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000400' + dc h'54444444444444444000' + dc h'00000000000000000000' + dc h'00000005555555500000' + dc h'00000050000004000000' + dc h'00000500000040000000' + dc h'00005000000400000000' + dc h'00050000004000000000' + dc h'00500000040000000000' + dc h'05000000400000000000' + dc h'50000004000000000000' + dc h'50000040000000000000' + dc h'50000400000000000000' + dc h'54444000000000000000' + +l8 anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'51000000000000000140' + dc h'04000000000000000400' + dc h'51000000000000000140' + dc h'50000244444442000040' + dc h'50000400000005000040' + dc h'50000255555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +l9 anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000244444442000040' + dc h'50000400000005000040' + dc h'50000255555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +lexp anop + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + dc h'00000000000000000000' + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + +ldash anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + +lcol anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + dc h'00000000000000000000' + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + +lapos anop + dc h'00000055555500000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000054400400000000' + dc h'00000000500400000000' + dc h'00000000504200000000' + dc h'00000000542000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + +lcom anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000055555500000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000054400400000000' + dc h'00000000500400000000' + dc h'00000000504200000000' + dc h'00000000542000000000' + +lscol anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000055555500000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000054444400000000' + dc h'00000000000000000000' + dc h'00000055555500000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000054400400000000' + dc h'00000000500400000000' + dc h'00000000504200000000' + dc h'00000000542000000000' + +lper anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + +lSlash anop + dc h'00000000000005555550' + dc h'00000000000050000040' + dc h'00000000000500000040' + dc h'00000000005000000400' + dc h'00000000055444444000' + dc h'00000000000000000000' + dc h'00000005555555400000' + dc h'00000050000004000000' + dc h'00000500000040000000' + dc h'00005000000400000000' + dc h'00050000004000000000' + dc h'00500000040000000000' + dc h'05000000400000000000' + dc h'50000004000000000000' + dc h'50000040000000000000' + dc h'50000400000000000000' + dc h'54444000000000000000' + +lslash2 anop + dc h'55555500000000000000' + dc h'50000040000000000000' + dc h'50000004000000000000' + dc h'05000000400000000000' + dc h'00544444440000000000' + dc h'00000000000000000000' + dc h'00005555555500000000' + dc h'00000500000040000000' + dc h'00000050000004000000' + dc h'00000005000000400000' + dc h'00000000500000040000' + dc h'00000000050000004000' + dc h'00000000005000000400' + dc h'00000000000500000040' + dc h'00000000000050000040' + dc h'00000000000005000040' + dc h'00000000000000544440' + +lquest anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'00000025555552000040' + dc h'00000250000000000040' + dc h'00000500000000000040' + dc h'00000500000000000420' + dc h'00000544444444444200' + dc h'00000000000000000000' + dc h'00000555555000000000' + dc h'00000500004000000000' + dc h'00000500004000000000' + dc h'00000500004000000000' + dc h'00000544444000000000' + + msb off +NameStr entry + str 'Twilight PowerScroll 1.0 module. ' + +NameStr2 entry + str 'by Jim Maricondo, Matt Keller, and Jonah Stich. ' + +length entry + ds 2 +slowflag entry + ds 2 +noZip entry + ds 2 +taboffset ds 2 + +MyPortLoc anop +SCB dc i'$0080' portSCB +Pix dc i4'$E12000' ptrToPixImage + dc i'$00A0' width in bytes of each line in image +bounds dc i'0,0' boundary rectangle +mode dc i'200,640' was reverse! +MyPort ds $AA +orgPort ds 4 + + End +*-----------------------------------------------------------------------------* +*MemoryError Start +* +* pha +* PushLong #0 +* _SysFailMgr +* +* End +*-----------------------------------------------------------------------------* \ No newline at end of file diff --git a/source/twilight/sorry/powerscroll/pmod2.asm.e b/source/twilight/sorry/powerscroll/pmod2.asm.e new file mode 100644 index 0000000..4548c68 --- /dev/null +++ b/source/twilight/sorry/powerscroll/pmod2.asm.e @@ -0,0 +1,2043 @@ + + msb off + longa on + longi on + absaddr on + mcopy power.mac + mcopy 7/m16.msc + mcopy 7/m16.util2 + mcopy 7/m16.quickdraw +*-----------------------------------------------------------------------------* +Letter gequ <0 +Position gequ Letter+4 +Stage gequ Position+2 +lines gequ Stage+2 +MasterID gequ lines+2 +MyID gequ MasterID+2 +twice gequ MyID+2 +Speed gequ twice+2 +bordercol gequ speed+2 + +topline gequ 91 +topline1 gequ topline+1 +topline2 gequ topline1+1 +topline3 gequ topline2+1 +topline4 gequ topline3+1 +topline5 gequ topline4+1 +topline6 gequ topline5+1 +topline7 gequ topline6+1 +topline8 gequ topline7+1 +topline9 gequ topline8+1 +topline10 gequ topline9+1 +topline11 gequ topline10+1 +topline12 gequ topline11+1 +topline13 gequ topline12+1 +topline14 gequ topline13+1 +topline15 gequ topline14+1 +topline16 gequ topline15+1 +topline18 gequ topLine16+2 + +shrb gequ $E1E1 +NewVideo gequ $E0C029 +SHR gequ $E12000 +SCBs gequ $E19D00 +Palette0 gequ $E19E00 +Palette1 gequ $E19E20 +Gun gequ $E0C02E +Border gequ $E0C034 +VBLWait gequ $E0C019 bit 7 = 1 if not VBL +CLRAN0 gequ $C059 set annunciator 0 +SETAN1 gequ $C05A clear annunciator 1 +SETAN2 gequ $C05C clear annunciator 2 +CLRAN2 gequ $C05D set annunciator 2 +*-----------------------------------------------------------------------------* +PowerDemo Start + Using FontDATA + + case off + phb + phk + plb + + brl beginIt + + dc c' Twilight PowerScroll Module 1.0. ' + dc c' January 19, 1991. This module and all modules and ' + dc c'all other files distributed with Twilight 2.0 with the ' + dc c'exception of ColorStrobe are copyrighted 1991 by Jim ' + dc c'Maricondo and Jonah Stich. All rights reserved. ' + +beginIt LongResult + _GetPort + PullLong orgPort + + PushLong #MyPort Open a new grafPort + _OpenPort + + PushLong #MyPortLoc make it point to our memory + _SetPortLoc + + PushLong #bounds + _SetPortRect + + shortm + lda #$C1 turn on/linearize SHR + sta >NewVideo + longm + + shortm + lda >Border save old border color and make border + pha color now black + and #$0F + sta bordercol + pla + and #$F0 + sta >Border + longm + + ldx #$8000-2 zero shr display buffer + lda #0 +zeroSHR sta >SHR,x + dex + dex + bpl zeroSHR + +* ldx #0 +* txa +*scb2 sta >SCBs,x +* inx +* inx +* cpx #144 +* blt scb2 + + ldx #0 + lda #$8181 +scb3 sta >SCBs+144,x + inx + inx + cpx #54 + blt scb3 + +* lda #$0000 +* sta >Palette1 + + ldx #$20-2 +palette lda PowerFontPal,x + sta >Palette0,x + dex + dex + bpl palette + + PushWord #15 foreground color of text: white + _SetForeColor + PushWord #0 background color: black + _SetBackColor + + PushWord #20 horizontal (x) + PushWord #160-6 vertical (y) + _MoveTo + PushLong #NameStr + _DrawString + + PushWord #20 horizontal (x) + PushWord #169-6 vertical (y) + _MoveTo + PushLong #NameStr2 + _DrawString + + DefineStack +oldDirectPage word +oldBank byte +returnAddress block 3 +MasterID word +MovePtr long +TextPtr long + + phd Right here we're doing several things.. + tsc First we're checking if the first 2 + tcd letters of the scroll text are "@@". + lda [TextPtr] If they are, then we set flags to tell + and #$00FF our draw and scroll routines to scroll + sta |length slow. + stz noZIP + stz slowflag Then we're getting the length byte of + ldy #1 the pascal string of text that was + lda [TextPtr],y passed to us. We store it as the + and #$7F7F length of the string for later use. + msb off Lastly, we're taking the address of the + cmp #'%%' textedit pascal string+1 and storing + bne noSlow it directly to the operand field of a + sta slowflag lda >Long opcode. This way we can use + lda TextPtr,s + inc a add 1 to skip over length byte + inc a add 1 more to skip over % + inc a add 1 more to skip over % + bra noSlow2 +noSlow anop + lda TextPtr,s >long,x addressing instead of [dp],y. + inc a [We're adding 1 to it to skip over the +noSlow2 sta FillStr1+1 length byte at the beginning of it] + sta FillStr2+1 + sta FillStr3+1 + lda TextPtr+2,s + sta FillStr1+3 + sta FillStr2+3 + sta FillStr3+3 + shortm + lda #$EA + sta FillStr1+4 + sta FillStr2+4 + sta FillStr3+4 + longm + pld + + stz Speed Here we're just initializing variables + lda slowFlag and setting speed based on the first + beq fastok speed flag set up above. + sta speed +fastok anop + stz Stage + stz Position + lda #^No + sta Letter+2 + lda #No + sta Letter + + lda >$BCFF00 check for TWGS + cmp #$5754 cmp #"TW" + bne speed_ok no twgs + lda >$BCFF02 + cmp #$5347 cmp #"GS" + bne speed_ok no twgs + lda #-1 + sta noZIP +speed_ok anop + +CheckZip anop +* ldy #$0000 +*FindZip lda FindZip,y +* dey +* bne FindZip + php THIS ROUTINE CHECKS FOR PRESENCE OF A + shortm ZIPGS + lda #$5A + sta >SETAN1 clear annunciator 1 + sta >SETAN1 clear annunciator 1 + sta >SETAN1 clear annunciator 1 + sta >SETAN1 clear annunciator 1 + lda >CLRAN0 set annunciator 0 + eor #$F8 + sta Temp1 + sta >CLRAN0 set annunciator 0 + lda >CLRAN0 set annunciator 0 + cmp Temp1 + bne noZip01 + eor #$F8 + sta >CLRAN0 set annunciator 0 + lda #$A5 + sta >SETAN1 clear annunciator 1 + longm + lda #-1 + sta noZip +noZip01 plp + +* lda noZIP +* beq skipZIP +* shortm +* lda >$E0C036 +* and #$7F +* sta >$E0C036 +* longm +* +*skipzip anop + phd +GetChar anop + pld + + ldx TabOffset This is our color cycle routine. It + cpx #EndTab-ColTab cycles the credits. :) + blt ok + stz TabOffset + ldx #0 +ok anop + lda ColTab,x + sta >Palette1+$6 + sta >Palette1+$E + sta >Palette1+$16 + sta >Palette1+$1E + inc TabOffset + inc TabOffset + + lda noZIP + beq skipZIP + + shortm +waitVBL lda >VBLWait + bpl waitVBL +wait2 lda >VBLWait + bmi wait2 + longm + bra SkipGUN + +skipZIP anop + shortm +wait lda >Gun We wait for the electron gun to be + cmp #(topline18/2)+$80 refreshing the line below the last + blt wait line of our scroll before we start + longm redrawing, so the drawing won't tear. + +skipGUN jsr Scroll Scroll over our text! + +CheckOther anop Now check if a key was pressed, etc. + phd + tsc + tcd + lda [MovePtr] + beq GetChar + + pld If so, quit. + +* lda noZIP +* beq skipZIP2 +* shortm +* lda >$E0C036 +* ora #$80 +* sta >$E0C036 +* longm +* +*skipzip2 anop + PushLong orgPort + _SetPort restore original port + + shortm restore users border color + lda >Border + and #$F0 + ora bordercol + sta >Border + longmx + + plb + lda 2,s Move up RTL on stack.. + sta 2+10,s + lda 1,s + sta 1+10,s + tsc Remove input paramaters + clc + adc #10 (MasterID+MovePtr+TextPtr) + tcs + clc + rtl + +Temp1 ds 2 +noZip ds 2 + + End +*-----------------------------------------------------------------------------* +DrawNextStep Start + Using FontDATA + + lda Speed Check if speed flag says to go fast + jeq FAST or slow. + +SLOW anop + lda Stage + beq Stage0_slow + cmp #1 + beq Stage1_slow + cmp #2 + beq Stage2_slow + cmp #3 + beq Stage3_slow + +Stage4_slow anop + ldy #4*2 Draw last 1/4th of this letter. + jsr drawUpdate + stz Stage Start at beginning of next letter. + inc Position Move one letter over. + rts + +Stage0_slow anop + lda length + cmp Position + bge contHere + stz Position +contHere ldx Position +fillStr1 entry + lda >String,x + nop + and #$007F + cmp #$20 + bge OkVar1 + inc Position + bra stage0_slow + +okVar1 anop + cmp #$7F + blt OkVar2 + inc Position + bra stage0_slow + +okVar2 anop + sec + sbc #$20 + asl a + tax + lda LetterAddrTab,x + sta Letter + + ldy #0*2 + jsr drawUpdate + lda #1 + sta Stage + rts + +Stage1_slow anop + ldy #1*2 + jsr drawUpdate + lda #2 + sta Stage + rts + +Stage2_slow anop + ldy #2*2 + jsr drawUpdate + lda #3 + sta Stage + rts + +Stage3_slow anop + ldy #3*2 + jsr drawUpdate + lda #4 + sta Stage + rts + +DrawUpdate anop + lda #17 # of lines of each character + sta lines + ldx #0 +s4_loop_slow lda [Letter],y + sta >(topLine*$A0)+SHR+$8E,x + tya + clc + adc #10 width in bytes of each character + tay + txa + clc + adc #$A0 length in bytes of a SHR line + tax + dec lines + bne s4_loop_slow + rts + + + +FAST anop + lda Stage + beq Stage0 + cmp #1 + beq Stage1 + cmp #2 + beq Stage2 + cmp #3 + beq Stage3 + +Stage4 anop + ldy #6 Draw last 1/6th of this pair of letters. + jsr DrawLong + stz Stage Start at beginning of next letter. + inc Position Move one letter over. + rts + + +Stage0 anop + lda length + cmp Position + bge contHere2 + stz Position +contHere2 ldx Position +fillStr2 entry + lda >String,x + nop + and #$007F + cmp #$20 + bge OkVar3 + inc Position + bra stage0 + +okVar3 anop + cmp #$7F + blt OkVar4 + inc Position + bra stage0 + +okVar4 anop + sec + sbc #$20 + asl a + tax + lda LetterAddrTab,x + sta Letter + + ldy #0 + jsr DrawLong + lda #1 + sta Stage + rts + + +Stage1 anop + ldy #4 + jsr DrawLong + lda #2 + sta Stage + rts + + +Stage3 anop + ldy #2 + jsr DrawLong + lda #4 + sta Stage + rts + + +Stage2 anop + ldy #8 + lda #17 # of lines of each character + sta lines + ldx #0 +s6_loop lda [Letter],y + sta >(topline*$A0)+SHR+$8C,x + tya + clc + adc #10 width in bytes of each character + tay + txa + clc + adc #$A0 length in bytes of a SHR line + tax + dec lines + bne s6_loop + + inc Position +loooop anop + lda length + cmp Position + bge contHere3 ;bne + stz Position +contHere3 ldx position +fillStr3 entry + lda >String,x + nop + and #$007F + cmp #$20 + bge OkVar5 + inc Position + bra loooop + +okVar5 anop + cmp #$7F + blt OkVar6 + inc Position + bra loooop + +okVar6 anop + sec + sbc #$20 + asl a + tax + lda LetterAddrTab,x + sta Letter + + ldy #0 + lda #17 # of lines of each character + sta lines + ldx #0 +s7_loop lda [Letter],y + sta >(topline*$A0)+SHR+$8E,x + tya + clc + adc #10 width in bytes of each character + tay + txa + clc + adc #$A0 length in bytes of a SHR line + tax + dec lines + bne s7_loop + + lda #3 + sta Stage + rts + + +DrawLong anop + lda #17 # of lines of each character + sta lines + ldx #0 +s4_loop lda #2 + sta twice +s5_loop lda [Letter],y + sta >(topLine*$A0)+SHR+$8C,x + iny + iny + inx + inx + dec twice + bne s5_loop + tya + clc + adc #10-4 width in bytes of each character + tay + txa + clc + adc #$A0-4 length in bytes of a SHR line + tax + dec lines + bne s4_loop + rts + + End +*-----------------------------------------------------------------------------* +Scroll Start + Using FontDATA + + pea SHRb + plb + plb + + lda Speed + bne SLOW_Scroll + + ldx #(topline*$A0)+16 1 + jsr ScrollIt + ldx #(topline1*$A0)+16 2 + jsr ScrollIt + ldx #(topline2*$A0)+16 3 + jsr ScrollIt + ldx #(topline3*$A0)+16 4 + jsr ScrollIt + ldx #(topline4*$A0)+16 5 + jsr ScrollIt + ldx #(topline5*$A0)+16 6 + jsr ScrollIt + ldx #(topline6*$A0)+16 7 + jsr ScrollIt + ldx #(topline7*$A0)+16 8 + jsr ScrollIt + ldx #(topline8*$A0)+16 9 + jsr ScrollIt + ldx #(topline9*$A0)+16 10 + jsr ScrollIt + ldx #(topline10*$A0)+16 11 + jsr ScrollIt + ldx #(topline11*$A0)+16 12 + jsr ScrollIt + ldx #(topline12*$A0)+16 13 + jsr ScrollIt + ldx #(topline13*$A0)+16 14 + jsr ScrollIt + ldx #(topline14*$A0)+16 15 + jsr ScrollIt + ldx #(topline15*$A0)+16 16 + jsr ScrollIt + ldx #(topline16*$A0)+16 17 + jsr ScrollIt + + phk + plb + jsr DrawNextStep + rts + + +SLOW_Scroll anop + ldx #(topline*$A0)+16 1 + jsr ScrollItSlow + ldx #(topline1*$A0)+16 2 + jsr ScrollItSlow + ldx #(topline2*$A0)+16 3 + jsr ScrollItSlow + ldx #(topline3*$A0)+16 4 + jsr ScrollItSlow + ldx #(topline4*$A0)+16 5 + jsr ScrollItSlow + ldx #(topline5*$A0)+16 6 + jsr ScrollItSlow + ldx #(topline6*$A0)+16 7 + jsr ScrollItSlow + ldx #(topline7*$A0)+16 8 + jsr ScrollItSlow + ldx #(topline8*$A0)+16 9 + jsr ScrollItSlow + ldx #(topline9*$A0)+16 10 + jsr ScrollItSlow + ldx #(topline10*$A0)+16 11 + jsr ScrollItSlow + ldx #(topline11*$A0)+16 12 + jsr ScrollItSlow + ldx #(topline12*$A0)+16 13 + jsr ScrollItSlow + ldx #(topline13*$A0)+16 14 + jsr ScrollItSlow + ldx #(topline14*$A0)+16 15 + jsr ScrollItSlow + ldx #(topline15*$A0)+16 16 + jsr ScrollItSlow + ldx #(topline16*$A0)+16 17 + jsr ScrollItSlow + + phk + plb + jsr DrawNextStep + rts + + +ScrollIt anop + lda |$2000,x + sta |$2000-4,x + + lda |$2002,x + sta |$2000-2,x + lda |$2004,x + sta |$2002-2,x + lda |$2006,x + sta |$2004-2,x + lda |$2008,x + sta |$2006-2,x + lda |$200A,x + sta |$2008-2,x + lda |$200C,x + sta |$200A-2,x + lda |$200E,x + sta |$200C-2,x + lda |$2010,x + sta |$200E-2,x + + lda |$2012,x + sta |$2010-2,x + lda |$2014,x + sta |$2012-2,x + lda |$2016,x + sta |$2014-2,x + lda |$2018,x + sta |$2016-2,x + lda |$201A,x + sta |$2018-2,x + lda |$201C,x + sta |$201A-2,x + lda |$201E,x + sta |$201C-2,x + lda |$2020,x + sta |$201E-2,x + + lda |$2022,x + sta |$2020-2,x + lda |$2024,x + sta |$2022-2,x + lda |$2026,x + sta |$2024-2,x + lda |$2028,x + sta |$2026-2,x + lda |$202A,x + sta |$2028-2,x + lda |$202C,x + sta |$202A-2,x + lda |$202E,x + sta |$202C-2,x + lda |$2030,x + sta |$202E-2,x + + lda |$2032,x + sta |$2030-2,x + lda |$2034,x + sta |$2032-2,x + lda |$2036,x + sta |$2034-2,x + lda |$2038,x + sta |$2036-2,x + lda |$203A,x + sta |$2038-2,x + lda |$203C,x + sta |$203A-2,x + lda |$203E,x + sta |$203C-2,x + lda |$2040,x + sta |$203E-2,x + + lda |$2042,x + sta |$2040-2,x + lda |$2044,x + sta |$2042-2,x + lda |$2046,x + sta |$2044-2,x + lda |$2048,x + sta |$2046-2,x + lda |$204A,x + sta |$2048-2,x + lda |$204C,x + sta |$204A-2,x + lda |$204E,x + sta |$204C-2,x + lda |$2050,x + sta |$204E-2,x + + lda |$2052,x + sta |$2050-2,x + lda |$2054,x + sta |$2052-2,x + lda |$2056,x + sta |$2054-2,x + lda |$2058,x + sta |$2056-2,x + lda |$205A,x + sta |$2058-2,x + lda |$205C,x + sta |$205A-2,x + lda |$205E,x + sta |$205C-2,x + lda |$2060,x + sta |$205E-2,x + + lda |$2062,x + sta |$2060-2,x + lda |$2064,x + sta |$2062-2,x + lda |$2066,x + sta |$2064-2,x + lda |$2068,x + sta |$2066-2,x + lda |$206A,x + sta |$2068-2,x + lda |$206C,x + sta |$206A-2,x + lda |$206E,x + sta |$206C-2,x + + + lda |$2070,x + sta |$206E-2,x + lda |$2072,x + sta |$2070-2,x + lda |$2074,x + sta |$2072-2,x + lda |$2076,x + sta |$2074-2,x + lda |$2078,x + sta |$2076-2,x + lda |$207A,x + sta |$2078-2,x + lda |$207C,x + sta |$207A-2,x + lda |$207E,x + sta |$207C-2,x + rts + + +ScrollItSlow anop + lda |$2000-2,x + sta |$2000-4,x + lda |$2000,x + sta |$2000-2,x + + lda |$2002,x + sta |$2000,x + lda |$2004,x + sta |$2002,x + lda |$2006,x + sta |$2004,x + lda |$2008,x + sta |$2006,x + lda |$200A,x + sta |$2008,x + lda |$200C,x + sta |$200A,x + lda |$200E,x + sta |$200C,x + lda |$2010,x + sta |$200E,x + + lda |$2012,x + sta |$2010,x + lda |$2014,x + sta |$2012,x + lda |$2016,x + sta |$2014,x + lda |$2018,x + sta |$2016,x + lda |$201A,x + sta |$2018,x + lda |$201C,x + sta |$201A,x + lda |$201E,x + sta |$201C,x + lda |$2020,x + sta |$201E,x + + lda |$2022,x + sta |$2020,x + lda |$2024,x + sta |$2022,x + lda |$2026,x + sta |$2024,x + lda |$2028,x + sta |$2026,x + lda |$202A,x + sta |$2028,x + lda |$202C,x + sta |$202A,x + lda |$202E,x + sta |$202C,x + lda |$2030,x + sta |$202E,x + + lda |$2032,x + sta |$2030,x + lda |$2034,x + sta |$2032,x + lda |$2036,x + sta |$2034,x + lda |$2038,x + sta |$2036,x + lda |$203A,x + sta |$2038,x + lda |$203C,x + sta |$203A,x + lda |$203E,x + sta |$203C,x + lda |$2040,x + sta |$203E,x + + lda |$2042,x + sta |$2040,x + lda |$2044,x + sta |$2042,x + lda |$2046,x + sta |$2044,x + lda |$2048,x + sta |$2046,x + lda |$204A,x + sta |$2048,x + lda |$204C,x + sta |$204A,x + lda |$204E,x + sta |$204C,x + lda |$2050,x + sta |$204E,x + + lda |$2052,x + sta |$2050,x + lda |$2054,x + sta |$2052,x + lda |$2056,x + sta |$2054,x + lda |$2058,x + sta |$2056,x + lda |$205A,x + sta |$2058,x + lda |$205C,x + sta |$205A,x + lda |$205E,x + sta |$205C,x + lda |$2060,x + sta |$205E,x + + lda |$2062,x + sta |$2060,x + lda |$2064,x + sta |$2062,x + lda |$2066,x + sta |$2064,x + lda |$2068,x + sta |$2066,x + lda |$206A,x + sta |$2068,x + lda |$206C,x + sta |$206A,x + lda |$206E,x + sta |$206C,x + lda |$2070,x + sta |$206E,x + + lda |$2072,x + sta |$2070,x + lda |$2074,x + sta |$2072,x + lda |$2076,x + sta |$2074,x + lda |$2078,x + sta |$2076,x + lda |$207A,x + sta |$2078,x + lda |$207C,x + sta |$207A,x + lda |$207E,x + sta |$207C,x + rts + + End +*-----------------------------------------------------------------------------* +FontDATA Data + +ColTab anop + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$111,$111,$111' + dc i'$222,$222,$222' + dc i'$333,$333,$333' + dc i'$444,$444,$444' + dc i'$555,$555,$555' + dc i'$666,$666,$666' + dc i'$777,$777,$777' + dc i'$888,$888,$888' + dc i'$999,$999,$999' + dc i'$aaa,$aaa,$aaa' + dc i'$bbb,$bbb,$bbb' + dc i'$ccc,$ccc,$ccc' + dc i'$ddd,$ddd,$ddd' + dc i'$eee,$eee,$eee' + dc i'$fff,$fff,$fff' + dc i'$eee,$eee,$eee' + dc i'$ddd,$ddd,$ddd' + dc i'$ccc,$ccc,$ccc' + dc i'$bbb,$bbb,$bbb' + dc i'$aaa,$aaa,$aaa' + dc i'$999,$999,$999' + dc i'$888,$888,$888' + dc i'$777,$777,$777' + dc i'$666,$666,$666' + dc i'$555,$555,$555' + dc i'$444,$444,$444' + dc i'$333,$333,$333' + dc i'$222,$222,$222' + dc i'$111,$111,$111' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' + dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +EndTab anop + +String anop + +LetterAddrTab anop + dc a'lspace,lexp,no,no,no,no,no,lapos,lshift9,lshift0,no,no' + dc a'lcom,ldash,lper,lslash' + dc a'l0,l1,l2,l3,l4,l5,l6,l7,l8,l9,lcol,lscol,no,no,no' + dc a'lquest,no,la' + dc a'lb,lc,ld,le,lf,lg,lh,li,lj,lk,ll,lm,ln,lo,lp,lq,lr,ls' + dc a'lt,lu,lv,lw,lx,ly,lz,no,lslash2' + dc a'no,no,no,no,la,lb,lc,ld,le,lf,lg,lh,li,lj,lk,ll,lm,ln' + dc a'lo,lp,lq,lr,ls,lt,lu,lv,lw,lx,ly,lz,no,no,no,no' + +* c' !"#$%&'()*+,-./' +* c'0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\' +* c']^_`abcdefghijklmnopqrstuvwxyz{|}~' + +PowerFontPal anop + dc h'0000 0500 0700 0a00 0c00 0f00' + dc h'f00f 0004 0008 0009 000a 000b' + dc h'000c 000d 000e 000f' + +no anop +lspace anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + +lshift9 ANOP + dc h'00000001255555500000' + dc h'00000025500000400000' + dc h'00000250000000400000' + dc h'00001500000000400000' + dc h'00002500000144400000' + dc h'00005000014400000000' + dc h'00005000040000000000' + dc h'00005000040000000000' + dc h'00005000040000000000' + dc h'00005000040000000000' + dc h'00005000040000000000' + dc h'00005000015400000000' + dc h'00002500000155500000' + dc h'00001500000000400000' + dc h'00000250000000400000' + dc h'00000025500000400000' + dc h'00000001254444400000' + +lshift0 ANOP + dc h'00005555552100000000' + dc h'00005000005520000000' + dc h'00005000000042000000' + dc h'00005000000004100000' + dc h'00005441000004200000' + dc h'00000004410000400000' + dc h'00000000040000400000' + dc h'00000000040000400000' + dc h'00000000040000400000' + dc h'00000000040000400000' + dc h'00000000040000400000' + dc h'00000004510000400000' + dc h'00005551000004200000' + dc h'00005000000004100000' + dc h'00005000000042000000' + dc h'00005000004420000000' + dc h'00005444442100000000' +lA anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444420000040' + dc h'00000000000052000040' + dc h'55555555555554000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444442000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000000444440' + +lB anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000140' + dc h'50000000000000000400' + dc h'50000000000000000140' + dc h'50000444444442000040' + dc h'50000400000005000040' + dc h'50000455555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +lC anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555500000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000255555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444444444440' + +lD anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555500000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000455555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +lE anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444444444440' + dc h'50000400000000000000' + dc h'50000455555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +lF anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444444444440' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'54444400000000000000' + +lG anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555500000000000000' + dc h'50000400000000000000' + dc h'50000400000005555550' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000255555555000040' + dc h'50000000000000000040' + dc h'50000000000000000140' + dc h'25000000000000001420' + dc h'02444444444444444200' + +lH anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005000040' + dc h'00000000000005000040' + dc h'55555555555555000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444444000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005444440' + +lI anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'00000055555550000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'55555550000044444440' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +lJ anop + dc h'00000000000005555550' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'55555500000005000040' + dc h'40000500000005000040' + dc h'40000500000005000040' + dc h'40000510000005000040' + dc h'40000255555552000040' + dc h'40000000000000000040' + dc h'41000000000000000140' + dc h'24100000000000001420' + dc h'02444444444444444200' + +lK anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000400000015000040' + dc h'50000400000024000040' + dc h'54444400000151000140' + dc h'00000000001520000230' + dc h'55555555554200001410' + dc h'50000000000000014200' + dc h'50000000000000042000' + dc h'50000000000000014200' + dc h'50000444444200001410' + dc h'50000400001420000230' + dc h'50000400000141000140' + dc h'50000400000023000040' + dc h'50000400000014000040' + dc h'50000400000004000040' + dc h'54444400000004444440' + +lL anop + dc h'55555500000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'54444400000000000000' + dc h'00000000000000000000' + dc h'55555500000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000455555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +lM anop + dc h'02555555202555555200' + dc h'25000000425000000420' + dc h'50000000252000000040' + dc h'50000000000000000040' + dc h'54444442000000000040' + dc h'00000005000242000040' + dc h'55555505000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405444405000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005444440' + +lN anop + dc h'55555500000005555550' + dc h'50000040000005000040' + dc h'50000004000005000040' + dc h'50000000400005000040' + dc h'54444444440005000040' + dc h'00000000000005000040' + dc h'55555555555005000040' + dc h'50000000000405000040' + dc h'50000000000045000040' + dc h'50000000000005000040' + dc h'50000444400000000040' + dc h'50000400050000000040' + dc h'50000400005000000040' + dc h'50000400000500000040' + dc h'50000400000050000040' + dc h'50000400000005000040' + dc h'54444400000001444440' + +lO anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555500000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000255555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +lP anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'50000444444444444200' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'54444400000000000000' + +lQ anop + dc h'02555555555555555200' + dc h'25000000000000000520' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'54444400000005000040' + dc h'50000400000525000040' + dc h'50000400005045000040' + dc h'50000400050005000040' + dc h'50000400500000000040' + dc h'50000400250000000040' + dc h'50000255555000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444444444440' + +lR anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'50000004444444444200' + dc h'05000000400000000000' + dc h'00500000040000000000' + dc h'00050000004000000000' + dc h'00005000000400000000' + dc h'00000500000040000000' + dc h'00000054444444000000' + +lS anop + dc h'02555555555555555550' + dc h'25000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444442000040' + dc h'00000000000004000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +lT anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'00000055555550000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000054444440000000' + +lU anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005000040' + dc h'00000000000005000040' + dc h'55555500000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000255555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +lV anop + dc h'55555500000000005550' + dc h'50000400000000050040' + dc h'50000400000000500040' + dc h'50000400000005000040' + dc h'54444400000050000040' + dc h'00000000000500000040' + dc h'55555500005000000400' + dc h'50000400050000004000' + dc h'50000400500000040000' + dc h'50000405000000400000' + dc h'50000450000004000000' + dc h'50000400000040000000' + dc h'50000000000400000000' + dc h'50000000004000000000' + dc h'50000000040000000000' + dc h'50000000400000000000' + dc h'54444444000000000000' + +lW anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005000040' + dc h'00000000000005000040' + dc h'55555505555505000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000252000252000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000242000000040' + dc h'25000000405000000420' + dc h'02444444202444444200' + +lX anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000410000015000040' + dc h'50000320000024000040' + dc h'54444441000151000140' + dc h'00000000001520000230' + dc h'15555555554200001410' + dc h'02410000000000014200' + dc h'00240000000000042000' + dc h'02510000000000014200' + dc h'15100002454200001410' + dc h'42000024101520000230' + dc h'51000141000151000140' + dc h'50000320000024000040' + dc h'50000410000015000040' + dc h'50000400000005000040' + dc h'54444400000005444440' + +lY anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000410000015000040' + dc h'50000320000024000040' + dc h'54444441000151000140' + dc h'00000000001520000230' + dc h'15555555554200001410' + dc h'02500000000000004200' + dc h'00250000000000142000' + dc h'00015100000001410000' + dc h'00000520000014000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000055444440000000' + +lZ anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000400' + dc h'54444444444444444000' + dc h'00000000000000000000' + dc h'00000005555555500000' + dc h'00000050000004000000' + dc h'00000500000040000000' + dc h'00005000000400000000' + dc h'00050000004000000000' + dc h'00500000040000000000' + dc h'05000000455555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +l0 anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555500055505555550' + dc h'50000400500405000040' + dc h'50000405000405000040' + dc h'50000450000405000040' + dc h'50000400000405000040' + dc h'50000000004005000040' + dc h'50000000045552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +l1 anop + dc h'00000555555550000000' + dc h'00005000000040000000' + dc h'00050000000040000000' + dc h'00500000000040000000' + dc h'05444444444440000000' + dc h'00000000000000000000' + dc h'00000055555550000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'55555550000044444440' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +l2 anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'02555555555555555550' + dc h'25000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'50000244444444444200' + dc h'50000400000000000000' + dc h'50000255555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +l3 anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000140' + dc h'50000000000000000410' + dc h'50000000000000000140' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +l4 anop + dc h'00000555555505555550' + dc h'00005000004005000040' + dc h'00050000040005000040' + dc h'00500000400005000040' + dc h'05444444000005000040' + dc h'00000000000005000040' + dc h'55555555555555000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005444440' + +l5 anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +l6 anop + dc h'02555555555555555550' + dc h'25000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444442000040' + dc h'50000400000005000040' + dc h'50000455555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +l7 anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000400' + dc h'54444444444444444000' + dc h'00000000000000000000' + dc h'00000005555555500000' + dc h'00000050000004000000' + dc h'00000500000040000000' + dc h'00005000000400000000' + dc h'00050000004000000000' + dc h'00500000040000000000' + dc h'05000000400000000000' + dc h'50000004000000000000' + dc h'50000040000000000000' + dc h'50000400000000000000' + dc h'54444000000000000000' + +l8 anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'51000000000000000140' + dc h'04000000000000000400' + dc h'51000000000000000140' + dc h'50000244444442000040' + dc h'50000400000005000040' + dc h'50000255555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +l9 anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000244444442000040' + dc h'50000400000005000040' + dc h'50000255555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +lexp anop + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + dc h'00000000000000000000' + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + +ldash anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + +lcol anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + dc h'00000000000000000000' + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + +lapos anop + dc h'00000055555500000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000054400400000000' + dc h'00000000500400000000' + dc h'00000000504200000000' + dc h'00000000542000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + +lcom anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000055555500000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000054400400000000' + dc h'00000000500400000000' + dc h'00000000504200000000' + dc h'00000000542000000000' + +lscol anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000055555500000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000054444400000000' + dc h'00000000000000000000' + dc h'00000055555500000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000054400400000000' + dc h'00000000500400000000' + dc h'00000000504200000000' + dc h'00000000542000000000' + +lper anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + +lSlash anop + dc h'00000000000005555550' + dc h'00000000000050000040' + dc h'00000000000500000040' + dc h'00000000005000000400' + dc h'00000000055444444000' + dc h'00000000000000000000' + dc h'00000005555555400000' + dc h'00000050000004000000' + dc h'00000500000040000000' + dc h'00005000000400000000' + dc h'00050000004000000000' + dc h'00500000040000000000' + dc h'05000000400000000000' + dc h'50000004000000000000' + dc h'50000040000000000000' + dc h'50000400000000000000' + dc h'54444000000000000000' + +lslash2 anop + dc h'55555500000000000000' + dc h'50000040000000000000' + dc h'50000004000000000000' + dc h'05000000400000000000' + dc h'00544444440000000000' + dc h'00000000000000000000' + dc h'00005555555500000000' + dc h'00000500000040000000' + dc h'00000050000004000000' + dc h'00000005000000400000' + dc h'00000000500000040000' + dc h'00000000050000004000' + dc h'00000000005000000400' + dc h'00000000000500000040' + dc h'00000000000050000040' + dc h'00000000000005000040' + dc h'00000000000000544440' + +lquest anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'00000025555552000040' + dc h'00000250000000000040' + dc h'00000500000000000040' + dc h'00000500000000000420' + dc h'00000544444444444200' + dc h'00000000000000000000' + dc h'00000555555000000000' + dc h'00000500004000000000' + dc h'00000500004000000000' + dc h'00000500004000000000' + dc h'00000544444000000000' + + msb off +NameStr entry + str 'Twilight PowerScroll 1.0 module. ' + +NameStr2 entry + str 'by Jim Maricondo, Matt Keller, and Jonah Stich. ' + +length entry + ds 2 +slowflag entry + ds 2 +noZip entry + ds 2 +taboffset ds 2 + +MyPortLoc anop +SCB dc i'$0080' portSCB +Pix dc i4'$E12000' ptrToPixImage + dc i'$00A0' width in bytes of each line in image +bounds dc i'0,0' boundary rectangle +mode dc i'200,640' was reverse! +MyPort ds $AA +orgPort ds 4 + + End +*-----------------------------------------------------------------------------* +*MemoryError Start +* +* pha +* PushLong #0 +* _SysFailMgr +* +* End +*---------------------------- diff --git a/source/twilight/sorry/powerscroll/pmod2.latest b/source/twilight/sorry/powerscroll/pmod2.latest new file mode 100644 index 0000000..1b20d28 Binary files /dev/null and b/source/twilight/sorry/powerscroll/pmod2.latest differ diff --git a/source/twilight/sorry/powerscroll/pmod21.ASM b/source/twilight/sorry/powerscroll/pmod21.ASM new file mode 100644 index 0000000..90f83de --- /dev/null +++ b/source/twilight/sorry/powerscroll/pmod21.ASM @@ -0,0 +1,2044 @@ + + msb off + longa on + longi on + absaddr on + mcopy power.mac + mcopy 7/m16.msc + mcopy 7/m16.util2 + mcopy 7/m16.quickdraw +*-----------------------------------------------------------------------------* +Letter gequ <0 +Position gequ Letter+4 +Stage gequ Position+2 +lines gequ Stage+2 +MasterID gequ lines+2 +MyID gequ MasterID+2 +twice gequ MyID+2 +Speed gequ twice+2 +bordercol gequ speed+2 + +topline gequ 91 +topline1 gequ topline+1 +topline2 gequ topline1+1 +topline3 gequ topline2+1 +topline4 gequ topline3+1 +topline5 gequ topline4+1 +topline6 gequ topline5+1 +topline7 gequ topline6+1 +topline8 gequ topline7+1 +topline9 gequ topline8+1 +topline10 gequ topline9+1 +topline11 gequ topline10+1 +topline12 gequ topline11+1 +topline13 gequ topline12+1 +topline14 gequ topline13+1 +topline15 gequ topline14+1 +topline16 gequ topline15+1 +topline18 gequ topLine16+2 + +shrb gequ $E1E1 +NewVideo gequ $E0C029 +SHR gequ $E12000 +SCBs gequ $E19D00 +Palette0 gequ $E19E00 +Palette1 gequ $E19E20 +Gun gequ $E0C02E +Border gequ $E0C034 +VBLWait gequ $E0C019 bit 7 = 1 if not VBL +CLRAN0 gequ $C059 set annunciator 0 +SETAN1 gequ $C05A clear annunciator 1 +SETAN2 gequ $C05C clear annunciator 2 +CLRAN2 gequ $C05D set annunciator 2 +*-----------------------------------------------------------------------------* +PowerDemo Start + Using FontDATA + + case off + phb + phk + plb + +* brl beginIt +* +* dc c' Twilight PowerScroll Module 1.0. ' +* dc c' January 19, 1991. This module and all modules and ' +* dc c'all other files distributed with Twilight 2.0 with the ' +* dc c'exception of ColorStrobe are copyrighted 1991 by Jim ' +* dc c'Maricondo and Jonah Stich. All rights reserved. ' + +beginIt anop +* LongResult +* _GetPort +* PullLong orgPort +* +* PushLong #MyPort Open a new grafPort +* _OpenPort +* +* PushLong #MyPortLoc make it point to our memory +* _SetPortLoc +* +* PushLong #bounds +* _SetPortRect +* + shortm + lda #$C1 turn on/linearize SHR + sta >NewVideo + longm + + shortm + lda >Border save old border color and make border + pha color now black + and #$0F + sta bordercol + pla + and #$F0 + sta >Border + longm + + ldx #$8000-2 zero shr display buffer + lda #0 +zeroSHR sta >SHR,x + dex + dex + bpl zeroSHR + +* ldx #0 +* txa +*scb2 sta >SCBs,x +* inx +* inx +* cpx #144 +* blt scb2 + +* ldx #0 +* lda #$8181 +*scb3 sta >SCBs+144,x +* inx +* inx +* cpx #54 +* blt scb3 + +* lda #$0000 +* sta >Palette1 + + ldx #$20-2 +palette lda PowerFontPal,x + sta >Palette0,x + dex + dex + bpl palette + +* PushWord #15 foreground color of text: white +* _SetForeColor +* PushWord #0 background color: black +* _SetBackColor +* +* PushWord #20 horizontal (x) +* PushWord #160-6 vertical (y) +* _MoveTo +* PushLong #NameStr +* _DrawString +* +* PushWord #20 horizontal (x) +* PushWord #169-6 vertical (y) +* _MoveTo +* PushLong #NameStr2 +* _DrawString + + DefineStack +oldDirectPage word +oldBank byte +returnAddress block 3 +MasterID word +MovePtr long +TextPtr long + + phd Right here we're doing several things.. + tsc First we're checking if the first 2 + tcd letters of the scroll text are "@@". + lda [TextPtr] If they are, then we set flags to tell + and #$00FF our draw and scroll routines to scroll + sta |length slow. + stz noZIP + stz slowflag Then we're getting the length byte of + ldy #1 the pascal string of text that was + lda [TextPtr],y passed to us. We store it as the + and #$7F7F length of the string for later use. + msb off Lastly, we're taking the address of the + cmp #'%%' textedit pascal string+1 and storing + bne noSlow it directly to the operand field of a + sta slowflag lda >Long opcode. This way we can use + lda TextPtr,s + inc a add 1 to skip over length byte + inc a add 1 more to skip over % + inc a add 1 more to skip over % + bra noSlow2 +noSlow anop + lda TextPtr,s >long,x addressing instead of [dp],y. + inc a [We're adding 1 to it to skip over the +noSlow2 sta FillStr1+1 length byte at the beginning of it] + sta FillStr2+1 + sta FillStr3+1 + lda TextPtr+2,s + sta FillStr1+3 + sta FillStr2+3 + sta FillStr3+3 + shortm + lda #$EA + sta FillStr1+4 + sta FillStr2+4 + sta FillStr3+4 + longm + pld + + stz Speed Here we're just initializing variables + lda slowFlag and setting speed based on the first + beq fastok speed flag set up above. + sta speed +fastok anop + stz Stage + stz Position + lda #^No + sta Letter+2 + lda #No + sta Letter + +* lda >$BCFF00 check for TWGS +* cmp #$5754 cmp #"TW" +* bne speed_ok no twgs +* lda >$BCFF02 +* cmp #$5347 cmp #"GS" +* bne speed_ok no twgs +* lda #-1 +* sta noZIP +*speed_ok anop +* +*CheckZip anop +** ldy #$0000 +**FindZip lda FindZip,y +** dey +** bne FindZip +* php THIS ROUTINE CHECKS FOR PRESENCE OF A +* shortm ZIPGS +* lda #$5A +* sta >SETAN1 clear annunciator 1 +* sta >SETAN1 clear annunciator 1 +* sta >SETAN1 clear annunciator 1 +* sta >SETAN1 clear annunciator 1 +* lda >CLRAN0 set annunciator 0 +* eor #$F8 +* sta Temp1 +* sta >CLRAN0 set annunciator 0 +* lda >CLRAN0 set annunciator 0 +* cmp Temp1 +* bne noZip01 +* eor #$F8 +* sta >CLRAN0 set annunciator 0 +* lda #$A5 +* sta >SETAN1 clear annunciator 1 +* longm +* lda #-1 +* sta noZip +*noZip01 plp +* +** lda noZIP +** beq skipZIP +** shortm +** lda >$E0C036 +** and #$7F +** sta >$E0C036 +** longm +** +**skipzip anop + phd +GetChar anop + pld + +* ldx TabOffset This is our color cycle routine. It +* cpx #EndTab-ColTab cycles the credits. :) +* blt ok +* stz TabOffset +* ldx #0 +*ok anop +* lda ColTab,x +* sta >Palette1+$6 +* sta >Palette1+$E +* sta >Palette1+$16 +* sta >Palette1+$1E +* inc TabOffset +* inc TabOffset + +* lda noZIP +* beq skipZIP + +* shortm +*waitVBL lda >VBLWait +* bmi waitVBL +*wait2 lda >VBLWait +* bpl wait2 +* longm +* bra SkipGUN + +skipZIP anop + shortm +wait lda >Gun We wait for the electron gun to be + cmp #(topline18/2)+$80 refreshing the line below the last + bne wait ; was blt; line of our scroll before we start + longm redrawing, so the drawing won't tear. + +skipGUN jsr Scroll Scroll over our text! + +CheckOther anop Now check if a key was pressed, etc. + phd + tsc + tcd + lda [MovePtr] + beq GetChar + + pld If so, quit. + +* lda noZIP +* beq skipZIP2 +* shortm +* lda >$E0C036 +* ora #$80 +* sta >$E0C036 +* longm +* +*skipzip2 anop + PushLong orgPort + _SetPort restore original port + + shortm restore users border color + lda >Border + and #$F0 + ora bordercol + sta >Border + longmx + + plb + lda 2,s Move up RTL on stack.. + sta 2+10,s + lda 1,s + sta 1+10,s + tsc Remove input paramaters + clc + adc #10 (MasterID+MovePtr+TextPtr) + tcs + clc + rtl + +Temp1 ds 2 +noZip ds 2 + + End +*-----------------------------------------------------------------------------* +DrawNextStep Start + Using FontDATA + + lda Speed Check if speed flag says to go fast + jeq FAST or slow. + +SLOW anop + lda Stage + beq Stage0_slow + cmp #1 + beq Stage1_slow + cmp #2 + beq Stage2_slow + cmp #3 + beq Stage3_slow + +Stage4_slow anop + ldy #4*2 Draw last 1/4th of this letter. + jsr drawUpdate + stz Stage Start at beginning of next letter. + inc Position Move one letter over. + rts + +Stage0_slow anop + lda length + cmp Position + bge contHere + stz Position +contHere ldx Position +fillStr1 entry + lda >String,x + nop + and #$007F + cmp #$20 + bge OkVar1 + inc Position + bra stage0_slow + +okVar1 anop + cmp #$7F + blt OkVar2 + inc Position + bra stage0_slow + +okVar2 anop + sec + sbc #$20 + asl a + tax + lda LetterAddrTab,x + sta Letter + + ldy #0*2 + jsr drawUpdate + lda #1 + sta Stage + rts + +Stage1_slow anop + ldy #1*2 + jsr drawUpdate + lda #2 + sta Stage + rts + +Stage2_slow anop + ldy #2*2 + jsr drawUpdate + lda #3 + sta Stage + rts + +Stage3_slow anop + ldy #3*2 + jsr drawUpdate + lda #4 + sta Stage + rts + +DrawUpdate anop + lda #17 # of lines of each character + sta lines + ldx #0 +s4_loop_slow lda [Letter],y + sta >(topLine*$A0)+SHR+$8E,x + tya + clc + adc #10 width in bytes of each character + tay + txa + clc + adc #$A0 length in bytes of a SHR line + tax + dec lines + bne s4_loop_slow + rts + + + +FAST anop + lda Stage + beq Stage0 + cmp #1 + beq Stage1 + cmp #2 + beq Stage2 + cmp #3 + beq Stage3 + +Stage4 anop + ldy #6 Draw last 1/6th of this pair of letters. + jsr DrawLong + stz Stage Start at beginning of next letter. + inc Position Move one letter over. + rts + + +Stage0 anop + lda length + cmp Position + bge contHere2 + stz Position +contHere2 ldx Position +fillStr2 entry + lda >String,x + nop + and #$007F + cmp #$20 + bge OkVar3 + inc Position + bra stage0 + +okVar3 anop + cmp #$7F + blt OkVar4 + inc Position + bra stage0 + +okVar4 anop + sec + sbc #$20 + asl a + tax + lda LetterAddrTab,x + sta Letter + + ldy #0 + jsr DrawLong + lda #1 + sta Stage + rts + + +Stage1 anop + ldy #4 + jsr DrawLong + lda #2 + sta Stage + rts + + +Stage3 anop + ldy #2 + jsr DrawLong + lda #4 + sta Stage + rts + + +Stage2 anop + ldy #8 + lda #17 # of lines of each character + sta lines + ldx #0 +s6_loop lda [Letter],y + sta >(topline*$A0)+SHR+$8C,x + tya + clc + adc #10 width in bytes of each character + tay + txa + clc + adc #$A0 length in bytes of a SHR line + tax + dec lines + bne s6_loop + + inc Position +loooop anop + lda length + cmp Position + bge contHere3 ;bne + stz Position +contHere3 ldx position +fillStr3 entry + lda >String,x + nop + and #$007F + cmp #$20 + bge OkVar5 + inc Position + bra loooop + +okVar5 anop + cmp #$7F + blt OkVar6 + inc Position + bra loooop + +okVar6 anop + sec + sbc #$20 + asl a + tax + lda LetterAddrTab,x + sta Letter + + ldy #0 + lda #17 # of lines of each character + sta lines + ldx #0 +s7_loop lda [Letter],y + sta >(topline*$A0)+SHR+$8E,x + tya + clc + adc #10 width in bytes of each character + tay + txa + clc + adc #$A0 length in bytes of a SHR line + tax + dec lines + bne s7_loop + + lda #3 + sta Stage + rts + + +DrawLong anop + lda #17 # of lines of each character + sta lines + ldx #0 +s4_loop lda #2 + sta twice +s5_loop lda [Letter],y + sta >(topLine*$A0)+SHR+$8C,x + iny + iny + inx + inx + dec twice + bne s5_loop + tya + clc + adc #10-4 width in bytes of each character + tay + txa + clc + adc #$A0-4 length in bytes of a SHR line + tax + dec lines + bne s4_loop + rts + + End +*-----------------------------------------------------------------------------* +Scroll Start + Using FontDATA + + pea SHRb + plb + plb + + lda Speed + bne SLOW_Scroll + + ldx #(topline*$A0)+16 1 + jsr ScrollIt + ldx #(topline1*$A0)+16 2 + jsr ScrollIt + ldx #(topline2*$A0)+16 3 + jsr ScrollIt + ldx #(topline3*$A0)+16 4 + jsr ScrollIt + ldx #(topline4*$A0)+16 5 + jsr ScrollIt + ldx #(topline5*$A0)+16 6 + jsr ScrollIt + ldx #(topline6*$A0)+16 7 + jsr ScrollIt + ldx #(topline7*$A0)+16 8 + jsr ScrollIt + ldx #(topline8*$A0)+16 9 + jsr ScrollIt + ldx #(topline9*$A0)+16 10 + jsr ScrollIt + ldx #(topline10*$A0)+16 11 + jsr ScrollIt + ldx #(topline11*$A0)+16 12 + jsr ScrollIt + ldx #(topline12*$A0)+16 13 + jsr ScrollIt + ldx #(topline13*$A0)+16 14 + jsr ScrollIt + ldx #(topline14*$A0)+16 15 + jsr ScrollIt + ldx #(topline15*$A0)+16 16 + jsr ScrollIt + ldx #(topline16*$A0)+16 17 + jsr ScrollIt + + phk + plb + jsr DrawNextStep + rts + + +SLOW_Scroll anop + ldx #(topline*$A0)+16 1 + jsr ScrollItSlow + ldx #(topline1*$A0)+16 2 + jsr ScrollItSlow + ldx #(topline2*$A0)+16 3 + jsr ScrollItSlow + ldx #(topline3*$A0)+16 4 + jsr ScrollItSlow + ldx #(topline4*$A0)+16 5 + jsr ScrollItSlow + ldx #(topline5*$A0)+16 6 + jsr ScrollItSlow + ldx #(topline6*$A0)+16 7 + jsr ScrollItSlow + ldx #(topline7*$A0)+16 8 + jsr ScrollItSlow + ldx #(topline8*$A0)+16 9 + jsr ScrollItSlow + ldx #(topline9*$A0)+16 10 + jsr ScrollItSlow + ldx #(topline10*$A0)+16 11 + jsr ScrollItSlow + ldx #(topline11*$A0)+16 12 + jsr ScrollItSlow + ldx #(topline12*$A0)+16 13 + jsr ScrollItSlow + ldx #(topline13*$A0)+16 14 + jsr ScrollItSlow + ldx #(topline14*$A0)+16 15 + jsr ScrollItSlow + ldx #(topline15*$A0)+16 16 + jsr ScrollItSlow + ldx #(topline16*$A0)+16 17 + jsr ScrollItSlow + + phk + plb + jsr DrawNextStep + rts + + +ScrollIt anop + lda |$2000,x + sta |$2000-4,x + + lda |$2002,x + sta |$2000-2,x + lda |$2004,x + sta |$2002-2,x + lda |$2006,x + sta |$2004-2,x + lda |$2008,x + sta |$2006-2,x + lda |$200A,x + sta |$2008-2,x + lda |$200C,x + sta |$200A-2,x + lda |$200E,x + sta |$200C-2,x + lda |$2010,x + sta |$200E-2,x + + lda |$2012,x + sta |$2010-2,x + lda |$2014,x + sta |$2012-2,x + lda |$2016,x + sta |$2014-2,x + lda |$2018,x + sta |$2016-2,x + lda |$201A,x + sta |$2018-2,x + lda |$201C,x + sta |$201A-2,x + lda |$201E,x + sta |$201C-2,x + lda |$2020,x + sta |$201E-2,x + + lda |$2022,x + sta |$2020-2,x + lda |$2024,x + sta |$2022-2,x + lda |$2026,x + sta |$2024-2,x + lda |$2028,x + sta |$2026-2,x + lda |$202A,x + sta |$2028-2,x + lda |$202C,x + sta |$202A-2,x + lda |$202E,x + sta |$202C-2,x + lda |$2030,x + sta |$202E-2,x + + lda |$2032,x + sta |$2030-2,x + lda |$2034,x + sta |$2032-2,x + lda |$2036,x + sta |$2034-2,x + lda |$2038,x + sta |$2036-2,x + lda |$203A,x + sta |$2038-2,x + lda |$203C,x + sta |$203A-2,x + lda |$203E,x + sta |$203C-2,x + lda |$2040,x + sta |$203E-2,x + + lda |$2042,x + sta |$2040-2,x + lda |$2044,x + sta |$2042-2,x + lda |$2046,x + sta |$2044-2,x + lda |$2048,x + sta |$2046-2,x + lda |$204A,x + sta |$2048-2,x + lda |$204C,x + sta |$204A-2,x + lda |$204E,x + sta |$204C-2,x + lda |$2050,x + sta |$204E-2,x + + lda |$2052,x + sta |$2050-2,x + lda |$2054,x + sta |$2052-2,x + lda |$2056,x + sta |$2054-2,x + lda |$2058,x + sta |$2056-2,x + lda |$205A,x + sta |$2058-2,x + lda |$205C,x + sta |$205A-2,x + lda |$205E,x + sta |$205C-2,x + lda |$2060,x + sta |$205E-2,x + + lda |$2062,x + sta |$2060-2,x + lda |$2064,x + sta |$2062-2,x + lda |$2066,x + sta |$2064-2,x + lda |$2068,x + sta |$2066-2,x + lda |$206A,x + sta |$2068-2,x + lda |$206C,x + sta |$206A-2,x + lda |$206E,x + sta |$206C-2,x + + + lda |$2070,x + sta |$206E-2,x + lda |$2072,x + sta |$2070-2,x + lda |$2074,x + sta |$2072-2,x + lda |$2076,x + sta |$2074-2,x + lda |$2078,x + sta |$2076-2,x + lda |$207A,x + sta |$2078-2,x + lda |$207C,x + sta |$207A-2,x + lda |$207E,x + sta |$207C-2,x + rts + + +ScrollItSlow anop + lda |$2000-2,x + sta |$2000-4,x + lda |$2000,x + sta |$2000-2,x + + lda |$2002,x + sta |$2000,x + lda |$2004,x + sta |$2002,x + lda |$2006,x + sta |$2004,x + lda |$2008,x + sta |$2006,x + lda |$200A,x + sta |$2008,x + lda |$200C,x + sta |$200A,x + lda |$200E,x + sta |$200C,x + lda |$2010,x + sta |$200E,x + + lda |$2012,x + sta |$2010,x + lda |$2014,x + sta |$2012,x + lda |$2016,x + sta |$2014,x + lda |$2018,x + sta |$2016,x + lda |$201A,x + sta |$2018,x + lda |$201C,x + sta |$201A,x + lda |$201E,x + sta |$201C,x + lda |$2020,x + sta |$201E,x + + lda |$2022,x + sta |$2020,x + lda |$2024,x + sta |$2022,x + lda |$2026,x + sta |$2024,x + lda |$2028,x + sta |$2026,x + lda |$202A,x + sta |$2028,x + lda |$202C,x + sta |$202A,x + lda |$202E,x + sta |$202C,x + lda |$2030,x + sta |$202E,x + + lda |$2032,x + sta |$2030,x + lda |$2034,x + sta |$2032,x + lda |$2036,x + sta |$2034,x + lda |$2038,x + sta |$2036,x + lda |$203A,x + sta |$2038,x + lda |$203C,x + sta |$203A,x + lda |$203E,x + sta |$203C,x + lda |$2040,x + sta |$203E,x + + lda |$2042,x + sta |$2040,x + lda |$2044,x + sta |$2042,x + lda |$2046,x + sta |$2044,x + lda |$2048,x + sta |$2046,x + lda |$204A,x + sta |$2048,x + lda |$204C,x + sta |$204A,x + lda |$204E,x + sta |$204C,x + lda |$2050,x + sta |$204E,x + + lda |$2052,x + sta |$2050,x + lda |$2054,x + sta |$2052,x + lda |$2056,x + sta |$2054,x + lda |$2058,x + sta |$2056,x + lda |$205A,x + sta |$2058,x + lda |$205C,x + sta |$205A,x + lda |$205E,x + sta |$205C,x + lda |$2060,x + sta |$205E,x + + lda |$2062,x + sta |$2060,x + lda |$2064,x + sta |$2062,x + lda |$2066,x + sta |$2064,x + lda |$2068,x + sta |$2066,x + lda |$206A,x + sta |$2068,x + lda |$206C,x + sta |$206A,x + lda |$206E,x + sta |$206C,x + lda |$2070,x + sta |$206E,x + + lda |$2072,x + sta |$2070,x + lda |$2074,x + sta |$2072,x + lda |$2076,x + sta |$2074,x + lda |$2078,x + sta |$2076,x + lda |$207A,x + sta |$2078,x + lda |$207C,x + sta |$207A,x + lda |$207E,x + sta |$207C,x + rts + + End +*-----------------------------------------------------------------------------* +FontDATA Data + +*ColTab anop +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$111,$111,$111' +* dc i'$222,$222,$222' +* dc i'$333,$333,$333' +* dc i'$444,$444,$444' +* dc i'$555,$555,$555' +* dc i'$666,$666,$666' +* dc i'$777,$777,$777' +* dc i'$888,$888,$888' +* dc i'$999,$999,$999' +* dc i'$aaa,$aaa,$aaa' +* dc i'$bbb,$bbb,$bbb' +* dc i'$ccc,$ccc,$ccc' +* dc i'$ddd,$ddd,$ddd' +* dc i'$eee,$eee,$eee' +* dc i'$fff,$fff,$fff' +* dc i'$eee,$eee,$eee' +* dc i'$ddd,$ddd,$ddd' +* dc i'$ccc,$ccc,$ccc' +* dc i'$bbb,$bbb,$bbb' +* dc i'$aaa,$aaa,$aaa' +* dc i'$999,$999,$999' +* dc i'$888,$888,$888' +* dc i'$777,$777,$777' +* dc i'$666,$666,$666' +* dc i'$555,$555,$555' +* dc i'$444,$444,$444' +* dc i'$333,$333,$333' +* dc i'$222,$222,$222' +* dc i'$111,$111,$111' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +* dc i'$0000,$0000,$0000,$0000,$0000,$0000,$0,$0,$0,$0' +*EndTab anop + +String anop + +LetterAddrTab anop + dc a'lspace,lexp,no,no,no,no,no,lapos,lshift9,lshift0,no,no' + dc a'lcom,ldash,lper,lslash' + dc a'l0,l1,l2,l3,l4,l5,l6,l7,l8,l9,lcol,lscol,no,no,no' + dc a'lquest,no,la' + dc a'lb,lc,ld,le,lf,lg,lh,li,lj,lk,ll,lm,ln,lo,lp,lq,lr,ls' + dc a'lt,lu,lv,lw,lx,ly,lz,no,lslash2' + dc a'no,no,no,no,la,lb,lc,ld,le,lf,lg,lh,li,lj,lk,ll,lm,ln' + dc a'lo,lp,lq,lr,ls,lt,lu,lv,lw,lx,ly,lz,no,no,no,no' + +* c' !"#$%&'()*+,-./' +* c'0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\' +* c']^_`abcdefghijklmnopqrstuvwxyz{|}~' + +PowerFontPal anop + dc h'0000 0500 0700 0a00 0c00 0f00' + dc h'f00f 0004 0008 0009 000a 000b' + dc h'000c 000d 000e 000f' + +no anop +lspace anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + +lshift9 ANOP + dc h'00000001255555500000' + dc h'00000025500000400000' + dc h'00000250000000400000' + dc h'00001500000000400000' + dc h'00002500000144400000' + dc h'00005000014400000000' + dc h'00005000040000000000' + dc h'00005000040000000000' + dc h'00005000040000000000' + dc h'00005000040000000000' + dc h'00005000040000000000' + dc h'00005000015400000000' + dc h'00002500000155500000' + dc h'00001500000000400000' + dc h'00000250000000400000' + dc h'00000025500000400000' + dc h'00000001254444400000' + +lshift0 ANOP + dc h'00005555552100000000' + dc h'00005000005520000000' + dc h'00005000000042000000' + dc h'00005000000004100000' + dc h'00005441000004200000' + dc h'00000004410000400000' + dc h'00000000040000400000' + dc h'00000000040000400000' + dc h'00000000040000400000' + dc h'00000000040000400000' + dc h'00000000040000400000' + dc h'00000004510000400000' + dc h'00005551000004200000' + dc h'00005000000004100000' + dc h'00005000000042000000' + dc h'00005000004420000000' + dc h'00005444442100000000' +lA anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444420000040' + dc h'00000000000052000040' + dc h'55555555555554000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444442000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000000444440' + +lB anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000140' + dc h'50000000000000000400' + dc h'50000000000000000140' + dc h'50000444444442000040' + dc h'50000400000005000040' + dc h'50000455555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +lC anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555500000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000255555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444444444440' + +lD anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555500000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000455555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +lE anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444444444440' + dc h'50000400000000000000' + dc h'50000455555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +lF anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444444444440' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'54444400000000000000' + +lG anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555500000000000000' + dc h'50000400000000000000' + dc h'50000400000005555550' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000255555555000040' + dc h'50000000000000000040' + dc h'50000000000000000140' + dc h'25000000000000001420' + dc h'02444444444444444200' + +lH anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005000040' + dc h'00000000000005000040' + dc h'55555555555555000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444444000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005444440' + +lI anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'00000055555550000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'55555550000044444440' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +lJ anop + dc h'00000000000005555550' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'55555500000005000040' + dc h'40000500000005000040' + dc h'40000500000005000040' + dc h'40000510000005000040' + dc h'40000255555552000040' + dc h'40000000000000000040' + dc h'41000000000000000140' + dc h'24100000000000001420' + dc h'02444444444444444200' + +lK anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000400000015000040' + dc h'50000400000024000040' + dc h'54444400000151000140' + dc h'00000000001520000230' + dc h'55555555554200001410' + dc h'50000000000000014200' + dc h'50000000000000042000' + dc h'50000000000000014200' + dc h'50000444444200001410' + dc h'50000400001420000230' + dc h'50000400000141000140' + dc h'50000400000023000040' + dc h'50000400000014000040' + dc h'50000400000004000040' + dc h'54444400000004444440' + +lL anop + dc h'55555500000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'54444400000000000000' + dc h'00000000000000000000' + dc h'55555500000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000455555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +lM anop + dc h'02555555202555555200' + dc h'25000000425000000420' + dc h'50000000252000000040' + dc h'50000000000000000040' + dc h'54444442000000000040' + dc h'00000005000242000040' + dc h'55555505000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405444405000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005444440' + +lN anop + dc h'55555500000005555550' + dc h'50000040000005000040' + dc h'50000004000005000040' + dc h'50000000400005000040' + dc h'54444444440005000040' + dc h'00000000000005000040' + dc h'55555555555005000040' + dc h'50000000000405000040' + dc h'50000000000045000040' + dc h'50000000000005000040' + dc h'50000444400000000040' + dc h'50000400050000000040' + dc h'50000400005000000040' + dc h'50000400000500000040' + dc h'50000400000050000040' + dc h'50000400000005000040' + dc h'54444400000001444440' + +lO anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555500000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000255555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +lP anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'50000444444444444200' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'50000400000000000000' + dc h'54444400000000000000' + +lQ anop + dc h'02555555555555555200' + dc h'25000000000000000520' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'54444400000005000040' + dc h'50000400000525000040' + dc h'50000400005045000040' + dc h'50000400050005000040' + dc h'50000400500000000040' + dc h'50000400250000000040' + dc h'50000255555000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444444444440' + +lR anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'50000004444444444200' + dc h'05000000400000000000' + dc h'00500000040000000000' + dc h'00050000004000000000' + dc h'00005000000400000000' + dc h'00000500000040000000' + dc h'00000054444444000000' + +lS anop + dc h'02555555555555555550' + dc h'25000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444442000040' + dc h'00000000000004000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +lT anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'00000055555550000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000054444440000000' + +lU anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005000040' + dc h'00000000000005000040' + dc h'55555500000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000255555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +lV anop + dc h'55555500000000005550' + dc h'50000400000000050040' + dc h'50000400000000500040' + dc h'50000400000005000040' + dc h'54444400000050000040' + dc h'00000000000500000040' + dc h'55555500005000000400' + dc h'50000400050000004000' + dc h'50000400500000040000' + dc h'50000405000000400000' + dc h'50000450000004000000' + dc h'50000400000040000000' + dc h'50000000000400000000' + dc h'50000000004000000000' + dc h'50000000040000000000' + dc h'50000000400000000000' + dc h'54444444000000000000' + +lW anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'50000400000005000040' + dc h'54444400000005000040' + dc h'00000000000005000040' + dc h'55555505555505000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000405000405000040' + dc h'50000252000252000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000242000000040' + dc h'25000000405000000420' + dc h'02444444202444444200' + +lX anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000410000015000040' + dc h'50000320000024000040' + dc h'54444441000151000140' + dc h'00000000001520000230' + dc h'15555555554200001410' + dc h'02410000000000014200' + dc h'00240000000000042000' + dc h'02510000000000014200' + dc h'15100002454200001410' + dc h'42000024101520000230' + dc h'51000141000151000140' + dc h'50000320000024000040' + dc h'50000410000015000040' + dc h'50000400000005000040' + dc h'54444400000005444440' + +lY anop + dc h'55555500000005555550' + dc h'50000400000005000040' + dc h'50000410000015000040' + dc h'50000320000024000040' + dc h'54444441000151000140' + dc h'00000000001520000230' + dc h'15555555554200001410' + dc h'02500000000000004200' + dc h'00250000000000142000' + dc h'00015100000001410000' + dc h'00000520000014000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000055444440000000' + +lZ anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000400' + dc h'54444444444444444000' + dc h'00000000000000000000' + dc h'00000005555555500000' + dc h'00000050000004000000' + dc h'00000500000040000000' + dc h'00005000000400000000' + dc h'00050000004000000000' + dc h'00500000040000000000' + dc h'05000000455555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +l0 anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555500055505555550' + dc h'50000400500405000040' + dc h'50000405000405000040' + dc h'50000450000405000040' + dc h'50000400000405000040' + dc h'50000000004005000040' + dc h'50000000045552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +l1 anop + dc h'00000555555550000000' + dc h'00005000000040000000' + dc h'00050000000040000000' + dc h'00500000000040000000' + dc h'05444444444440000000' + dc h'00000000000000000000' + dc h'00000055555550000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'00000050000040000000' + dc h'55555550000044444440' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +l2 anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'02555555555555555550' + dc h'25000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'50000244444444444200' + dc h'50000400000000000000' + dc h'50000255555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + +l3 anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000140' + dc h'50000000000000000410' + dc h'50000000000000000140' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +l4 anop + dc h'00000555555505555550' + dc h'00005000004005000040' + dc h'00050000040005000040' + dc h'00500000400005000040' + dc h'05444444000005000040' + dc h'00000000000005000040' + dc h'55555555555555000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005000040' + dc h'00000000000005444440' + +l5 anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +l6 anop + dc h'02555555555555555550' + dc h'25000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000444444442000040' + dc h'50000400000005000040' + dc h'50000455555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +l7 anop + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000400' + dc h'54444444444444444000' + dc h'00000000000000000000' + dc h'00000005555555500000' + dc h'00000050000004000000' + dc h'00000500000040000000' + dc h'00005000000400000000' + dc h'00050000004000000000' + dc h'00500000040000000000' + dc h'05000000400000000000' + dc h'50000004000000000000' + dc h'50000040000000000000' + dc h'50000400000000000000' + dc h'54444000000000000000' + +l8 anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'51000000000000000140' + dc h'04000000000000000400' + dc h'51000000000000000140' + dc h'50000244444442000040' + dc h'50000400000005000040' + dc h'50000255555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000420' + dc h'02444444444444444200' + +l9 anop + dc h'02555555555555555200' + dc h'25000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000244444442000040' + dc h'50000400000005000040' + dc h'50000255555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'25000000000000000040' + dc h'02444444444442000040' + dc h'00000000000005000040' + dc h'55555555555552000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000420' + dc h'54444444444444444200' + +lexp anop + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + dc h'00000000000000000000' + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + +ldash anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'55555555555555555550' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444444444440' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + +lcol anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + dc h'00000000000000000000' + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + +lapos anop + dc h'00000055555500000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000054400400000000' + dc h'00000000500400000000' + dc h'00000000504200000000' + dc h'00000000542000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + +lcom anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000055555500000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000054400400000000' + dc h'00000000500400000000' + dc h'00000000504200000000' + dc h'00000000542000000000' + +lscol anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000055555500000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000054444400000000' + dc h'00000000000000000000' + dc h'00000055555500000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000050000400000000' + dc h'00000054400400000000' + dc h'00000000500400000000' + dc h'00000000504200000000' + dc h'00000000542000000000' + +lper anop + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000000000000000000' + dc h'00000005555550000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005000040000000' + dc h'00000005444440000000' + +lSlash anop + dc h'00000000000005555550' + dc h'00000000000050000040' + dc h'00000000000500000040' + dc h'00000000005000000400' + dc h'00000000055444444000' + dc h'00000000000000000000' + dc h'00000005555555400000' + dc h'00000050000004000000' + dc h'00000500000040000000' + dc h'00005000000400000000' + dc h'00050000004000000000' + dc h'00500000040000000000' + dc h'05000000400000000000' + dc h'50000004000000000000' + dc h'50000040000000000000' + dc h'50000400000000000000' + dc h'54444000000000000000' + +lslash2 anop + dc h'55555500000000000000' + dc h'50000040000000000000' + dc h'50000004000000000000' + dc h'05000000400000000000' + dc h'00544444440000000000' + dc h'00000000000000000000' + dc h'00005555555500000000' + dc h'00000500000040000000' + dc h'00000050000004000000' + dc h'00000005000000400000' + dc h'00000000500000040000' + dc h'00000000050000004000' + dc h'00000000005000000400' + dc h'00000000000500000040' + dc h'00000000000050000040' + dc h'00000000000005000040' + dc h'00000000000000544440' + +lquest anop + dc h'55555555555555555200' + dc h'50000000000000000420' + dc h'50000000000000000040' + dc h'50000000000000000040' + dc h'54444444444442000040' + dc h'00000000000005000040' + dc h'00000025555552000040' + dc h'00000250000000000040' + dc h'00000500000000000040' + dc h'00000500000000000420' + dc h'00000544444444444200' + dc h'00000000000000000000' + dc h'00000555555000000000' + dc h'00000500004000000000' + dc h'00000500004000000000' + dc h'00000500004000000000' + dc h'00000544444000000000' + + msb off +*NameStr entry +* str 'Twilight PowerScroll 1.0 module. ' +* +*NameStr2 entry +* str 'by Jim Maricondo, Matt Keller, and Jonah Stich. ' + +length entry + ds 2 +slowflag entry + ds 2 +noZip entry + ds 2 +taboffset ds 2 + +MyPortLoc anop +SCB dc i'$0080' portSCB +Pix dc i4'$E12000' ptrToPixImage + dc i'$00A0' width in bytes of each line in image +bounds dc i'0,0' boundary rectangle +mode dc i'200,640' was reverse! +MyPort ds $AA +orgPort ds 4 + + End +*-----------------------------------------------------------------------------* +*MemoryError Start +* +* pha +* PushLong #0 +* _SysFailMgr +* +* End +*---------------------------- diff --git a/source/twilight/sorry/powerscroll/powerMod.Rez b/source/twilight/sorry/powerscroll/powerMod.Rez new file mode 100644 index 0000000..134313c --- /dev/null +++ b/source/twilight/sorry/powerscroll/powerMod.Rez @@ -0,0 +1,9 @@ +#include "types.rez" + +resource rPString (0x1) { + "PowerScroll 1.0" +}; + +resource rPString (0x2) { + "Text to scroll:" +}; diff --git a/source/twilight/sorry/slide/SLIDE2.e b/source/twilight/sorry/slide/SLIDE2.e new file mode 100644 index 0000000..8682fcb Binary files /dev/null and b/source/twilight/sorry/slide/SLIDE2.e differ diff --git a/source/twilight/sorry/slide/SLIDE3.e b/source/twilight/sorry/slide/SLIDE3.e new file mode 100644 index 0000000..36cc138 Binary files /dev/null and b/source/twilight/sorry/slide/SLIDE3.e differ diff --git a/source/twilight/sorry/slide/Slide3.Mac b/source/twilight/sorry/slide/Slide3.Mac new file mode 100644 index 0000000..3ced6d4 --- /dev/null +++ b/source/twilight/sorry/slide/Slide3.Mac @@ -0,0 +1,192 @@ + MACRO +&lab pushlong &addr,&offset +&lab ANOP + LCLC &C + LCLC &REST +&C AMID &addr,1,1 + AIF "&C"="#",.immediate + AIF "&C"="[",.zeropage + AIF C:&offset=0,.nooffset + AIF "&offset"="s",.stack + pushword &addr+2,&offset + pushword &addr,&offset + MEXIT +.nooffset + pushword &addr+2 + pushword &addr + MEXIT +.immediate +&REST AMID &addr,2,L:&addr-1 + dc I1'$F4',I2'(&REST)|-16' + dc I1'$F4',I2'&REST' + MEXIT +.stack + pushword &addr+2,s + pushword &addr+2,s + MEXIT +.zeropage + ldy #&offset+2 + pushword &addr,y + ldy #&offset + pushword &addr,y + MEND + MACRO +&lab pushword &SYSOPR +&lab ANOP + AIF C:&SYSOPR=0,.b + LCLC &C +&C AMID "&SYSOPR",1,1 + AIF ("&C"="#").AND.(S:LONGA),.immediate + lda &SYSOPR + pha + MEXIT +.b + pha + MEXIT +.immediate + LCLC &REST + LCLA &BL +&BL ASEARCH "&SYSOPR"," ",1 + AIF &BL>0,.a +&BL SETA L:&SYSOPR+1 +.a +&REST AMID "&SYSOPR",2,&BL-2 + dc I1'$F4',I2'&REST' + MEND + MACRO +&lab longmx +&lab ANOP + rep #%00110000 + longa on + longi on + MEND + MACRO +&lab longm +&lab ANOP + rep #%00100000 + longa on + MEND + MACRO +&lab shortmx +&lab ANOP + sep #%00110000 + longa off + longi off + MEND + MACRO +&lab shortm +&lab ANOP + sep #%00100000 + longa off + MEND + MACRO + DefineStack + GBLA &DummyPC +&DummyPC SETA 1 + MEND + MACRO +&lab BYTE +&lab equ &DummyPC +&DummyPC SETA &DummyPC+1 + MEND + MACRO +&lab WORD +&lab equ &DummyPC +&DummyPC SETA &DummyPC+2 + MEXIT + MEND + MACRO +&lab LONG +&lab equ &DummyPC +&DummyPC SETA &DummyPC+4 + MEND + MACRO +&lab BLOCK &Value + AIF C:&lab=0,.skiplab +&lab equ &DummyPC +.skiplab +&DummyPC SETA &DummyPC+&Value + MEND + MACRO +&LAB JCS &BP +&LAB BCC *+5 + BRL &BP + MEND + MACRO +&lab wordresult +&lab phd + MEND + MACRO +&lab longresult +&lab phd + phd + MEND + MACRO +&lab _NewHandle +&lab ldx #$0902 + jsl $E10000 + MEND + MACRO +&lab _DisposeAll +&lab ldx #$1102 + jsl $E10000 + MEND + MACRO +&lab _UnPackBytes +&lab ldx #$2703 + jsl $E10000 + MEND + MACRO +&lab _CloseGS ¶ms +&lab jsl $E100A8 + dc i2"$2014" + dc i4"¶ms" + MEND + MACRO +&lab _OpenGS ¶ms +&lab jsl $E100A8 + dc i2"$2010" + dc i4"¶ms" + MEND + MACRO +&lab _ReadGS ¶ms +&lab jsl $E100A8 + dc i2"$2012" + dc i4"¶ms" + MEND + MACRO +&lab _Int2Hex +&lab ldx #$220B + jsl $E10000 + MEND + MACRO +&lab _WriteCString +&lab ldx #$200C + jsl $E10000 + MEND + MACRO +&lab _DisposeHandle +&lab ldx #$1002 + jsl $E10000 + MEND + MACRO +&lab _GetDirEntryGS ¶ms +&lab jsl $E100A8 + dc i2"$201C" + dc i4"¶ms" + MEND + MACRO +&LAB JCC &BP +&LAB BCS *+5 + BRL &BP + MEND + MACRO +&LAB JNE &BP +&LAB BEQ *+5 + BRL &BP + MEND + MACRO +&lab _Multiply +&lab ldx #$090B + jsl $E10000 + MEND diff --git a/source/twilight/sorry/slide/slide.asm b/source/twilight/sorry/slide/slide.asm new file mode 100644 index 0000000..e9541c3 --- /dev/null +++ b/source/twilight/sorry/slide/slide.asm @@ -0,0 +1,1290 @@ + +*-----------------------------------------------------------------------------* +! DYA Demo Shell. +! +! Version 0.1, 07/17/90: First version recorded. +! +! Copyright 1990, Jim Maricondo. +*-----------------------------------------------------------------------------* + mcopy Slide.Mac + copy 7:e16.memory + copy 7:e16.event +*-----------------------------------------------------------------------------* +Strobe gequ $E0C000 addr of keyboard strobe register +ClearStrobe gequ $E0C010 access to clear keypress +VBLWait gequ $E0C019 bit 7 = 1 if not VBL +Screen gequ $E0C022 addr of text/background color register +NewVideo gequ $E0C029 addr of NewVideo register +Border gequ $E0C034 addr of border color register +Shadow gequ $E0C035 controls activation of SHR shadowing +gs_speed gequ $E0C036 speed register of IIgs +button0 gequ $E0C061 - if button 0 pushed +button1 gequ $E0C062 - if button 1 pushed +rdstickx gequ $E0C064 timer for paddle 0 (+ when done) +rdsticky gequ $E0C065 timer for paddle 1 (+ when done) +StateReg gequ $E0C068 controls bank $01 direct page & stack +resetstick gequ $E0C070 reset paddle timers + +oHeight gequ $0 height's offset into file +oWidth gequ $2 width's offset into file +oPalette gequ $4 palette's offset into file +oGraphic gequ $24 graphic's offset into file + +fadeDelay gequ $2F00 how fast to fadein/out (greater=slower) + +usePointer gequ 0 StartUpTools code to use pointer +useHandle gequ 1 StartUpTools code to use handle +useResource gequ 2 StartUpTools code to use resource + +kybdEnable gequ $0000 IntSource code to disable kybd ints +kybdDisable gequ $0001 enable kybd ints + +BackBank gequ $09 bank to store background +BackBankMem gequ $092000 +SHRBank gequ $E1 bank to do our drawing +SHRBankMem gequ $E12000 +SHRb gequ $E1E1 value to use to change "b" register +SHRSize gequ $8000 size of SHR screen + +ztemp1 gequ 0 temporary pointers +ztemp2 gequ ztemp1+4 +ztemp3 gequ ztemp2+4 +PicPtr gequ ztemp3+4 pointers to packed picture data +MyID gequ PicPtr+4 additional ID for extra memory +MasterID gequ MyID+2 memory ID assigned by memory manager +kbd gequ MasterID+2 original status of keyboard interrupts +SCBPtr gequ kbd+2 +DYAPtr gequ SCBPtr+4 +WidthTemp gequ DYAPtr+4 +HeightTemp gequ WidthTemp+2 +oldscreen gequ HeightTemp+2 +oldborder gequ oldscreen+2 +buffer1 gequ oldborder+2 +buffer2 gequ buffer1+4 +*-----------------------------------------------------------------------------* +MainEntry Start + Using MainDATA + + phk + plb + + jsr StartTools + jcs quit if error, quit + + _OpenGS Open_Prms open the directory file + lda ref_num + sta ref_num1 + sta ref_num2 + +Read_Dir anop + + _GetDirEntryGS GDE_Prms + bcs exit + + lda filetype + cmp #$C0 + beq contC0 + + cmp #$C1 + beq contC1 + + cmp #$99 + beq contDYA + + bra read_dir + +ContC0 anop + lda auxtype + beq PaintWorks if auxtype = $0000, then it's PW+ form + cmp #$0001 + beq Image if auxtype = $0001, then it's IMG form + cmp #$0002 if auxtype < > $0002 then it's not + bne read_dir supported + + jsr LoadAPF + bcc show + bra read_dir + +PaintWorks anop + jsr LoadPW + bra show + +Image anop + jsr LoadIMG + bra show + +ContC1 anop + lda auxtype + cmp #$0000 + bne read_dir + + jsr LoadC1 + + bra show + +ContDYA anop + lda auxtype + cmp #$DEAD + bne read_dir + + jsr loadDYA + +Show anop + jsr FadeIn + + msb on + + shortm +getkey lda >Strobe + bpl getkey + sta >ClearStrobe + cmp #'q' + beq exit01 + longm + + msb off + + jsr FadeOut + + bra read_dir + +exit01 longm + +Exit _CloseGS Close_Prms close directory file + +quit Entry + shortm + lda #$41 turn off SHR + sta >NewVideo + longm + + jsr RestoreText + + lda kbd if kybd ints were off in the first place + beq leaveKBDOff leave them off when we quit + + PushWord #kybdEnable if kybd ints were on in the beginning, + _IntSource turn them on when we quit + +leaveKBDOff anop + _CloseGS CloseParams close picture + + PushWord #useHandle + PushLong SSRecRefRet + _ShutDownTools shutdown all our tools + + PushWord MyID dispose all our allocated memory + _DisposeAll + + PushWord MasterID dispose our program's memory too + _MMShutDown + + _TLShutDown + + _Quit QParms + + End +*-----------------------------------------------------------------------------* +StartTools Start + Using MainDATA + + tdc save our program's assigned direct page + sta OurDP + + lda >ClearStrobe reset strobe + + shortm + lda >gs_speed set FAST 2.8mHZ speed + ora #$80 + sta >gs_speed + longm + + _TLStartUp + + WordResult + _MMStartUp + pla + sta MasterID + ora #$0100 + sta MyID + + LongResult startup most of our tools + PushWord MyID + PushWord #useResource StartStopRec is resource + PushLong #$00000002 Resource ID of StartStopRec + _StartUpTools + plx I pull these into X so if there is an + stx SSRecRefRet error, the accumulator is preserved + plx + stx SSRecRefRet+2 handle returned in SSRecRefRet + jcs StartToolError if error, quit and display message + + shortm turn off SHR + lda #$41 + sta >NewVideo + longm + + _HideCursor hide the blasted arrow cursor + + stz kbd + + WordResult check to see if kbds are on + _GetIRQEnable + pla + and #$0080 + beq KBDOff if zero, keyboard interrupts disabled + + lda #1 store nonzero value to kbd to indicate + sta kbd kbd ints were originally on + + PushWord #kybdDisable + _IntSource + +KBDOff anop + + shortm + lda >Screen + sta OldScreen + lda >Border + and #$0F + sta OldBorder + lda #0 + sta >Screen + lda >Border + and #$F0 + sta >Border + longm + + LongResult + PushLong #$400 + PushWord MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp3 + plx + stx ztemp3+2 + jcs MemoryError + + lda [ztemp3] + sta buffer1 + ldy #2 + lda [ztemp3],y + sta buffer1+2 + + LongResult + PushLong #$400 + PushWord MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp3 + plx + stx ztemp3+2 + jcs MemoryError + + lda [ztemp3] + sta buffer2 + ldy #2 + lda [ztemp3],y + sta buffer2+2 + + lda #0 + ldy #$400-2 +zero0 sta [buffer1],y + sta [buffer2],y + dey + dey + bpl zero0 + + clc indicate no error + rts + +RestoreText Entry + shortm + lda oldscreen + sta >Screen + lda >Border + and #$F0 + ora oldborder + sta >Border + longm + rts + + End +*-----------------------------------------------------------------------------* +LoadDYA Start + Using MainDATA + + ldx #$7D00-2 clear SHR display buffer + lda #0 +zero sta $E12000,x + dex + dex + bpl zero + + _OpenGS OpenParams open Mother Earth console + jcs Error1 + + lda OpenID + sta ReadID + sta CloseID + + lda eof + sta readLength + + LongResult + PushLong eof + PushWord MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp1 + plx + stx ztemp1+2 + jcs MemoryError + + lda [ztemp1] + sta PicPtr + sta PicDestIN + ldy #2 + lda [ztemp1],y + sta PicPtr+2 + sta PicDestIN+2 + + _ReadGS ReadParams + jcs Error1 + + LongResult + lda #0 + pha + lda [PicPtr] + pha + PushWord MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp3 + plx + stx ztemp3+2 + jcs MemoryError + + lda [ztemp3] + sta DYAPtr + ldy #2 + lda [ztemp3],y + sta DYAPtr+2 + + WordResult + lda PicPtr+2 + pha + lda PicPtr + inc a + inc a + pha + lda eof + dec a + dec a + pha + PushLong zTemp3 + lda [PicPtr] + sta TempSize + PushLong #TempSize + _UnPackBytes + pla + + PushLong ztemp1 + _DisposeHandle + + ldx #0 + txa +zeroSCB sta $E19D00,x + inx + inx + cpx #$C8 + bne zeroSCB + + ldx #0 + ldy #oPalette +copyPalette lda [DYAPtr],y + sta $E19E00,x + inx + inx + iny + iny + cpx #32 + bne copyPalette + + ldy #oWidth + lda [DYAPtr],y + sta WidthTemp + ldy #oHeight + lda [DYAPtr],y + sta HeightTemp + + lda #$2000 + sta fill+1 init fillin value + ldy #oGraphic + ldx #0 +copy1Line lda [DYAPtr],y +fill sta $E12000,x + inx + inx + iny + iny + cpx WidthTemp + bne copy1Line + + dec HeightTemp + beq return + + lda fill+1 load the $2000 + clc + adc #$A0 + sta fill+1 + ldx #0 + bra copy1line + +return anop + + PushLong ztemp3 dispose unpacked data too + _DisposeHandle + + rts + + End +*-----------------------------------------------------------------------------* +LoadAPF Start + Using MainDATA + + _OpenGS OpenParams open Image packed picture + jcs Error1 + + lda OpenID + sta ReadID + sta CloseID + + lda eof + sta readLength + + LongResult + PushLong eof + PushWord MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp1 + plx + stx ztemp1+2 + jcs MemoryError + + lda [zTemp1] + sta PicPtr + sta PicDestIN + ldy #2 + lda [zTemp1],y + sta PicPtr+2 + sta PicDestIN+2 + + _ReadGS ReadParams + jcs Error1 + + _CloseGS CloseParams + jcs Error1 + + lda eof load filesize + clc and add to it the beginning + adc PicPtr of the file buffer + sta endfile so we have the END of the file + + lda eof+2 + clc just do the same for the high + adc PicPtr+2 byte + sta endfile+2 + +checkmain ldy #5 load the 5th byte of the data + lda [PicPtr],y + and #$7F7F mask off the HIGH bits + cmp #$414D is it a "MA"? + jne notpref nope, this isn't the correct block + iny or file + iny + lda [PicPtr],y get the next two bytes + cmp #$4E49 is it a "IN"? + jne notpref nope + + ldy #11 (pixelsperscanline) + lda [PicPtr],y get the width of the picture + sta width + + cmp #320 is it 320 mode? + beq pref2 yes + cmp #640 is it 640 mode? + beq pref2 yes + + sec if it's neither, than we don't support + rts it, so abort this picture + +pref2 ldy #9 + lda [PicPtr],y get the master mode + sta preftemp store it + xba move it into the high byte also + ora preftemp so it'll be $0X0X + and #$F0F0 and just to make sure mask the high + + ldx #0 nibbles off +pref3 sta $E19D00,x store this master mode Scan Contro + inx Byte into the enter SCBs + inx data buffer + cpx #$C8 have we gone to 200 bytes yet? + bne pref3 nope + + LongResult + ldy #13 get the number of palettes + lda [PicPtr],y + pha multiply it by 32 bytes, which is + PushWord #$0020 how many bytes per palette + _Multiply + pla pull the result + sta palettenum store it as the byte offset past the + clc palettes information + adc #17 add 17 to it to make it correct + sta preftemp store it as the preferred temp area + plx + + lda PicPtr + clc load the 0 direct page space, and + adc preftemp add to it the data grabbed and store + sta SCBPtr it at $04 DP space. Now we have + lda PicPtr+2 a pointer to the SCBs information + sta SCBPtr+2 contained in the file!!! + + ldy preftemp load the pointer to the SCBs area + dey and subtract 2 from it so we + dey get the number of scb's + lda [PicPtr],y get the number of SCBs in the file + cmp #257 is it greater than 256? + blt scbsok yes + lda #256 no more than 256 SCBs +scbsok sta scbnum store it as the # of SCBs + ldx #0 initialize some counters + ldy #2 +scbs_set anop + lda [SCBPtr],y move the individual SCBs in the file + sta $E19D00,x + iny + iny + iny + iny ; we just did a double check by using + inx ; both the Master SCB and the individual SCBs + cpx scbnum + blt scbs_set + + lda palettenum load the pointer to the SCBs + sta preftemp and store it for future reference + + ldx #0 + ldy #13 initialize counters +pref5 iny + iny + lda [PicPtr],y we're just going to move the + sta $E19E00,x palettes from the file into the + inx actual palettes area ($E19E00) + inx + lda palettenum decrement the palette size + dec a + dec a + sta palettenum are we done yet? + bne pref5 no + + lda preftemp we're done + clc adjust the SCBs pointer to skip + adc #15 the first bytes + tay + lda [PicPtr],y load the number of SCBs + iny + iny + tax + tya +pref6 clc + adc #4 and adjust the pointer to + dex skip the entire SCBs area since + bne pref6 we've already worked with it + sta preftemp and finally point to the packed data! + + lda #$2000 reset where to unpack as Unpackbytes + sta ScreenHandle thrashes this info (how rude!! :) + lda #SHRBank + sta ScreenHandle+2 + + lda #$7D00 the size of the screen for + sta ScreenLength unpacking purposes + + WordResult + lda PicPtr+2 push hi byte of buffer containing + pha the packed data + lda PicPtr load the original buffer + clc + adc preftemp add the number of bytes to skip + pha + lda eof load the filesize + sec and subtract from it the + sbc preftemp number of bytes to skip + pha + PushLong #ScreenHandle push handle to screen + PushLong #ScreenLength push pointer to screen size word + _UnPackBytes + pla discard result + + PushLong zTemp1 get rid of packed data buffer + _DisposeHandle + + clc + rts + +! This routine helps us find the MAIN block in the APF file.. +notpref anop + ldy #2 we're merely + lda [PicPtr],y going to add + tay the block size of this "chunk" + lda [PicPtr] which is held in the + clc first 4 bytes of + adc PicPtr the apple preferred format + sta PicPtr to the buffer address, and + tya if we've reached + adc PicPtr+2 the end of the + sta PicPtr+2 file, we are + lda PicPtr done! + cmp endfile + lda PicPtr+2 + sbc endfile+2 + jcc checkmain + + sec if no MAIN chunk found, there is no + rts picture data, so abort + + End +*-----------------------------------------------------------------------------* +LoadPW Start + Using MainDATA + + _OpenGS OpenParams open Image packed picture + jcs Error1 + + lda OpenID + sta ReadID + sta CloseID + + lda eof + sta readLength + + LongResult + PushLong eof + PushWord MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp1 + plx + stx ztemp1+2 + jcs MemoryError + + lda [zTemp1] + sta PicPtr + sta PicDestIN + ldy #2 + lda [zTemp1],y + sta PicPtr+2 + sta PicDestIN+2 + + _ReadGS ReadParams + jcs Error1 + + _CloseGS CloseParams close picture + jcs Error1 + + ldy #0 +p_palette tyx + lda [PicPtr],y move the palette from the first 32 + sta $E19E00,x bytes of the file into the SHR palette + iny area (Palette $0) + iny + cpy #32 + bcc p_palette + + lda PicPtr skip the next $222 bytes that contain + clc patterns, background information, and + adc #$222 one nonpacked palette + sta PicPtr + + lda #$2000 reset where to unpack as Unpackbytes + sta ScreenHandle thrashes this info (how rude!! :) + lda #SHRBank + sta ScreenHandle+2 + + lda #$7D00 the size of the screen for + sta ScreenLength unpacking purposes + + WordResult + PushLong PicPtr pointer to packed data buffer + lda eof + sec subtract $222 bytes from the filesize + sbc #$222 ($202 plus $20 of palettes) and push + pha it as where size of packed data buffer + PushLong #ScreenHandle handle to where to unpack to + PushLong #ScreenLength ptr to word containing size of unpacked + _UnPackBytes data + pla discard result + + PushLong zTemp1 get rid of packed data buffer + _DisposeHandle + + rts + + End +*-----------------------------------------------------------------------------* +LoadIMG Start + Using MainDATA + + _OpenGS OpenParams open Image packed picture + jcs Error1 + + lda OpenID + sta ReadID + sta CloseID + + lda eof + sta readLength + + LongResult + PushLong eof + PushWord MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp1 + plx + stx ztemp1+2 + jcs MemoryError + + lda [zTemp1] + sta PicDestIN + ldy #2 + lda [zTemp1],y + sta PicDestIN+2 + + _ReadGS ReadParams + jcs Error1 + + _CloseGS CloseParams close picture + jcs Error1 + + lda #$2000 + sta ScreenHandle + lda #SHRBank + sta ScreenHandle+2 + + lda #SHRSize + sta ScreenLength + + WordResult + ldy #2 pointer to packed data buffer + lda [zTemp1],y + pha + lda [zTemp1] + pha + PushWord eof size of packed data buffer + PushLong #ScreenHandle handle to where to unpack to + PushLong #ScreenLength ptr to word containing size of unpacked + _UnPackBytes data + pla + + PushLong zTemp1 get rid of packed data buffer + _DisposeHandle + + rts + + End +*-----------------------------------------------------------------------------* +LoadC1 Start + Using MainDATA + + _OpenGS OpenParams open unpacked picture + jcs Error1 + + lda OpenID + sta ReadID + sta CloseID + + lda eof + sta readLength + + lda #$2000 + sta PicDestIN + lda #$E1 + sta PicDestIN+2 + + _ReadGS ReadParams + jcs Error1 + + _CloseGS CloseParams close picture + jcs Error1 + + rts + + End +*-----------------------------------------------------------------------------* +ErrorHandlers Start handle any errors that occur + Using ErrorDATA + +StartToolError Entry + + pha error number + PushLong #String1 + PushWord #4 number of characters + _Int2Hex + + shortm turn off graphics + lda #$41 + sta >NewVideo + longm + + jsr RestoreText + + PushLong #CString1 write error message + _WriteCString + + bra returnBack + +MemoryError Entry + + pha + PushLong #String2 + PushWord #4 + _Int2Hex + + shortm + lda #$41 + sta >NewVideo + longm + + jsr RestoreText + + PushLong #CString2 + _WriteCString + + bra returnBack + +Error1 Entry + + pha + PushLong #String + PushWord #4 + _Int2Hex + + shortm + lda #$41 + sta >NewVideo + longm + + jsr RestoreText + + PushLong #CString + _WriteCString + +! bra returnBack + +returnBack anop + + shortm +back lda >Strobe + bpl back + sta >ClearStrobe + longm + + sec + rts + + End +*-----------------------------------------------------------------------------* +MainDATA Data + +palettenum ds 2 ; offset into palettes from preferred +width ds 2 ; width of preferred file +preftemp ds 2 ; temporary Apple Preferred format cntr +scbnum ds 2 ; number of SCB we're on +endfile ds 4 ; end of buffer for Preferred + +ScreenHandle dc i4'SHRBankMem' +ScreenLength dc i'$8000' + +SSRecRefRet ds 4 + +openParams anop + dc i'12' pcount +openID ds 2 reference number + dc i4'name' pathname of file to open + dc i'0' request_access + dc i'0' resource_num + ds 2 access + ds 2 file_type + ds 4 aux_type + ds 2 storage_type + ds 8 create_td + ds 8 modify_td + ds 4 option_list +eof ds 4 + +QParms dc i4'0' + dc i'0' + +TempSize ds 2 +OurDP ds 2 + +readParams anop + dc i'4' +readID ds 2 reference number +picDestIN ds 4 pointer to DATA buffer +readLength ds 4 this many bytes + ds 4 how many xfered + +closeParams anop + dc i'1' +closeID ds 2 reference number + +Open_Prms anop + dc i'2' pcount +ref_num ds 2 +Name_Ptr dc i4'Directory' pointer to directory + +Directory GSStr '0/' + +Close_Prms anop + dc i'1' pcount +ref_num1 ds 2 + +GDE_Prms anop + dc i'13' pcount +ref_num2 ds 2 + ds 2 flags + dc i'1' base: increment + dc i'1' displacement = +1 + dc i4'NameBuff' name_buffer ptr + ds 2 entry_num +filetype ds 2 + ds 4 eof + ds 4 block_count + ds 8 create_td + ds 8 modify_td + ds 2 access +auxtype ds 4 + +NameBuff dc i'30' buffer size +name ds 2 length + ds 26 filename + + End +*-----------------------------------------------------------------------------* +ErrorDATA Data + +CString dc c'GS/OS error $' +string dc c'???? occured.',h'0d0a00' + +CString1 dc c'StartUpTools error $' +string1 dc c'???? occured.',h'0d0a00' + +CString2 anop + dc c'Unable to allocate picture memory.',h'0d0a',c'Making sure filetype is S16' + dc c', and purging memory may help.',h'0d0a0d0a' + dc c'Memory Manager error $' +string2 dc c'???? occured.',h'0d0a00' + + End +*-----------------------------------------------------------------------------* +FadeIn Start + Using FadeDATA + + php save old processor status register + + longa off + longi on + + shortm + + lda #$41 linearize and turn off SHR screen + sta >NewVideo + + ldx #$01FF + ldy #$03FF + +repeat0 lda $E19E00,x copy0 palettes into buffer + and #$F0 + + lsr a + lsr a + lsr a + lsr a + + sta [buffer2],y + dey + + lda $E19E00,x + and #$0F + sta [buffer2],y + + asl a + asl a + asl a + asl a + + dey + dex + bpl repeat0 + + lda #16 + sta amount + + longm + + lda #0 black out all SHR palettes + ldx #$200 +zero sta $E19E00-2,x + dex + dex + bne zero + + shortm + + lda #$C1 turn on SHR screen + sta >NewVideo + +finish anop + + longm + +dvalIn lda #FadeDelay delay so that we don't fade too fast +delay dec a + bne delay + + shortm + + bra fade + +quit anop + + plp restore old processor status register + + rts + + longi on + longa off + +fade anop + + shortm just to be on the safe side + + jsr prepare fade palettes in buffer + +waitVBL lda >VBLWait + bpl waitVBL +wait2 lda >VBLWait + bmi wait2 + + jsr fadeIt store buffer data to palettes + + dec amount done 16 times yet? + beq quit + + bra finish + +prepare anop + + ldy #$03FF + +repeat anop + lda [buffer1],y + clc + adc [buffer2],y + sta [buffer1],y + dey + bpl repeat + + rts + +fadeIt anop + + ldx #$01FF + ldy #$03FE + +more lda [buffer1],y + + lsr a + lsr a + lsr a + lsr a + + sta temp + + phy + iny + lda [buffer1],y + and #$F0 + ora temp + sta $E19E00,x + ply + + dey + dey + dex + bpl more + + rts + + End +*-----------------------------------------------------------------------------* +FadeOut Start + Using FadeDATA + + longa off + longi on + + php + + shortm + + lda #$C1 + sta >NewVideo + + ldx #$01FF + ldy #$03FF + +repeat0 lda $E19E00,x + and #$F0 + sta [buffer1],y + + lsr a + lsr a + lsr a + lsr a + + sta [buffer2],y + dey + + lda $E19E00,x + and #$0F + sta [buffer2],y + + asl a + asl a + asl a + asl a + + sta [buffer1],y + + dey + dex + bpl repeat0 + + lda #16 + sta amount + +finish anop + + longm + +dvalOut lda #FadeDelay +delay dec a + bne delay + + shortm + + bra fade + +quit anop + lda #$41 + sta >NewVideo + + plp + + rts + + longi on + longa off + +fade anop + + shortm + + jsr prepare + +waitVBL lda >VBLWait + bpl waitVBL +wait2 lda >VBLWait + bmi wait2 + + jsr fadeIt + + dec amount + beq quit + + bra finish + +prepare anop + + ldy #$03FF + +repeat anop + lda [buffer1],y + sec + sbc [buffer2],y + sta [buffer1],y + dey + bpl repeat + + rts + +fadeIt anop + + ldx #$01FF + ldy #$03FE + +more lda [buffer1],y + + lsr a + lsr a + lsr a + lsr a + + sta temp + + phy + iny + lda [buffer1],y + and #$F0 + ora temp + sta $E19E00,x + ply + + dey + dey + dex + bpl more + + rts + + End +*-----------------------------------------------------------------------------* +FadeDATA Data + +amount ds 1 +temp ds 1 + + End +*-----------------------------------------------------------------------------* \ No newline at end of file diff --git a/source/twilight/sorry/slide/slide2.asm b/source/twilight/sorry/slide/slide2.asm new file mode 100644 index 0000000..aa5be6e --- /dev/null +++ b/source/twilight/sorry/slide/slide2.asm @@ -0,0 +1,1281 @@ + +*-----------------------------------------------------------------------------* +! DYA Demo Shell. +! +! Version 0.1, 07/17/90: First version recorded. +! +! Copyright 1990, Jim Maricondo. +*-----------------------------------------------------------------------------* + mcopy Slide2.Mac + copy 7:e16.memory + copy 7:e16.event + mcopy 7:m16.util2 +*-----------------------------------------------------------------------------* +Strobe gequ $E0C000 addr of keyboard strobe register +ClearStrobe gequ $E0C010 access to clear keypress +VBLWait gequ $E0C019 bit 7 = 1 if not VBL +Screen gequ $E0C022 addr of text/background color register +NewVideo gequ $E0C029 addr of NewVideo register +Border gequ $E0C034 addr of border color register +Shadow gequ $E0C035 controls activation of SHR shadowing +gs_speed gequ $E0C036 speed register of IIgs +button0 gequ $E0C061 - if button 0 pushed +button1 gequ $E0C062 - if button 1 pushed +rdstickx gequ $E0C064 timer for paddle 0 (+ when done) +rdsticky gequ $E0C065 timer for paddle 1 (+ when done) +StateReg gequ $E0C068 controls bank $01 direct page & stack +resetstick gequ $E0C070 reset paddle timers + +oHeight gequ $0 height's offset into file +oWidth gequ $2 width's offset into file +oPalette gequ $4 palette's offset into file +oGraphic gequ $24 graphic's offset into file + +fadeDelay gequ $2F00 how fast to fadein/out (greater=slower) + +usePointer gequ 0 StartUpTools code to use pointer +useHandle gequ 1 StartUpTools code to use handle +useResource gequ 2 StartUpTools code to use resource + +kybdEnable gequ $0000 IntSource code to disable kybd ints +kybdDisable gequ $0001 enable kybd ints + +BackBank gequ $09 bank to store background +BackBankMem gequ $092000 +SHRBank gequ $E1 bank to do our drawing +SHRBankMem gequ $E12000 +SHRb gequ $E1E1 value to use to change "b" register +SHRSize gequ $8000 size of SHR screen + +ztemp1 gequ 0 temporary pointers +ztemp2 gequ ztemp1+4 +ztemp3 gequ ztemp2+4 +PicPtr gequ ztemp3+4 pointers to packed picture data +MyID gequ PicPtr+4 additional ID for extra memory +SCBPtr gequ myID+2 +DYAPtr gequ SCBPtr+4 +WidthTemp gequ DYAPtr+4 +HeightTemp gequ WidthTemp+2 +oldscreen gequ HeightTemp+2 +oldborder gequ oldscreen+2 +buffer1 gequ oldborder+2 +buffer2 gequ buffer1+4 +*-----------------------------------------------------------------------------* +MainEntry Start + Using MainDATA + + DefineStack +oldbank byte +returnAddress block 3 +MovePtr long +TextPtrHi word +TextPtrLo word + + phb + phk + plb + + ora #$0100 modifiy our ID passed in accumulator + sta myID + + jsr StartTools + jcs quit if error, quit + + phd + tsc + tcd + lda [TextPtrLo] length byte + beq use_default + + shortm + lda [TextPtrLo] get length byte (again!) + sta DirBuffer + stz DirBuffer+2 + + ldy #1 make length byte into length word! + ldx #0 +string lda [TextPtrLo],y + sta nom,x + iny + inx + cpx dirbuffer copied whole string? + bne string + longm + + pld + + lda #DirBuffer + sta name_ptr + lda #^DirBuffer + sta name_ptr+2 + bra cont00 + +use_default anop + pld + lda #defaultDir + sta name_ptr + lda #^defaultDir + sta name_ptr+2 + +cont00 anop + _OpenGS Open_Prms open the directory file + lda ref_num + sta ref_num1 + sta ref_num2 + +Read_Dir anop + + _GetDirEntryGS GDE_Prms + bcs exit + + lda filetype + cmp #$C0 + beq contC0 + + cmp #$C1 + beq contC1 + + cmp #$99 + beq contDYA + + bra read_dir + +ContC0 anop + lda auxtype + beq PaintWorks if auxtype = $0000, then it's PW+ form + cmp #$0001 + beq Image if auxtype = $0001, then it's IMG form + cmp #$0002 if auxtype < > $0002 then it's not + bne read_dir supported + + jsr LoadAPF + bcc show + bra read_dir + +PaintWorks anop + jsr LoadPW + bra show + +Image anop + jsr LoadIMG + bra show + +ContC1 anop + lda auxtype + cmp #$0000 + bne read_dir + + jsr LoadC1 + + bra show + +ContDYA anop + lda auxtype + cmp #$DEAD + bne read_dir + + jsr loadDYA + +Show anop + jsr FadeIn + + phd + tsc + tcd + lda [MovePtr] + bne exit01 + pld + + lda #$C000 +delay dec a + bne delay + + jsr FadeOut + + bra read_dir + +exit01 pld + +Exit _CloseGS Close_Prms close directory file + +quit Entry + jsr RestoreText + + _CloseGS CloseParams close picture + + pei MyID dispose all our allocated memory + _DisposeAll + + shortm turn shr back on too + lda #$C1 + sta >NewVideo + longm + + plb + rtl + + End +*-----------------------------------------------------------------------------* +StartTools Start + Using MainDATA + + shortm + lda >gs_speed set FAST 2.8mHZ speed + ora #$80 + sta >gs_speed + longm + + shortm + lda >Screen + sta OldScreen + lda >Border + and #$0F + sta OldBorder + lda #0 + sta >Screen + lda >Border + and #$F0 + sta >Border + longm + + shortm turn off SHR + lda #$41 + sta >NewVideo + longm + + LongResult + PushLong #$400 + PushWord MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp3 + plx + stx ztemp3+2 + jcs MemoryError + + lda [ztemp3] + sta buffer1 + ldy #2 + lda [ztemp3],y + sta buffer1+2 + + LongResult + PushLong #$400 + PushWord MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp3 + plx + stx ztemp3+2 + jcs MemoryError + + lda [ztemp3] + sta buffer2 + ldy #2 + lda [ztemp3],y + sta buffer2+2 + + lda #0 + ldy #$400-2 +zero0 sta [buffer1],y + sta [buffer2],y + dey + dey + bpl zero0 + + clc indicate no error + rts + +RestoreText Entry + shortm + lda oldscreen + sta >Screen + lda >Border + and #$F0 + ora oldborder + sta >Border + longm + rts + + End +*-----------------------------------------------------------------------------* +LoadDYA Start + Using MainDATA + + ldx #$7D00-2 clear SHR display buffer + lda #0 +zero sta $E12000,x + dex + dex + bpl zero + + _OpenGS OpenParams open Mother Earth console + jcs Error1 + + lda OpenID + sta ReadID + sta CloseID + + lda eof + sta readLength + + LongResult + PushLong eof + PushWord MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp1 + plx + stx ztemp1+2 + jcs MemoryError + + lda [ztemp1] + sta PicPtr + sta PicDestIN + ldy #2 + lda [ztemp1],y + sta PicPtr+2 + sta PicDestIN+2 + + _ReadGS ReadParams + jcs Error1 + + LongResult + lda #0 + pha + lda [PicPtr] + pha + PushWord MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp3 + plx + stx ztemp3+2 + jcs MemoryError + + lda [ztemp3] + sta DYAPtr + ldy #2 + lda [ztemp3],y + sta DYAPtr+2 + + WordResult + lda PicPtr+2 + pha + lda PicPtr + inc a + inc a + pha + lda eof + dec a + dec a + pha + PushLong zTemp3 + lda [PicPtr] + sta TempSize + PushLong #TempSize + _UnPackBytes + pla + + PushLong ztemp1 + _DisposeHandle + + ldx #0 + txa +zeroSCB sta $E19D00,x + inx + inx + cpx #$C8 + bne zeroSCB + + ldx #0 + ldy #oPalette +copyPalette lda [DYAPtr],y + sta $E19E00,x + inx + inx + iny + iny + cpx #32 + bne copyPalette + + ldy #oWidth + lda [DYAPtr],y + sta WidthTemp + ldy #oHeight + lda [DYAPtr],y + sta HeightTemp + + lda #$2000 + sta fill+1 init fillin value + ldy #oGraphic + ldx #0 +copy1Line lda [DYAPtr],y +fill sta $E12000,x + inx + inx + iny + iny + cpx WidthTemp + bne copy1Line + + dec HeightTemp + beq return + + lda fill+1 load the $2000 + clc + adc #$A0 + sta fill+1 + ldx #0 + bra copy1line + +return anop + + PushLong ztemp3 dispose unpacked data too + _DisposeHandle + + rts + + End +*-----------------------------------------------------------------------------* +LoadAPF Start + Using MainDATA + + _OpenGS OpenParams open Image packed picture + jcs Error1 + + lda OpenID + sta ReadID + sta CloseID + + lda eof + sta readLength + + LongResult + PushLong eof + PushWord MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp1 + plx + stx ztemp1+2 + jcs MemoryError + + lda [zTemp1] + sta PicPtr + sta PicDestIN + ldy #2 + lda [zTemp1],y + sta PicPtr+2 + sta PicDestIN+2 + + _ReadGS ReadParams + jcs Error1 + + _CloseGS CloseParams + jcs Error1 + + lda eof load filesize + clc and add to it the beginning + adc PicPtr of the file buffer + sta endfile so we have the END of the file + + lda eof+2 + clc just do the same for the high + adc PicPtr+2 byte + sta endfile+2 + +checkmain ldy #5 load the 5th byte of the data + lda [PicPtr],y + and #$7F7F mask off the HIGH bits + cmp #$414D is it a "MA"? + jne notpref nope, this isn't the correct block + iny or file + iny + lda [PicPtr],y get the next two bytes + cmp #$4E49 is it a "IN"? + jne notpref nope + + ldy #11 (pixelsperscanline) + lda [PicPtr],y get the width of the picture + sta width + + cmp #320 is it 320 mode? + beq pref2 yes + cmp #640 is it 640 mode? + beq pref2 yes + + sec if it's neither, than we don't support + rts it, so abort this picture + +pref2 ldy #9 + lda [PicPtr],y get the master mode + sta preftemp store it + xba move it into the high byte also + ora preftemp so it'll be $0X0X + and #$F0F0 and just to make sure mask the high + + ldx #0 nibbles off +pref3 sta $E19D00,x store this master mode Scan Contro + inx Byte into the enter SCBs + inx data buffer + cpx #$C8 have we gone to 200 bytes yet? + bne pref3 nope + + LongResult + ldy #13 get the number of palettes + lda [PicPtr],y + pha multiply it by 32 bytes, which is + PushWord #$0020 how many bytes per palette + _Multiply + pla pull the result + sta palettenum store it as the byte offset past the + clc palettes information + adc #17 add 17 to it to make it correct + sta preftemp store it as the preferred temp area + plx + + lda PicPtr + clc load the 0 direct page space, and + adc preftemp add to it the data grabbed and store + sta SCBPtr it at $04 DP space. Now we have + lda PicPtr+2 a pointer to the SCBs information + sta SCBPtr+2 contained in the file!!! + + ldy preftemp load the pointer to the SCBs area + dey and subtract 2 from it so we + dey get the number of scb's + lda [PicPtr],y get the number of SCBs in the file + cmp #257 is it greater than 256? + blt scbsok yes + lda #256 no more than 256 SCBs +scbsok sta scbnum store it as the # of SCBs + ldx #0 initialize some counters + ldy #2 +scbs_set anop + lda [SCBPtr],y move the individual SCBs in the file + sta $E19D00,x + iny + iny + iny + iny ; we just did a double check by using + inx ; both the Master SCB and the individual SCBs + cpx scbnum + blt scbs_set + + lda palettenum load the pointer to the SCBs + sta preftemp and store it for future reference + + ldx #0 + ldy #13 initialize counters +pref5 iny + iny + lda [PicPtr],y we're just going to move the + sta $E19E00,x palettes from the file into the + inx actual palettes area ($E19E00) + inx + lda palettenum decrement the palette size + dec a + dec a + sta palettenum are we done yet? + bne pref5 no + + lda preftemp we're done + clc adjust the SCBs pointer to skip + adc #15 the first bytes + tay + lda [PicPtr],y load the number of SCBs + iny + iny + tax + tya +pref6 clc + adc #4 and adjust the pointer to + dex skip the entire SCBs area since + bne pref6 we've already worked with it + sta preftemp and finally point to the packed data! + + lda #$2000 reset where to unpack as Unpackbytes + sta ScreenHandle thrashes this info (how rude!! :) + lda #SHRBank + sta ScreenHandle+2 + + lda #$7D00 the size of the screen for + sta ScreenLength unpacking purposes + + WordResult + lda PicPtr+2 push hi byte of buffer containing + pha the packed data + lda PicPtr load the original buffer + clc + adc preftemp add the number of bytes to skip + pha + lda eof load the filesize + sec and subtract from it the + sbc preftemp number of bytes to skip + pha + PushLong #ScreenHandle push handle to screen + PushLong #ScreenLength push pointer to screen size word + _UnPackBytes + pla discard result + + PushLong zTemp1 get rid of packed data buffer + _DisposeHandle + + clc + rts + +! This routine helps us find the MAIN block in the APF file.. +notpref anop + ldy #2 we're merely + lda [PicPtr],y going to add + tay the block size of this "chunk" + lda [PicPtr] which is held in the + clc first 4 bytes of + adc PicPtr the apple preferred format + sta PicPtr to the buffer address, and + tya if we've reached + adc PicPtr+2 the end of the + sta PicPtr+2 file, we are + lda PicPtr done! + cmp endfile + lda PicPtr+2 + sbc endfile+2 + jcc checkmain + + sec if no MAIN chunk found, there is no + rts picture data, so abort + + End +*-----------------------------------------------------------------------------* +LoadPW Start + Using MainDATA + + _OpenGS OpenParams open Image packed picture + jcs Error1 + + lda OpenID + sta ReadID + sta CloseID + + lda eof + sta readLength + + LongResult + PushLong eof + PushWord MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp1 + plx + stx ztemp1+2 + jcs MemoryError + + lda [zTemp1] + sta PicPtr + sta PicDestIN + ldy #2 + lda [zTemp1],y + sta PicPtr+2 + sta PicDestIN+2 + + _ReadGS ReadParams + jcs Error1 + + _CloseGS CloseParams close picture + jcs Error1 + + ldy #0 +p_palette tyx + lda [PicPtr],y move the palette from the first 32 + sta $E19E00,x bytes of the file into the SHR palette + iny area (Palette $0) + iny + cpy #32 + bcc p_palette + + lda PicPtr skip the next $222 bytes that contain + clc patterns, background information, and + adc #$222 one nonpacked palette + sta PicPtr + + lda #$2000 reset where to unpack as Unpackbytes + sta ScreenHandle thrashes this info (how rude!! :) + lda #SHRBank + sta ScreenHandle+2 + + lda #$7D00 the size of the screen for + sta ScreenLength unpacking purposes + + WordResult + PushLong PicPtr pointer to packed data buffer + lda eof + sec subtract $222 bytes from the filesize + sbc #$222 ($202 plus $20 of palettes) and push + pha it as where size of packed data buffer + PushLong #ScreenHandle handle to where to unpack to + PushLong #ScreenLength ptr to word containing size of unpacked + _UnPackBytes data + pla discard result + + PushLong zTemp1 get rid of packed data buffer + _DisposeHandle + + rts + + End +*-----------------------------------------------------------------------------* +LoadIMG Start + Using MainDATA + + _OpenGS OpenParams open Image packed picture + jcs Error1 + + lda OpenID + sta ReadID + sta CloseID + + lda eof + sta readLength + + LongResult + PushLong eof + PushWord MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp1 + plx + stx ztemp1+2 + jcs MemoryError + + lda [zTemp1] + sta PicDestIN + ldy #2 + lda [zTemp1],y + sta PicDestIN+2 + + _ReadGS ReadParams + jcs Error1 + + _CloseGS CloseParams close picture + jcs Error1 + + lda #$2000 + sta ScreenHandle + lda #SHRBank + sta ScreenHandle+2 + + lda #SHRSize + sta ScreenLength + + WordResult + ldy #2 pointer to packed data buffer + lda [zTemp1],y + pha + lda [zTemp1] + pha + PushWord eof size of packed data buffer + PushLong #ScreenHandle handle to where to unpack to + PushLong #ScreenLength ptr to word containing size of unpacked + _UnPackBytes data + pla + + PushLong zTemp1 get rid of packed data buffer + _DisposeHandle + + rts + + End +*-----------------------------------------------------------------------------* +LoadC1 Start + Using MainDATA + + _OpenGS OpenParams open unpacked picture + jcs Error1 + + lda OpenID + sta ReadID + sta CloseID + + lda eof + sta readLength + + lda #$2000 + sta PicDestIN + lda #$E1 + sta PicDestIN+2 + + _ReadGS ReadParams + jcs Error1 + + _CloseGS CloseParams close picture + jcs Error1 + + rts + + End +*-----------------------------------------------------------------------------* +ErrorHandlers Start handle any errors that occur + Using ErrorDATA + +StartToolError Entry + + pha error number + PushLong #String1 + PushWord #4 number of characters + _Int2Hex + + shortm turn off graphics + lda #$41 + sta >NewVideo + longm + + jsr RestoreText + + PushLong #CString1 write error message + _WriteCString + + bra returnBack + +MemoryError Entry + + pha + PushLong #String2 + PushWord #4 + _Int2Hex + + shortm + lda #$41 + sta >NewVideo + longm + + jsr RestoreText + + PushLong #CString2 + _WriteCString + + bra returnBack + +Error1 Entry + + pha + PushLong #String + PushWord #4 + _Int2Hex + + shortm + lda #$41 + sta >NewVideo + longm + + jsr RestoreText + + PushLong #CString + _WriteCString + +! bra returnBack + +returnBack anop + + shortm +back lda >Strobe + bpl back + sta >ClearStrobe + longm + + sec + rts + + End +*-----------------------------------------------------------------------------* +MainDATA Data + +palettenum ds 2 ; offset into palettes from preferred +width ds 2 ; width of preferred file +preftemp ds 2 ; temporary Apple Preferred format cntr +scbnum ds 2 ; number of SCB we're on +endfile ds 4 ; end of buffer for Preferred + +ScreenHandle dc i4'SHRBankMem' +ScreenLength dc i'$8000' + +SSRecRefRet ds 4 + +openParams anop + dc i'12' pcount +openID ds 2 reference number + dc i4'name' pathname of file to open + dc i'0' request_access + dc i'0' resource_num + ds 2 access + ds 2 file_type + ds 4 aux_type + ds 2 storage_type + ds 8 create_td + ds 8 modify_td + ds 4 option_list +eof ds 4 + +QParms dc i4'0' + dc i'0' + +TempSize ds 2 +OurDP ds 2 + +readParams anop + dc i'4' +readID ds 2 reference number +picDestIN ds 4 pointer to DATA buffer +readLength ds 4 this many bytes + ds 4 how many xfered + +closeParams anop + dc i'1' +closeID ds 2 reference number + +Open_Prms anop + dc i'2' pcount +ref_num ds 2 +Name_Ptr dc i4'DefaultDir' pointer to directory +DefaultDir GSStr '0:' + +DirBuffer anop + dc i'0000' length word +nom ds 33 + +Close_Prms anop + dc i'1' pcount +ref_num1 ds 2 + +GDE_Prms anop + dc i'13' pcount +ref_num2 ds 2 + ds 2 flags + dc i'1' base: increment + dc i'1' displacement = +1 + dc i4'NameBuff' name_buffer ptr + ds 2 entry_num +filetype ds 2 + ds 4 eof + ds 4 block_count + ds 8 create_td + ds 8 modify_td + ds 2 access +auxtype ds 4 + +NameBuff dc i'30' buffer size +name ds 2 length + ds 26 filename + + End +*-----------------------------------------------------------------------------* +ErrorDATA Data + +CString dc c'GS/OS error $' +string dc c'???? occured.',h'0d0a00' + +CString1 dc c'StartUpTools error $' +string1 dc c'???? occured.',h'0d0a00' + +CString2 anop + dc c'Unable to allocate picture memory.',h'0d0a',c'Making sure filetype is S16' + dc c', and purging memory may help.',h'0d0a0d0a' + dc c'Memory Manager error $' +string2 dc c'???? occured.',h'0d0a00' + + End +*-----------------------------------------------------------------------------* +FadeIn Start + Using FadeDATA + + php save old processor status register + + longa off + longi on + + shortm + + lda #$41 linearize and turn off SHR screen + sta >NewVideo + + ldx #$01FF + ldy #$03FF + +repeat0 lda $E19E00,x copy0 palettes into buffer + and #$F0 + + lsr a + lsr a + lsr a + lsr a + + sta [buffer2],y + dey + + lda $E19E00,x + and #$0F + sta [buffer2],y + + asl a + asl a + asl a + asl a + + dey + dex + bpl repeat0 + + lda #16 + sta amount + + longm + + lda #0 black out all SHR palettes + ldx #$200 +zero sta $E19E00-2,x + dex + dex + bne zero + + shortm + + lda #$C1 turn on SHR screen + sta >NewVideo + +finish anop + + longm + +dvalIn lda #FadeDelay delay so that we don't fade too fast +delay dec a + bne delay + + shortm + + bra fade + +quit anop + + plp restore old processor status register + + rts + + longi on + longa off + +fade anop + + shortm just to be on the safe side + + jsr prepare fade palettes in buffer + +waitVBL lda >VBLWait + bpl waitVBL +wait2 lda >VBLWait + bmi wait2 + + jsr fadeIt store buffer data to palettes + + dec amount done 16 times yet? + beq quit + + bra finish + +prepare anop + + ldy #$03FF + +repeat anop + lda [buffer1],y + clc + adc [buffer2],y + sta [buffer1],y + dey + bpl repeat + + rts + +fadeIt anop + + ldx #$01FF + ldy #$03FE + +more lda [buffer1],y + + lsr a + lsr a + lsr a + lsr a + + sta temp + + phy + iny + lda [buffer1],y + and #$F0 + ora temp + sta $E19E00,x + ply + + dey + dey + dex + bpl more + + rts + + End +*-----------------------------------------------------------------------------* +FadeOut Start + Using FadeDATA + + longa off + longi on + + php + + shortm + + lda #$C1 + sta >NewVideo + + ldx #$01FF + ldy #$03FF + +repeat0 lda $E19E00,x + and #$F0 + sta [buffer1],y + + lsr a + lsr a + lsr a + lsr a + + sta [buffer2],y + dey + + lda $E19E00,x + and #$0F + sta [buffer2],y + + asl a + asl a + asl a + asl a + + sta [buffer1],y + + dey + dex + bpl repeat0 + + lda #16 + sta amount + +finish anop + + longm + +dvalOut lda #FadeDelay +delay dec a + bne delay + + shortm + + bra fade + +quit anop + lda #$41 + sta >NewVideo + + plp + + rts + + longi on + longa off + +fade anop + + shortm + + jsr prepare + +waitVBL lda >VBLWait + bpl waitVBL +wait2 lda >VBLWait + bmi wait2 + + jsr fadeIt + + dec amount + beq quit + + bra finish + +prepare anop + + ldy #$03FF + +repeat anop + lda [buffer1],y + sec + sbc [buffer2],y + sta [buffer1],y + dey + bpl repeat + + rts + +fadeIt anop + + ldx #$01FF + ldy #$03FE + +more lda [buffer1],y + + lsr a + lsr a + lsr a + lsr a + + sta temp + + phy + iny + lda [buffer1],y + and #$F0 + ora temp + sta $E19E00,x + ply + + dey + dey + dex + bpl more + + rts + + End +*-----------------------------------------------------------------------------* +FadeDATA Data + +amount ds 1 +temp ds 1 + + End +*-----------------------------------------------------------------------------* \ No newline at end of file diff --git a/source/twilight/sorry/slide/slide2.mac b/source/twilight/sorry/slide/slide2.mac new file mode 100644 index 0000000..fc28eb5 --- /dev/null +++ b/source/twilight/sorry/slide/slide2.mac @@ -0,0 +1,193 @@ + + MACRO +&LAB _OPEN &DCB +&LAB JSL $E100A8 + DC I2'$10' + DC I4'&DCB' + MEND + MACRO +&lab _HideCursor +&lab ldx #$9004 + jsl $E10000 + MEND + MACRO +&LAB JCS &BP +&LAB BCC *+5 + BRL &BP + MEND + MACRO +&lab pushlong &addr,&offset +&lab ANOP + LCLC &C + LCLC &REST +&C AMID &addr,1,1 + AIF "&C"="#",.immediate + AIF "&C"="[",.zeropage + AIF C:&offset=0,.nooffset + AIF "&offset"="s",.stack + pushword &addr+2,&offset + pushword &addr,&offset + MEXIT +.nooffset + pushword &addr+2 + pushword &addr + MEXIT +.immediate +&REST AMID &addr,2,L:&addr-1 + dc I1'$F4',I2'(&REST)|-16' + dc I1'$F4',I2'&REST' + MEXIT +.stack + pushword &addr+2,s + pushword &addr+2,s + MEXIT +.zeropage + ldy #&offset+2 + pushword &addr,y + ldy #&offset + pushword &addr,y + MEND + MACRO +&lab pushword &SYSOPR +&lab ANOP + AIF C:&SYSOPR=0,.b + LCLC &C +&C AMID "&SYSOPR",1,1 + AIF ("&C"="#").AND.(S:LONGA),.immediate + lda &SYSOPR + pha + MEXIT +.b + pha + MEXIT +.immediate + LCLC &REST + LCLA &BL +&BL ASEARCH "&SYSOPR"," ",1 + AIF &BL>0,.a +&BL SETA L:&SYSOPR+1 +.a +&REST AMID "&SYSOPR",2,&BL-2 + dc I1'$F4',I2'&REST' + MEND + MACRO +&lab longm +&lab ANOP + rep #%00100000 + longa on + MEND + MACRO +&lab shortm +&lab ANOP + sep #%00100000 + longa off + MEND + MACRO +&lab wordresult +&lab phd + MEND + MACRO +&lab longresult +&lab phd + phd + MEND + MACRO +&lab _NewHandle +&lab ldx #$0902 + jsl $E10000 + MEND + MACRO +&lab _DisposeAll +&lab ldx #$1102 + jsl $E10000 + MEND + MACRO +&lab _UnPackBytes +&lab ldx #$2703 + jsl $E10000 + MEND + MACRO +&lab _CloseGS ¶ms +&lab jsl $E100A8 + dc i2"$2014" + dc i4"¶ms" + MEND + MACRO +&lab _OpenGS ¶ms +&lab jsl $E100A8 + dc i2"$2010" + dc i4"¶ms" + MEND + MACRO +&lab _ReadGS ¶ms +&lab jsl $E100A8 + dc i2"$2012" + dc i4"¶ms" + MEND + MACRO +&lab GSStr &GSstring +&lab dc i2'L:&GSstring',C'&GSstring' + MEND + MACRO +&lab _Int2Hex +&lab ldx #$220B + jsl $E10000 + MEND + MACRO +&lab _WriteCString +&lab ldx #$200C + jsl $E10000 + MEND + MACRO +&lab _DisposeHandle +&lab ldx #$1002 + jsl $E10000 + MEND + MACRO +&lab _GetDirEntryGS ¶ms +&lab jsl $E100A8 + dc i2"$201C" + dc i4"¶ms" + MEND + MACRO +&LAB JCC &BP +&LAB BCS *+5 + BRL &BP + MEND + MACRO +&LAB JNE &BP +&LAB BEQ *+5 + BRL &BP + MEND + MACRO +&lab _Multiply +&lab ldx #$090B + jsl $E10000 + MEND + MACRO + DefineStack + GBLA &DummyPC +&DummyPC SETA 1 + MEND + MACRO +&lab BYTE +&lab equ &DummyPC +&DummyPC SETA &DummyPC+1 + MEND + MACRO +&lab LONG +&lab equ &DummyPC +&DummyPC SETA &DummyPC+4 + MEND + MACRO +&lab BLOCK &Value + AIF C:&lab=0,.skiplab +&lab equ &DummyPC +.skiplab +&DummyPC SETA &DummyPC+&Value + MEND + MACRO +&lab _InitCursor +&lab ldx #$CA04 + jsl $E10000 + MEND diff --git a/source/twilight/sorry/slide/slide2.mac.B b/source/twilight/sorry/slide/slide2.mac.B new file mode 100644 index 0000000..cae2c7e --- /dev/null +++ b/source/twilight/sorry/slide/slide2.mac.B @@ -0,0 +1,186 @@ + MACRO +&lab _HideCursor +&lab ldx #$9004 + jsl $E10000 + MEND + MACRO +&LAB JCS &BP +&LAB BCC *+5 + BRL &BP + MEND + MACRO +&lab pushlong &addr,&offset +&lab ANOP + LCLC &C + LCLC &REST +&C AMID &addr,1,1 + AIF "&C"="#",.immediate + AIF "&C"="[",.zeropage + AIF C:&offset=0,.nooffset + AIF "&offset"="s",.stack + pushword &addr+2,&offset + pushword &addr,&offset + MEXIT +.nooffset + pushword &addr+2 + pushword &addr + MEXIT +.immediate +&REST AMID &addr,2,L:&addr-1 + dc I1'$F4',I2'(&REST)|-16' + dc I1'$F4',I2'&REST' + MEXIT +.stack + pushword &addr+2,s + pushword &addr+2,s + MEXIT +.zeropage + ldy #&offset+2 + pushword &addr,y + ldy #&offset + pushword &addr,y + MEND + MACRO +&lab pushword &SYSOPR +&lab ANOP + AIF C:&SYSOPR=0,.b + LCLC &C +&C AMID "&SYSOPR",1,1 + AIF ("&C"="#").AND.(S:LONGA),.immediate + lda &SYSOPR + pha + MEXIT +.b + pha + MEXIT +.immediate + LCLC &REST + LCLA &BL +&BL ASEARCH "&SYSOPR"," ",1 + AIF &BL>0,.a +&BL SETA L:&SYSOPR+1 +.a +&REST AMID "&SYSOPR",2,&BL-2 + dc I1'$F4',I2'&REST' + MEND + MACRO +&lab longm +&lab ANOP + rep #%00100000 + longa on + MEND + MACRO +&lab shortm +&lab ANOP + sep #%00100000 + longa off + MEND + MACRO +&lab wordresult +&lab phd + MEND + MACRO +&lab longresult +&lab phd + phd + MEND + MACRO +&lab _NewHandle +&lab ldx #$0902 + jsl $E10000 + MEND + MACRO +&lab _DisposeAll +&lab ldx #$1102 + jsl $E10000 + MEND + MACRO +&lab _UnPackBytes +&lab ldx #$2703 + jsl $E10000 + MEND + MACRO +&lab _CloseGS ¶ms +&lab jsl $E100A8 + dc i2"$2014" + dc i4"¶ms" + MEND + MACRO +&lab _OpenGS ¶ms +&lab jsl $E100A8 + dc i2"$2010" + dc i4"¶ms" + MEND + MACRO +&lab _ReadGS ¶ms +&lab jsl $E100A8 + dc i2"$2012" + dc i4"¶ms" + MEND + MACRO +&lab GSStr &GSstring +&lab dc i2'L:&GSstring',C'&GSstring' + MEND + MACRO +&lab _Int2Hex +&lab ldx #$220B + jsl $E10000 + MEND + MACRO +&lab _WriteCString +&lab ldx #$200C + jsl $E10000 + MEND + MACRO +&lab _DisposeHandle +&lab ldx #$1002 + jsl $E10000 + MEND + MACRO +&lab _GetDirEntryGS ¶ms +&lab jsl $E100A8 + dc i2"$201C" + dc i4"¶ms" + MEND + MACRO +&LAB JCC &BP +&LAB BCS *+5 + BRL &BP + MEND + MACRO +&LAB JNE &BP +&LAB BEQ *+5 + BRL &BP + MEND + MACRO +&lab _Multiply +&lab ldx #$090B + jsl $E10000 + MEND + MACRO + DefineStack + GBLA &DummyPC +&DummyPC SETA 1 + MEND + MACRO +&lab BYTE +&lab equ &DummyPC +&DummyPC SETA &DummyPC+1 + MEND + MACRO +&lab LONG +&lab equ &DummyPC +&DummyPC SETA &DummyPC+4 + MEND + MACRO +&lab BLOCK &Value + AIF C:&lab=0,.skiplab +&lab equ &DummyPC +.skiplab +&DummyPC SETA &DummyPC+&Value + MEND + MACRO +&lab _InitCursor +&lab ldx #$CA04 + jsl $E10000 + MEND diff --git a/source/twilight/sorry/slide/slide2.rez b/source/twilight/sorry/slide/slide2.rez new file mode 100644 index 0000000..662120a --- /dev/null +++ b/source/twilight/sorry/slide/slide2.rez @@ -0,0 +1,12 @@ +#include "types.rez" + +resource rPString (0x1) { +$"A5" + "Slide Show" +$"A5" +}; + +resource rPString (0x2) { + "Directory:" +}; + diff --git a/source/twilight/sorry/slide/slide2.rez.B b/source/twilight/sorry/slide/slide2.rez.B new file mode 100644 index 0000000..7f478b9 --- /dev/null +++ b/source/twilight/sorry/slide/slide2.rez.B @@ -0,0 +1,11 @@ +#include "types.rez" + +resource rPString (0x1) { + "Slide Show" +}; + +resource rPString (0x2) { + "Directory:" +}; + + diff --git a/source/twilight/sorry/slide/slide3.asm b/source/twilight/sorry/slide/slide3.asm new file mode 100644 index 0000000..d486224 --- /dev/null +++ b/source/twilight/sorry/slide/slide3.asm @@ -0,0 +1,1259 @@ + +*-----------------------------------------------------------------------------* +! DYA Demo Shell. +! +! Version 0.1, 07/17/90: First version recorded. +! +! Copyright 1990, Jim Maricondo. +*-----------------------------------------------------------------------------* + mcopy Slide3.Mac + copy 7:e16.memory + copy 7:e16.event +*-----------------------------------------------------------------------------* +Strobe gequ $E0C000 addr of keyboard strobe register +ClearStrobe gequ $E0C010 access to clear keypress +VBLWait gequ $E0C019 bit 7 = 1 if not VBL +Screen gequ $E0C022 addr of text/background color register +NewVideo gequ $E0C029 addr of NewVideo register +Border gequ $E0C034 addr of border color register + +oHeight gequ $0 height's offset into file +oWidth gequ $2 width's offset into file +oPalette gequ $4 palette's offset into file +oGraphic gequ $24 graphic's offset into file + +fadeDelay gequ $2F00 how fast to fadein/out (greater=slower) + +SHRBank gequ $E1 bank to do our drawing +SHRBankMem gequ $E12000 +SHRSize gequ $8000 size of SHR screen + +ztemp1 gequ 0 temporary pointers +ztemp2 gequ ztemp1+4 +ztemp3 gequ ztemp2+4 +PicPtr gequ ztemp3+4 pointers to packed picture data +MyID gequ PicPtr+4 additional ID for extra memory +SCBPtr gequ MyID+2 +DYAPtr gequ SCBPtr+4 +WidthTemp gequ DYAPtr+4 +HeightTemp gequ WidthTemp+2 +oldscreen gequ HeightTemp+2 +oldborder gequ oldscreen+2 +buffer1 gequ oldborder+2 +buffer2 gequ buffer1+4 +*-----------------------------------------------------------------------------* +MainEntry Start + Using MainDATA + + phb Store old data bank + phk + plb + + jsr StartUp + jsr GetDirPath + + _OpenGS Open_Prms open the directory file + lda ref_num + sta ref_num1 + sta ref_num2 + +Read_Dir anop + _GetDirEntryGS GDE_Prms + bcs exit + + lda filetype + cmp #$C0 + beq contC0 + cmp #$C1 + beq contC1 + cmp #$99 + beq contDYA + bra read_dir + +ContC0 anop + lda auxtype + beq PaintWorks if auxtype = $0000, then it's PW+ form + cmp #$0001 + beq Image if auxtype = $0001, then it's IMG form + cmp #$0002 if auxtype < > $0002 then it's not + bne read_dir supported + + jsr LoadAPF + bcc show + bra read_dir + +PaintWorks anop + jsr LoadPW + bra show +Image anop + jsr LoadIMG + bra show +ContC1 anop + lda auxtype + cmp #$0000 + bne read_dir + jsr LoadC1 + bra show +ContDYA anop + lda auxtype + cmp #$DEAD + bne read_dir + jsr loadDYA + +Show anop + jsr FadeIn + + DefineStack +oldDirectPage word +oldBank byte +returnAddress block 3 +MasterID word +MovePtr long +TextPtr long + + lda #$E000 +delay anop + pha + phd + + tsc + tcd + lda [MovePtr] + bne done + + pld + pla + dec a + bne delay + +NextPic anop + jsr FadeOut + bra read_dir + +Done anop + pld + pla + jsr FadeOut + +Exit _CloseGS Close_Prms close directory file + +quit Entry + shortm + lda #$41 turn off SHR + sta >NewVideo + longm + + jsr RestoreText + + _CloseGS CloseParams close picture + + pei MyID dispose all our allocated memory + _DisposeAll + + rtl + + End +*-----------------------------------------------------------------------------* +StartUp Start + + DefineStack +rtsAddress word +oldBank byte +rtlAddress block 3 +MainID word +MovePtr long +TextPtr long + + lda >ClearStrobe reset strobe + shortm + lda >Screen + sta OldScreen + lda >Border + and #$0F + sta OldBorder + lda #0 + sta >Screen + lda >Border + and #$F0 + sta >Border + longm + + shortm turn off SHR + lda #$41 + sta >NewVideo + longm + + lda MainID,s + ora #$0100 + sta MyID + + LongResult + PushLong #$400 + pei MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp3 + plx + stx ztemp3+2 + jcs MemoryError + + lda [ztemp3] + sta buffer1 + ldy #2 + lda [ztemp3],y + sta buffer1+2 + + LongResult + PushLong #$400 + pei MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp3 + plx + stx ztemp3+2 + jcs MemoryError + + lda [ztemp3] + sta buffer2 + ldy #2 + lda [ztemp3],y + sta buffer2+2 + + lda #0 + ldy #$400-2 +zero0 sta [buffer1],y + sta [buffer2],y + dey + dey + bpl zero0 + + rts + + End +*-----------------------------------------------------------------------------* +GetDirPath Start + using MainDATA + + DefineStack +oldDirectPage word +rtsAddress word +oldBank byte +rtlAddress block 3 +MainID word +MovePtr long +TextPtr long + + phd + tsc + tcd + + shortmx + lda [TextPtr] get length byte of P-String + sta MyFile put leading length word + stz MyFile+1 in input string + ldy #0 copy filename to openparams + inc Screen + lda >Border + and #$F0 + ora oldborder + sta >Border + longm + rts + + End +*-----------------------------------------------------------------------------* +LoadDYA Start + Using MainDATA + + ldx #$7D00-2 clear SHR display buffer + lda #0 +zero sta $E12000,x + dex + dex + bpl zero + + _OpenGS OpenParams open Mother Earth console + jcs Error1 + + lda OpenID + sta ReadID + sta CloseID + + lda eof + sta readLength + + LongResult + PushLong eof + pei MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp1 + plx + stx ztemp1+2 + jcs MemoryError + + lda [ztemp1] + sta PicPtr + sta PicDestIN + ldy #2 + lda [ztemp1],y + sta PicPtr+2 + sta PicDestIN+2 + + _ReadGS ReadParams + jcs Error1 + + LongResult + lda #0 + pha + lda [PicPtr] + pha + pei MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp3 + plx + stx ztemp3+2 + jcs MemoryError + + lda [ztemp3] + sta DYAPtr + ldy #2 + lda [ztemp3],y + sta DYAPtr+2 + + WordResult + lda PicPtr+2 + pha + lda PicPtr + inc a + inc a + pha + lda eof + dec a + dec a + pha + PushLong zTemp3 + lda [PicPtr] + sta TempSize + PushLong #TempSize + _UnPackBytes + pla + + PushLong ztemp1 + _DisposeHandle + + ldx #0 + txa +zeroSCB sta $E19D00,x + inx + inx + cpx #$C8 + bne zeroSCB + + ldx #0 + ldy #oPalette +copyPalette lda [DYAPtr],y + sta $E19E00,x + inx + inx + iny + iny + cpx #32 + bne copyPalette + + ldy #oWidth + lda [DYAPtr],y + sta WidthTemp + ldy #oHeight + lda [DYAPtr],y + sta HeightTemp + + lda #$2000 + sta fill+1 init fillin value + ldy #oGraphic + ldx #0 +copy1Line lda [DYAPtr],y +fill sta $E12000,x + inx + inx + iny + iny + cpx WidthTemp + bne copy1Line + + dec HeightTemp + beq return + + lda fill+1 load the $2000 + clc + adc #$A0 + sta fill+1 + ldx #0 + bra copy1line + +return anop + + PushLong ztemp3 dispose unpacked data too + _DisposeHandle + + rts + + End +*-----------------------------------------------------------------------------* +LoadAPF Start + Using MainDATA + + _OpenGS OpenParams open Image packed picture + jcs Error1 + + lda OpenID + sta ReadID + sta CloseID + + lda eof + sta readLength + + LongResult + PushLong eof + pei MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp1 + plx + stx ztemp1+2 + jcs MemoryError + + lda [zTemp1] + sta PicPtr + sta PicDestIN + ldy #2 + lda [zTemp1],y + sta PicPtr+2 + sta PicDestIN+2 + + _ReadGS ReadParams + jcs Error1 + + _CloseGS CloseParams + jcs Error1 + + lda eof load filesize + clc and add to it the beginning + adc PicPtr of the file buffer + sta endfile so we have the END of the file + + lda eof+2 + clc just do the same for the high + adc PicPtr+2 byte + sta endfile+2 + +checkmain ldy #5 load the 5th byte of the data + lda [PicPtr],y + and #$7F7F mask off the HIGH bits + cmp #$414D is it a "MA"? + jne notpref nope, this isn't the correct block + iny or file + iny + lda [PicPtr],y get the next two bytes + cmp #$4E49 is it a "IN"? + jne notpref nope + + ldy #11 (pixelsperscanline) + lda [PicPtr],y get the width of the picture + sta width + + cmp #320 is it 320 mode? + beq pref2 yes + cmp #640 is it 640 mode? + beq pref2 yes + + sec if it's neither, than we don't support + rts it, so abort this picture + +pref2 ldy #9 + lda [PicPtr],y get the master mode + sta preftemp store it + xba move it into the high byte also + ora preftemp so it'll be $0X0X + and #$F0F0 and just to make sure mask the high + + ldx #0 nibbles off +pref3 sta $E19D00,x store this master mode Scan Contro + inx Byte into the enter SCBs + inx data buffer + cpx #$C8 have we gone to 200 bytes yet? + bne pref3 nope + + LongResult + ldy #13 get the number of palettes + lda [PicPtr],y + pha multiply it by 32 bytes, which is + PushWord #$0020 how many bytes per palette + _Multiply + pla pull the result + sta palettenum store it as the byte offset past the + clc palettes information + adc #17 add 17 to it to make it correct + sta preftemp store it as the preferred temp area + plx + + lda PicPtr + clc load the 0 direct page space, and + adc preftemp add to it the data grabbed and store + sta SCBPtr it at $04 DP space. Now we have + lda PicPtr+2 a pointer to the SCBs information + sta SCBPtr+2 contained in the file!!! + + ldy preftemp load the pointer to the SCBs area + dey and subtract 2 from it so we + dey get the number of scb's + lda [PicPtr],y get the number of SCBs in the file + cmp #257 is it greater than 256? + blt scbsok yes + lda #256 no more than 256 SCBs +scbsok sta scbnum store it as the # of SCBs + ldx #0 initialize some counters + ldy #2 +scbs_set anop + lda [SCBPtr],y move the individual SCBs in the file + sta $E19D00,x + iny + iny + iny + iny ; we just did a double check by using + inx ; both the Master SCB and the individual SCBs + cpx scbnum + blt scbs_set + + lda palettenum load the pointer to the SCBs + sta preftemp and store it for future reference + + ldx #0 + ldy #13 initialize counters +pref5 iny + iny + lda [PicPtr],y we're just going to move the + sta $E19E00,x palettes from the file into the + inx actual palettes area ($E19E00) + inx + lda palettenum decrement the palette size + dec a + dec a + sta palettenum are we done yet? + bne pref5 no + + lda preftemp we're done + clc adjust the SCBs pointer to skip + adc #15 the first bytes + tay + lda [PicPtr],y load the number of SCBs + iny + iny + tax + tya +pref6 clc + adc #4 and adjust the pointer to + dex skip the entire SCBs area since + bne pref6 we've already worked with it + sta preftemp and finally point to the packed data! + + lda #$2000 reset where to unpack as Unpackbytes + sta ScreenHandle thrashes this info (how rude!! :) + lda #SHRBank + sta ScreenHandle+2 + + lda #$7D00 the size of the screen for + sta ScreenLength unpacking purposes + + WordResult + lda PicPtr+2 push hi byte of buffer containing + pha the packed data + lda PicPtr load the original buffer + clc + adc preftemp add the number of bytes to skip + pha + lda eof load the filesize + sec and subtract from it the + sbc preftemp number of bytes to skip + pha + PushLong #ScreenHandle push handle to screen + PushLong #ScreenLength push pointer to screen size word + _UnPackBytes + pla discard result + + PushLong zTemp1 get rid of packed data buffer + _DisposeHandle + + clc + rts + +! This routine helps us find the MAIN block in the APF file.. +notpref anop + ldy #2 we're merely + lda [PicPtr],y going to add + tay the block size of this "chunk" + lda [PicPtr] which is held in the + clc first 4 bytes of + adc PicPtr the apple preferred format + sta PicPtr to the buffer address, and + tya if we've reached + adc PicPtr+2 the end of the + sta PicPtr+2 file, we are + lda PicPtr done! + cmp endfile + lda PicPtr+2 + sbc endfile+2 + jcc checkmain + + sec if no MAIN chunk found, there is no + rts picture data, so abort + + End +*-----------------------------------------------------------------------------* +LoadPW Start + Using MainDATA + + _OpenGS OpenParams open Image packed picture + jcs Error1 + + lda OpenID + sta ReadID + sta CloseID + + lda eof + sta readLength + + LongResult + PushLong eof + pei MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp1 + plx + stx ztemp1+2 + jcs MemoryError + + lda [zTemp1] + sta PicPtr + sta PicDestIN + ldy #2 + lda [zTemp1],y + sta PicPtr+2 + sta PicDestIN+2 + + _ReadGS ReadParams + jcs Error1 + + _CloseGS CloseParams close picture + jcs Error1 + + ldy #0 +p_palette tyx + lda [PicPtr],y move the palette from the first 32 + sta $E19E00,x bytes of the file into the SHR palette + iny area (Palette $0) + iny + cpy #32 + bcc p_palette + + lda PicPtr skip the next $222 bytes that contain + clc patterns, background information, and + adc #$222 one nonpacked palette + sta PicPtr + + lda #$2000 reset where to unpack as Unpackbytes + sta ScreenHandle thrashes this info (how rude!! :) + lda #SHRBank + sta ScreenHandle+2 + + lda #$7D00 the size of the screen for + sta ScreenLength unpacking purposes + + WordResult + PushLong PicPtr pointer to packed data buffer + lda eof + sec subtract $222 bytes from the filesize + sbc #$222 ($202 plus $20 of palettes) and push + pha it as where size of packed data buffer + PushLong #ScreenHandle handle to where to unpack to + PushLong #ScreenLength ptr to word containing size of unpacked + _UnPackBytes data + pla discard result + + PushLong zTemp1 get rid of packed data buffer + _DisposeHandle + + rts + + End +*-----------------------------------------------------------------------------* +LoadIMG Start + Using MainDATA + + _OpenGS OpenParams open Image packed picture + jcs Error1 + + lda OpenID + sta ReadID + sta CloseID + + lda eof + sta readLength + + LongResult + PushLong eof + pei MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp1 + plx + stx ztemp1+2 + jcs MemoryError + + lda [zTemp1] + sta PicDestIN + ldy #2 + lda [zTemp1],y + sta PicDestIN+2 + + _ReadGS ReadParams + jcs Error1 + + _CloseGS CloseParams close picture + jcs Error1 + + lda #$2000 + sta ScreenHandle + lda #SHRBank + sta ScreenHandle+2 + + lda #SHRSize + sta ScreenLength + + WordResult + ldy #2 pointer to packed data buffer + lda [zTemp1],y + pha + lda [zTemp1] + pha + PushWord eof size of packed data buffer + PushLong #ScreenHandle handle to where to unpack to + PushLong #ScreenLength ptr to word containing size of unpacked + _UnPackBytes data + pla + + PushLong zTemp1 get rid of packed data buffer + _DisposeHandle + + rts + + End +*-----------------------------------------------------------------------------* +LoadC1 Start + Using MainDATA + + _OpenGS OpenParams open unpacked picture + jcs Error1 + + lda OpenID + sta ReadID + sta CloseID + + lda eof + sta readLength + + lda #$2000 + sta PicDestIN + lda #$E1 + sta PicDestIN+2 + + _ReadGS ReadParams + jcs Error1 + + _CloseGS CloseParams close picture + jcs Error1 + + rts + + End +*-----------------------------------------------------------------------------* +ErrorHandlers Start handle any errors that occur + Using ErrorDATA + +StartToolError Entry + + pha error number + PushLong #String1 + PushWord #4 number of characters + _Int2Hex + + shortm turn off graphics + lda #$41 + sta >NewVideo + longm + + jsr RestoreText + + PushLong #CString1 write error message + _WriteCString + + bra returnBack + +MemoryError Entry + + pha + PushLong #String2 + PushWord #4 + _Int2Hex + + shortm + lda #$41 + sta >NewVideo + longm + + jsr RestoreText + + PushLong #CString2 + _WriteCString + + bra returnBack + +Error1 Entry + + pha + PushLong #String + PushWord #4 + _Int2Hex + + shortm + lda #$41 + sta >NewVideo + longm + + jsr RestoreText + + PushLong #CString + _WriteCString + +! bra returnBack + +returnBack anop + + shortm +back lda >Strobe + bpl back + sta >ClearStrobe + longm + + sec + rts + + End +*-----------------------------------------------------------------------------* +MainDATA Data + +palettenum ds 2 ; offset into palettes from preferred +width ds 2 ; width of preferred file +preftemp ds 2 ; temporary Apple Preferred format cntr +scbnum ds 2 ; number of SCB we're on +endfile ds 4 ; end of buffer for Preferred + +ScreenHandle dc i4'SHRBankMem' +ScreenLength dc i'$8000' + +SSRecRefRet ds 4 + +openParams anop + dc i'12' pcount +openID ds 2 reference number + dc i4'name' pathname of file to open + dc i'0' request_access + dc i'0' resource_num + ds 2 access + ds 2 file_type + ds 4 aux_type + ds 2 storage_type + ds 8 create_td + ds 8 modify_td + ds 4 option_list +eof ds 4 + +QParms dc i4'0' + dc i'0' + +TempSize ds 2 + +readParams anop + dc i'4' +readID ds 2 reference number +picDestIN ds 4 pointer to DATA buffer +readLength ds 4 this many bytes + ds 4 how many xfered + +closeParams anop + dc i'1' +closeID ds 2 reference number + +Open_Prms anop + dc i'2' pcount +ref_num ds 2 +Name_Ptr dc i4'MyFile' pointer to directory + +MyFile ds 33 +!irectory GSStr '0/' + +Close_Prms anop + dc i'1' pcount +ref_num1 ds 2 + +GDE_Prms anop + dc i'13' pcount +ref_num2 ds 2 + ds 2 flags + dc i'1' base: increment + dc i'1' displacement = +1 + dc i4'NameBuff' name_buffer ptr + ds 2 entry_num +filetype ds 2 + ds 4 eof + ds 4 block_count + ds 8 create_td + ds 8 modify_td + ds 2 access +auxtype ds 4 + +NameBuff dc i'30' buffer size +name ds 2 length + ds 28 filename + + End +*-----------------------------------------------------------------------------* +ErrorDATA Data + +CString dc c'GS/OS error $' +string dc c'???? occured.',h'0d0a00' + +CString1 dc c'StartUpTools error $' +string1 dc c'???? occured.',h'0d0a00' + +CString2 anop + dc c'Unable to allocate picture memory.',h'0d0a',c'Making sure filetype is S16' + dc c', and purging memory may help.',h'0d0a0d0a' + dc c'Memory Manager error $' +string2 dc c'???? occured.',h'0d0a00' + + End +*-----------------------------------------------------------------------------* +FadeIn Start + Using FadeDATA + + php save old processor status register + + longa off + longi on + + shortm + + lda #$41 linearize and turn off SHR screen + sta >NewVideo + + ldx #$01FF + ldy #$03FF + +repeat0 lda $E19E00,x copy0 palettes into buffer + and #$F0 + + lsr a + lsr a + lsr a + lsr a + + sta [buffer2],y + dey + + lda $E19E00,x + and #$0F + sta [buffer2],y + + asl a + asl a + asl a + asl a + + dey + dex + bpl repeat0 + + lda #16 + sta amount + + longm + + lda #0 black out all SHR palettes + ldx #$200 +zero sta $E19E00-2,x + dex + dex + bne zero + + shortm + + lda #$C1 turn on SHR screen + sta >NewVideo + +finish anop + + longm + +dvalIn lda #FadeDelay delay so that we don't fade too fast +delay dec a + bne delay + + shortm + + bra fade + +quit anop + + plp restore old processor status register + + rts + + longi on + longa off + +fade anop + + shortm just to be on the safe side + + jsr prepare fade palettes in buffer + +waitVBL lda >VBLWait + bpl waitVBL +wait2 lda >VBLWait + bmi wait2 + + jsr fadeIt store buffer data to palettes + + dec amount done 16 times yet? + beq quit + + bra finish + +prepare anop + + ldy #$03FF + +repeat anop + lda [buffer1],y + clc + adc [buffer2],y + sta [buffer1],y + dey + bpl repeat + + rts + +fadeIt anop + + ldx #$01FF + ldy #$03FE + +more lda [buffer1],y + + lsr a + lsr a + lsr a + lsr a + + sta temp + + phy + iny + lda [buffer1],y + and #$F0 + ora temp + sta $E19E00,x + ply + + dey + dey + dex + bpl more + + rts + + End +*-----------------------------------------------------------------------------* +FadeOut Start + Using FadeDATA + + longa off + longi on + + php + + shortm + + lda #$C1 + sta >NewVideo + + ldx #$01FF + ldy #$03FF + +repeat0 lda $E19E00,x + and #$F0 + sta [buffer1],y + + lsr a + lsr a + lsr a + lsr a + + sta [buffer2],y + dey + + lda $E19E00,x + and #$0F + sta [buffer2],y + + asl a + asl a + asl a + asl a + + sta [buffer1],y + + dey + dex + bpl repeat0 + + lda #16 + sta amount + +finish anop + + longm + +dvalOut lda #FadeDelay +delay dec a + bne delay + + shortm + + bra fade + +quit anop + lda #$41 + sta >NewVideo + + plp + + rts + + longi on + longa off + +fade anop + + shortm + + jsr prepare + +waitVBL lda >VBLWait + bpl waitVBL +wait2 lda >VBLWait + bmi wait2 + + jsr fadeIt + + dec amount + beq quit + + bra finish + +prepare anop + + ldy #$03FF + +repeat anop + lda [buffer1],y + sec + sbc [buffer2],y + sta [buffer1],y + dey + bpl repeat + + rts + +fadeIt anop + + ldx #$01FF + ldy #$03FE + +more lda [buffer1],y + + lsr a + lsr a + lsr a + lsr a + + sta temp + + phy + iny + lda [buffer1],y + and #$F0 + ora temp + sta $E19E00,x + ply + + dey + dey + dex + bpl more + + rts + + End +*-----------------------------------------------------------------------------* +FadeDATA Data + +amount ds 1 +temp ds 1 + + End +*-----------------------------------------------------------------------------* \ No newline at end of file diff --git a/source/twilight/sorry/slide/slide3.asm.B b/source/twilight/sorry/slide/slide3.asm.B new file mode 100644 index 0000000..e9f2451 --- /dev/null +++ b/source/twilight/sorry/slide/slide3.asm.B @@ -0,0 +1,1258 @@ + +*-----------------------------------------------------------------------------* +! DYA Demo Shell. +! +! Version 0.1, 07/17/90: First version recorded. +! +! Copyright 1990, Jim Maricondo. +*-----------------------------------------------------------------------------* + mcopy Slide.Mac + copy 7:e16.memory + copy 7:e16.event +*-----------------------------------------------------------------------------* +Strobe gequ $E0C000 addr of keyboard strobe register +ClearStrobe gequ $E0C010 access to clear keypress +VBLWait gequ $E0C019 bit 7 = 1 if not VBL +Screen gequ $E0C022 addr of text/background color register +NewVideo gequ $E0C029 addr of NewVideo register +Border gequ $E0C034 addr of border color register + +oHeight gequ $0 height's offset into file +oWidth gequ $2 width's offset into file +oPalette gequ $4 palette's offset into file +oGraphic gequ $24 graphic's offset into file + +fadeDelay gequ $2F00 how fast to fadein/out (greater=slower) + +SHRBank gequ $E1 bank to do our drawing +SHRBankMem gequ $E12000 +SHRSize gequ $8000 size of SHR screen + +ztemp1 gequ 0 temporary pointers +ztemp2 gequ ztemp1+4 +ztemp3 gequ ztemp2+4 +PicPtr gequ ztemp3+4 pointers to packed picture data +MyID gequ PicPtr+4 additional ID for extra memory +SCBPtr gequ MyID+2 +DYAPtr gequ SCBPtr+4 +WidthTemp gequ DYAPtr+4 +HeightTemp gequ WidthTemp+2 +oldscreen gequ HeightTemp+2 +oldborder gequ oldscreen+2 +buffer1 gequ oldborder+2 +buffer2 gequ buffer1+4 +*-----------------------------------------------------------------------------* +MainEntry Start + Using MainDATA + + phb Store old data bank + phk + plb + + jsr StartUp + jsr GetDirPath + + _OpenGS Open_Prms open the directory file + lda ref_num + sta ref_num1 + sta ref_num2 + +Read_Dir anop + _GetDirEntryGS GDE_Prms + bcs exit + + lda filetype + cmp #$C0 + beq contC0 + cmp #$C1 + beq contC1 + cmp #$99 + beq contDYA + bra read_dir + +ContC0 anop + lda auxtype + beq PaintWorks if auxtype = $0000, then it's PW+ form + cmp #$0001 + beq Image if auxtype = $0001, then it's IMG form + cmp #$0002 if auxtype < > $0002 then it's not + bne read_dir supported + + jsr LoadAPF + bcc show + bra read_dir + +PaintWorks anop + jsr LoadPW + bra show +Image anop + jsr LoadIMG + bra show +ContC1 anop + lda auxtype + cmp #$0000 + bne read_dir + jsr LoadC1 + bra show +ContDYA anop + lda auxtype + cmp #$DEAD + bne read_dir + jsr loadDYA + +Show anop + jsr FadeIn + + DefineStack +oldDirectPage word +oldBank byte +returnAddress block 3 +MasterID word +MovePtr long +TextPtr long + + lda #$E000 +delay anop + pha + phd + + tsc + tcd + lda [MovePtr] + bne done + + pld + pla + dec a + bne delay + +NextPic anop + jsr FadeOut + bra read_dir + +Done anop + pld + pla + jsr FadeOut + +Exit _CloseGS Close_Prms close directory file + +quit Entry + shortm + lda #$41 turn off SHR + sta >NewVideo + longm + + jsr RestoreText + + _CloseGS CloseParams close picture + + pei MyID dispose all our allocated memory + _DisposeAll + + + End +*-----------------------------------------------------------------------------* +StartUp Start + + DefineStack +rtsAddress word +oldBank byte +rtlAddress block 3 +MainID word +MovePtr long +TextPtr long + + lda >ClearStrobe reset strobe + shortm + lda >Screen + sta OldScreen + lda >Border + and #$0F + sta OldBorder + lda #0 + sta >Screen + lda >Border + and #$F0 + sta >Border + longm + + shortm turn off SHR + lda #$41 + sta >NewVideo + longm + + lda MainID,s + ora #$0100 + sta MyID + + LongResult + PushLong #$400 + pei MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp3 + plx + stx ztemp3+2 + jcs MemoryError + + lda [ztemp3] + sta buffer1 + ldy #2 + lda [ztemp3],y + sta buffer1+2 + + LongResult + PushLong #$400 + pei MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp3 + plx + stx ztemp3+2 + jcs MemoryError + + lda [ztemp3] + sta buffer2 + ldy #2 + lda [ztemp3],y + sta buffer2+2 + + lda #0 + ldy #$400-2 +zero0 sta [buffer1],y + sta [buffer2],y + dey + dey + bpl zero0 + + rts + + End +*-----------------------------------------------------------------------------* +GetDirPath Start + using MainDATA + + DefineStack +oldDirectPage word +rtsAddress word +oldBank byte +rtlAddress block 3 +MainID word +MovePtr long +TextPtr long + + phd + tsc + tcd + + shortmx + lda [TextPtr] get length byte of P-String + sta MyFile put leading length word + stz MyFile+1 in input string + ldy #0 copy filename to openparams + inc Screen + lda >Border + and #$F0 + ora oldborder + sta >Border + longm + rts + + End +*-----------------------------------------------------------------------------* +LoadDYA Start + Using MainDATA + + ldx #$7D00-2 clear SHR display buffer + lda #0 +zero sta $E12000,x + dex + dex + bpl zero + + _OpenGS OpenParams open Mother Earth console + jcs Error1 + + lda OpenID + sta ReadID + sta CloseID + + lda eof + sta readLength + + LongResult + PushLong eof + pei MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp1 + plx + stx ztemp1+2 + jcs MemoryError + + lda [ztemp1] + sta PicPtr + sta PicDestIN + ldy #2 + lda [ztemp1],y + sta PicPtr+2 + sta PicDestIN+2 + + _ReadGS ReadParams + jcs Error1 + + LongResult + lda #0 + pha + lda [PicPtr] + pha + pei MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp3 + plx + stx ztemp3+2 + jcs MemoryError + + lda [ztemp3] + sta DYAPtr + ldy #2 + lda [ztemp3],y + sta DYAPtr+2 + + WordResult + lda PicPtr+2 + pha + lda PicPtr + inc a + inc a + pha + lda eof + dec a + dec a + pha + PushLong zTemp3 + lda [PicPtr] + sta TempSize + PushLong #TempSize + _UnPackBytes + pla + + PushLong ztemp1 + _DisposeHandle + + ldx #0 + txa +zeroSCB sta $E19D00,x + inx + inx + cpx #$C8 + bne zeroSCB + + ldx #0 + ldy #oPalette +copyPalette lda [DYAPtr],y + sta $E19E00,x + inx + inx + iny + iny + cpx #32 + bne copyPalette + + ldy #oWidth + lda [DYAPtr],y + sta WidthTemp + ldy #oHeight + lda [DYAPtr],y + sta HeightTemp + + lda #$2000 + sta fill+1 init fillin value + ldy #oGraphic + ldx #0 +copy1Line lda [DYAPtr],y +fill sta $E12000,x + inx + inx + iny + iny + cpx WidthTemp + bne copy1Line + + dec HeightTemp + beq return + + lda fill+1 load the $2000 + clc + adc #$A0 + sta fill+1 + ldx #0 + bra copy1line + +return anop + + PushLong ztemp3 dispose unpacked data too + _DisposeHandle + + rts + + End +*-----------------------------------------------------------------------------* +LoadAPF Start + Using MainDATA + + _OpenGS OpenParams open Image packed picture + jcs Error1 + + lda OpenID + sta ReadID + sta CloseID + + lda eof + sta readLength + + LongResult + PushLong eof + pei MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp1 + plx + stx ztemp1+2 + jcs MemoryError + + lda [zTemp1] + sta PicPtr + sta PicDestIN + ldy #2 + lda [zTemp1],y + sta PicPtr+2 + sta PicDestIN+2 + + _ReadGS ReadParams + jcs Error1 + + _CloseGS CloseParams + jcs Error1 + + lda eof load filesize + clc and add to it the beginning + adc PicPtr of the file buffer + sta endfile so we have the END of the file + + lda eof+2 + clc just do the same for the high + adc PicPtr+2 byte + sta endfile+2 + +checkmain ldy #5 load the 5th byte of the data + lda [PicPtr],y + and #$7F7F mask off the HIGH bits + cmp #$414D is it a "MA"? + jne notpref nope, this isn't the correct block + iny or file + iny + lda [PicPtr],y get the next two bytes + cmp #$4E49 is it a "IN"? + jne notpref nope + + ldy #11 (pixelsperscanline) + lda [PicPtr],y get the width of the picture + sta width + + cmp #320 is it 320 mode? + beq pref2 yes + cmp #640 is it 640 mode? + beq pref2 yes + + sec if it's neither, than we don't support + rts it, so abort this picture + +pref2 ldy #9 + lda [PicPtr],y get the master mode + sta preftemp store it + xba move it into the high byte also + ora preftemp so it'll be $0X0X + and #$F0F0 and just to make sure mask the high + + ldx #0 nibbles off +pref3 sta $E19D00,x store this master mode Scan Contro + inx Byte into the enter SCBs + inx data buffer + cpx #$C8 have we gone to 200 bytes yet? + bne pref3 nope + + LongResult + ldy #13 get the number of palettes + lda [PicPtr],y + pha multiply it by 32 bytes, which is + PushWord #$0020 how many bytes per palette + _Multiply + pla pull the result + sta palettenum store it as the byte offset past the + clc palettes information + adc #17 add 17 to it to make it correct + sta preftemp store it as the preferred temp area + plx + + lda PicPtr + clc load the 0 direct page space, and + adc preftemp add to it the data grabbed and store + sta SCBPtr it at $04 DP space. Now we have + lda PicPtr+2 a pointer to the SCBs information + sta SCBPtr+2 contained in the file!!! + + ldy preftemp load the pointer to the SCBs area + dey and subtract 2 from it so we + dey get the number of scb's + lda [PicPtr],y get the number of SCBs in the file + cmp #257 is it greater than 256? + blt scbsok yes + lda #256 no more than 256 SCBs +scbsok sta scbnum store it as the # of SCBs + ldx #0 initialize some counters + ldy #2 +scbs_set anop + lda [SCBPtr],y move the individual SCBs in the file + sta $E19D00,x + iny + iny + iny + iny ; we just did a double check by using + inx ; both the Master SCB and the individual SCBs + cpx scbnum + blt scbs_set + + lda palettenum load the pointer to the SCBs + sta preftemp and store it for future reference + + ldx #0 + ldy #13 initialize counters +pref5 iny + iny + lda [PicPtr],y we're just going to move the + sta $E19E00,x palettes from the file into the + inx actual palettes area ($E19E00) + inx + lda palettenum decrement the palette size + dec a + dec a + sta palettenum are we done yet? + bne pref5 no + + lda preftemp we're done + clc adjust the SCBs pointer to skip + adc #15 the first bytes + tay + lda [PicPtr],y load the number of SCBs + iny + iny + tax + tya +pref6 clc + adc #4 and adjust the pointer to + dex skip the entire SCBs area since + bne pref6 we've already worked with it + sta preftemp and finally point to the packed data! + + lda #$2000 reset where to unpack as Unpackbytes + sta ScreenHandle thrashes this info (how rude!! :) + lda #SHRBank + sta ScreenHandle+2 + + lda #$7D00 the size of the screen for + sta ScreenLength unpacking purposes + + WordResult + lda PicPtr+2 push hi byte of buffer containing + pha the packed data + lda PicPtr load the original buffer + clc + adc preftemp add the number of bytes to skip + pha + lda eof load the filesize + sec and subtract from it the + sbc preftemp number of bytes to skip + pha + PushLong #ScreenHandle push handle to screen + PushLong #ScreenLength push pointer to screen size word + _UnPackBytes + pla discard result + + PushLong zTemp1 get rid of packed data buffer + _DisposeHandle + + clc + rts + +! This routine helps us find the MAIN block in the APF file.. +notpref anop + ldy #2 we're merely + lda [PicPtr],y going to add + tay the block size of this "chunk" + lda [PicPtr] which is held in the + clc first 4 bytes of + adc PicPtr the apple preferred format + sta PicPtr to the buffer address, and + tya if we've reached + adc PicPtr+2 the end of the + sta PicPtr+2 file, we are + lda PicPtr done! + cmp endfile + lda PicPtr+2 + sbc endfile+2 + jcc checkmain + + sec if no MAIN chunk found, there is no + rts picture data, so abort + + End +*-----------------------------------------------------------------------------* +LoadPW Start + Using MainDATA + + _OpenGS OpenParams open Image packed picture + jcs Error1 + + lda OpenID + sta ReadID + sta CloseID + + lda eof + sta readLength + + LongResult + PushLong eof + pei MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp1 + plx + stx ztemp1+2 + jcs MemoryError + + lda [zTemp1] + sta PicPtr + sta PicDestIN + ldy #2 + lda [zTemp1],y + sta PicPtr+2 + sta PicDestIN+2 + + _ReadGS ReadParams + jcs Error1 + + _CloseGS CloseParams close picture + jcs Error1 + + ldy #0 +p_palette tyx + lda [PicPtr],y move the palette from the first 32 + sta $E19E00,x bytes of the file into the SHR palette + iny area (Palette $0) + iny + cpy #32 + bcc p_palette + + lda PicPtr skip the next $222 bytes that contain + clc patterns, background information, and + adc #$222 one nonpacked palette + sta PicPtr + + lda #$2000 reset where to unpack as Unpackbytes + sta ScreenHandle thrashes this info (how rude!! :) + lda #SHRBank + sta ScreenHandle+2 + + lda #$7D00 the size of the screen for + sta ScreenLength unpacking purposes + + WordResult + PushLong PicPtr pointer to packed data buffer + lda eof + sec subtract $222 bytes from the filesize + sbc #$222 ($202 plus $20 of palettes) and push + pha it as where size of packed data buffer + PushLong #ScreenHandle handle to where to unpack to + PushLong #ScreenLength ptr to word containing size of unpacked + _UnPackBytes data + pla discard result + + PushLong zTemp1 get rid of packed data buffer + _DisposeHandle + + rts + + End +*-----------------------------------------------------------------------------* +LoadIMG Start + Using MainDATA + + _OpenGS OpenParams open Image packed picture + jcs Error1 + + lda OpenID + sta ReadID + sta CloseID + + lda eof + sta readLength + + LongResult + PushLong eof + pei MyID + PushWord #attrLocked+attrFixed+attrNoCross+attrNoSpec + PushLong #0 + _NewHandle + plx + stx ztemp1 + plx + stx ztemp1+2 + jcs MemoryError + + lda [zTemp1] + sta PicDestIN + ldy #2 + lda [zTemp1],y + sta PicDestIN+2 + + _ReadGS ReadParams + jcs Error1 + + _CloseGS CloseParams close picture + jcs Error1 + + lda #$2000 + sta ScreenHandle + lda #SHRBank + sta ScreenHandle+2 + + lda #SHRSize + sta ScreenLength + + WordResult + ldy #2 pointer to packed data buffer + lda [zTemp1],y + pha + lda [zTemp1] + pha + PushWord eof size of packed data buffer + PushLong #ScreenHandle handle to where to unpack to + PushLong #ScreenLength ptr to word containing size of unpacked + _UnPackBytes data + pla + + PushLong zTemp1 get rid of packed data buffer + _DisposeHandle + + rts + + End +*-----------------------------------------------------------------------------* +LoadC1 Start + Using MainDATA + + _OpenGS OpenParams open unpacked picture + jcs Error1 + + lda OpenID + sta ReadID + sta CloseID + + lda eof + sta readLength + + lda #$2000 + sta PicDestIN + lda #$E1 + sta PicDestIN+2 + + _ReadGS ReadParams + jcs Error1 + + _CloseGS CloseParams close picture + jcs Error1 + + rts + + End +*-----------------------------------------------------------------------------* +ErrorHandlers Start handle any errors that occur + Using ErrorDATA + +StartToolError Entry + + pha error number + PushLong #String1 + PushWord #4 number of characters + _Int2Hex + + shortm turn off graphics + lda #$41 + sta >NewVideo + longm + + jsr RestoreText + + PushLong #CString1 write error message + _WriteCString + + bra returnBack + +MemoryError Entry + + pha + PushLong #String2 + PushWord #4 + _Int2Hex + + shortm + lda #$41 + sta >NewVideo + longm + + jsr RestoreText + + PushLong #CString2 + _WriteCString + + bra returnBack + +Error1 Entry + + pha + PushLong #String + PushWord #4 + _Int2Hex + + shortm + lda #$41 + sta >NewVideo + longm + + jsr RestoreText + + PushLong #CString + _WriteCString + +! bra returnBack + +returnBack anop + + shortm +back lda >Strobe + bpl back + sta >ClearStrobe + longm + + sec + rts + + End +*-----------------------------------------------------------------------------* +MainDATA Data + +palettenum ds 2 ; offset into palettes from preferred +width ds 2 ; width of preferred file +preftemp ds 2 ; temporary Apple Preferred format cntr +scbnum ds 2 ; number of SCB we're on +endfile ds 4 ; end of buffer for Preferred + +ScreenHandle dc i4'SHRBankMem' +ScreenLength dc i'$8000' + +SSRecRefRet ds 4 + +openParams anop + dc i'12' pcount +openID ds 2 reference number + dc i4'name' pathname of file to open + dc i'0' request_access + dc i'0' resource_num + ds 2 access + ds 2 file_type + ds 4 aux_type + ds 2 storage_type + ds 8 create_td + ds 8 modify_td + ds 4 option_list +eof ds 4 + +QParms dc i4'0' + dc i'0' + +TempSize ds 2 + +readParams anop + dc i'4' +readID ds 2 reference number +picDestIN ds 4 pointer to DATA buffer +readLength ds 4 this many bytes + ds 4 how many xfered + +closeParams anop + dc i'1' +closeID ds 2 reference number + +Open_Prms anop + dc i'2' pcount +ref_num ds 2 +Name_Ptr dc i4'MyFile' pointer to directory + +MyFile ds 33 +!irectory GSStr '0/' + +Close_Prms anop + dc i'1' pcount +ref_num1 ds 2 + +GDE_Prms anop + dc i'13' pcount +ref_num2 ds 2 + ds 2 flags + dc i'1' base: increment + dc i'1' displacement = +1 + dc i4'NameBuff' name_buffer ptr + ds 2 entry_num +filetype ds 2 + ds 4 eof + ds 4 block_count + ds 8 create_td + ds 8 modify_td + ds 2 access +auxtype ds 4 + +NameBuff dc i'30' buffer size +name ds 2 length + ds 28 filename + + End +*-----------------------------------------------------------------------------* +ErrorDATA Data + +CString dc c'GS/OS error $' +string dc c'???? occured.',h'0d0a00' + +CString1 dc c'StartUpTools error $' +string1 dc c'???? occured.',h'0d0a00' + +CString2 anop + dc c'Unable to allocate picture memory.',h'0d0a',c'Making sure filetype is S16' + dc c', and purging memory may help.',h'0d0a0d0a' + dc c'Memory Manager error $' +string2 dc c'???? occured.',h'0d0a00' + + End +*-----------------------------------------------------------------------------* +FadeIn Start + Using FadeDATA + + php save old processor status register + + longa off + longi on + + shortm + + lda #$41 linearize and turn off SHR screen + sta >NewVideo + + ldx #$01FF + ldy #$03FF + +repeat0 lda $E19E00,x copy0 palettes into buffer + and #$F0 + + lsr a + lsr a + lsr a + lsr a + + sta [buffer2],y + dey + + lda $E19E00,x + and #$0F + sta [buffer2],y + + asl a + asl a + asl a + asl a + + dey + dex + bpl repeat0 + + lda #16 + sta amount + + longm + + lda #0 black out all SHR palettes + ldx #$200 +zero sta $E19E00-2,x + dex + dex + bne zero + + shortm + + lda #$C1 turn on SHR screen + sta >NewVideo + +finish anop + + longm + +dvalIn lda #FadeDelay delay so that we don't fade too fast +delay dec a + bne delay + + shortm + + bra fade + +quit anop + + plp restore old processor status register + + rts + + longi on + longa off + +fade anop + + shortm just to be on the safe side + + jsr prepare fade palettes in buffer + +waitVBL lda >VBLWait + bpl waitVBL +wait2 lda >VBLWait + bmi wait2 + + jsr fadeIt store buffer data to palettes + + dec amount done 16 times yet? + beq quit + + bra finish + +prepare anop + + ldy #$03FF + +repeat anop + lda [buffer1],y + clc + adc [buffer2],y + sta [buffer1],y + dey + bpl repeat + + rts + +fadeIt anop + + ldx #$01FF + ldy #$03FE + +more lda [buffer1],y + + lsr a + lsr a + lsr a + lsr a + + sta temp + + phy + iny + lda [buffer1],y + and #$F0 + ora temp + sta $E19E00,x + ply + + dey + dey + dex + bpl more + + rts + + End +*-----------------------------------------------------------------------------* +FadeOut Start + Using FadeDATA + + longa off + longi on + + php + + shortm + + lda #$C1 + sta >NewVideo + + ldx #$01FF + ldy #$03FF + +repeat0 lda $E19E00,x + and #$F0 + sta [buffer1],y + + lsr a + lsr a + lsr a + lsr a + + sta [buffer2],y + dey + + lda $E19E00,x + and #$0F + sta [buffer2],y + + asl a + asl a + asl a + asl a + + sta [buffer1],y + + dey + dex + bpl repeat0 + + lda #16 + sta amount + +finish anop + + longm + +dvalOut lda #FadeDelay +delay dec a + bne delay + + shortm + + bra fade + +quit anop + lda #$41 + sta >NewVideo + + plp + + rts + + longi on + longa off + +fade anop + + shortm + + jsr prepare + +waitVBL lda >VBLWait + bpl waitVBL +wait2 lda >VBLWait + bmi wait2 + + jsr fadeIt + + dec amount + beq quit + + bra finish + +prepare anop + + ldy #$03FF + +repeat anop + lda [buffer1],y + sec + sbc [buffer2],y + sta [buffer1],y + dey + bpl repeat + + rts + +fadeIt anop + + ldx #$01FF + ldy #$03FE + +more lda [buffer1],y + + lsr a + lsr a + lsr a + lsr a + + sta temp + + phy + iny + lda [buffer1],y + and #$F0 + ora temp + sta $E19E00,x + ply + + dey + dey + dex + bpl more + + rts + + End +*-----------------------------------------------------------------------------* +FadeDATA Data + +amount ds 1 +temp ds 1 + + End +*-----------------------------------------------------------------------------*