DSK GREENSCALE ************************************************** * Autoplaying version for Bad Apple demo ************************************************** * Variables ************************************************** ROW EQU $FA ; row in pixels - 1-48 (#00-#2F) COLUMN EQU $FB ; col in pixels - 1-40 (#00-#27) COLOR EQU $FC ; index color of pixel to plot - #00-#0F PLOTCOLOR EQU $21 ; color to plot - #00-#0F from COLORTABLE CHAR EQU $FD ; byte at PLOTROW,PLOTCOLUMN PLOTROW EQU $FE ; row in text page = ROW/2, remainder = nibble PLOTCOLUMN EQU $FF ; col in text page == COLUMN IMGLO EQU $CD ; image data addres, LO IMGHI EQU $CE ; image data addres, HI SEEDADDRLO EQU $CB ; db TABLESEED FRAMENUM EQU $1D ; which frame of the anim FRAMES EQU $1E ; total frames DELAY EQU $1F ; interframe delay amount. ; FF=3FPS $80=10FPS $40=24FPS $20=37FPS $10=43FPS $00=46FPS PAUSED EQU $20 ; paused state - stop animation COLORMODE EQU $22 ; which color mode are we in? which table to draw from TABLEOFFSET EQU $23 AUTOPLAYTIMER EQU $EB ; how many loops has the animation played? AUTOPLAY EQU $EC ; Autoplay mode or not ;from ProRWTS2 ;subdirectory support bloklo EQU $46 blokhi EQU $47 ;to detect file not found status EQU $50 ;file read support sizelo EQU $52 sizehi EQU $53 ldrlo EQU $55 ldrhi EQU $56 ;file open support namlo EQU $57 namhi EQU $58 ;rewind support blkidx EQU $5e bleftlo EQU $60 blefthi EQU $61 ;API hddopendir EQU $BD03 hddrdwrpart EQU $BD00 hddblockhi EQU $BD06 hddblocklo EQU $BD04 ************************************************** * Apple Standard Memory Locations ************************************************** CLRLORES EQU $F832 LORES EQU $C050 TXTSET EQU $C051 MIXCLR EQU $C052 MIXSET EQU $C053 TXTPAGE1 EQU $C054 TXTPAGE2 EQU $C055 KEY EQU $C000 C80STOREOF EQU $C000 C80STOREON EQU $C001 STROBE EQU $C010 SPEAKER EQU $C030 VBL EQU $C02E RDVBLBAR EQU $C019 ;not VBL (VBL signal low WAIT EQU $FCA8 RAMWRTAUX EQU $C005 RAMWRTMAIN EQU $C004 SETAN3 EQU $C05E ;Set annunciator-3 output to 0 SET80VID EQU $C00D ;enable 80-column display mode (WR-only) CLR80VID EQU $C00C HOME EQU $FC58 ; clear the text screen CH EQU $24 ; cursor Horiz CV EQU $25 ; cursor Vert VTAB EQU $FC22 ; Sets the cursor vertical position (from CV) COUT EQU $FDED ; Calls the output routine whose address is stored in CSW, ; normally COUTI STROUT EQU $DB3A ;Y=String ptr high, A=String ptr low ALTTEXT EQU $C055 ALTTEXTOFF EQU $C054 ROMINIT EQU $FB2F ROMSETKBD EQU $FE89 ROMSETVID EQU $FE93 ALTCHAR EQU $C00F ; enables alternative character set - mousetext BLINK EQU $F3 SPEED EQU $F1 BELL EQU $FF3A ; Monitor BELL routine CROUT EQU $FD8E ; Monitor CROUT routine PRBYTE EQU $FDDA ; Monitor PRBYTE routine MLI EQU $BF00 ; ProDOS system call OPENCMD EQU $C8 ; OPEN command index READCMD EQU $CA ; READ command index CLOSECMD EQU $CC ; CLOSE command index ************************************************** * START - sets up various fiddly zero page bits ************************************************** ORG $0800 ; PROGRAM DATA STARTS AT $0C00 NOW LDA #>SUBDIRNAME STA namhi LDA #BEGINDATA STA ldrhi LDA #FILENAME STA namhi LDA #TABLESEED,>V2COLORTABLE,>MICROM8,>THREEGRAYSTABLE,>VIDHD SEEDSTABLELO db LJJ7499PP" ASC ";;!/l)>CC66999RR" ASC "ii/11)>CCOO999RR" ASC "iil11UUZQGB988RR" ASC "vv1]]EEZQGB888RR" ASC "uu1]]WWZQGB888@@" ASC "oo[[[}}}JJNNMM@@" ASC "wwhhddbbkkKK##**" ASC "mmhhddbbkkKK##&*" TEXTTABLEHI db >TEXTTABLE COLORTABLEHI db >COLORTABLE FRAMESTABLE HEX 03,07,0B,0F,12,16,1A,1E,21,25,29,2D,30,34,38,3C ; how many frames transferred? HI byte lookup table HEX 3F,43,47,4B,4E,52,56,5A,5D,61,65,69,6C,70,74,78 HEX 7B,7F,83,87,8A,8E,92,96,99,9D,A1,A5,A8,AC,B0,B4 ************************************************** * Lores/Text lines * Thanks to Dagen Brock for this. ************************************************** Lo01 equ $400 Lo02 equ $480 Lo03 equ $500 Lo04 equ $580 Lo05 equ $600 Lo06 equ $680 Lo07 equ $700 Lo08 equ $780 Lo09 equ $428 Lo10 equ $4a8 Lo11 equ $528 Lo12 equ $5a8 Lo13 equ $628 Lo14 equ $6a8 Lo15 equ $728 Lo16 equ $7a8 Lo17 equ $450 Lo18 equ $4d0 Lo19 equ $550 Lo20 equ $5d0 * the "plus four" lines Lo21 equ $650 Lo22 equ $6d0 Lo23 equ $750 Lo24 equ $7d0 LoLineTable da Lo01,Lo02,Lo03,Lo04 da Lo05,Lo06,Lo07,Lo08 da Lo09,Lo10,Lo11,Lo12 da Lo13,Lo14,Lo15,Lo16 da Lo17,Lo18,Lo19,Lo20 da Lo21,Lo22,Lo23,Lo24 ** Here we split the table for an optimization ** We can directly get our line numbers now ** Without using ASL LoLineTableH db >Lo01,>Lo02,>Lo03 db >Lo04,>Lo05,>Lo06 db >Lo07,>Lo08,>Lo09 db >Lo10,>Lo11,>Lo12 db >Lo13,>Lo14,>Lo15 db >Lo16,>Lo17,>Lo18 db >Lo19,>Lo20,>Lo21 db >Lo22,>Lo23,>Lo24 LoLineTableL db BEGINDATA BEGINDATA EQU *