From 5a7e9bd7695b697d7f517bef144ce13b60e46856 Mon Sep 17 00:00:00 2001 From: pkali Date: Sat, 20 Aug 2022 01:56:28 -0400 Subject: [PATCH] library switch --- artwork/Scorch50.asm | 84 +++--- artwork/talk.asm | 4 + grafproc.asm | 8 +- lib/ATARISYS.ASM | 653 +++++++++++++++++++++++++++++++++++++++++++ scorch.asm | 40 +-- scorch.xex | Bin 51356 -> 51356 bytes textproc.asm | 18 +- weapons.asm | 8 +- 8 files changed, 736 insertions(+), 79 deletions(-) create mode 100644 lib/ATARISYS.ASM diff --git a/artwork/Scorch50.asm b/artwork/Scorch50.asm index ecc2f78..fd231d5 100644 --- a/artwork/Scorch50.asm +++ b/artwork/Scorch50.asm @@ -4,6 +4,8 @@ /***************************************/ ;icl "Scorch50.h" + ;icl "../lib/ATARISYS.ASM" + ;icl "../lib/macro.hea" ; --- dmsc LZSS player routine on zero page org $80 @@ -64,8 +66,6 @@ song_data ins 'mmm_16.lzs' song_end -POKEY = $D200 - buffers .ds 256 * 9 @@ -216,7 +216,7 @@ main ift USESPRITES mva >pmg pmbase ;missiles and players data address - mva #$03 pmcntl ;enable players and missiles + mva #$03 GRACTL ;enable players and missiles eif lda:cmp:req $14 ;wait 1 frame @@ -228,13 +228,13 @@ main ;mwa #NMI $fffa ;new NMI handler - sta colbaks + sta COLOR4 lda #$0E - sta colpf1s + sta COLOR1 lda #$84 - sta colpf2s + sta COLOR2 lda #$0E - sta colpf3s + sta COLOR3 lda #$02 @@ -267,7 +267,7 @@ stop cli vmain sysvbv,6 - mva #$00 pmcntl ;PMG disabled + mva #$00 GRACTL ;PMG disabled tax sta:rne hposp0,x+ @@ -408,7 +408,7 @@ x16 lda #$4A sta hposp1 c10 lda #$D4 sta wsync ;line=133 - sta color2 + sta colpf2 s8 lda #$C3 x17 ldx #$5A sta wsync ;line=134 @@ -464,7 +464,7 @@ c13 ldy #$02 sta wsync ;line=157 c14 lda #$04 sta wsync ;line=158 - sta color0 + sta colpf0 DLINEW dli7 1 1 1 dli7 @@ -497,7 +497,7 @@ c16 ldx #$0E c17 lda #$0A c18 ldx #$34 sta wsync ;line=188 - sta color1 + sta colpf1 stx colpm3 s13 lda #$43 x23 ldx #$49 @@ -507,47 +507,47 @@ x23 ldx #$49 c19 lda #$08 c20 ldx #$34 sta wsync ;line=190 - sta color1 + sta colpf1 stx colpm2 sta wsync ;line=191 c21 lda #$0A sta wsync ;line=192 - sta color1 + sta colpf1 c22 lda #$08 sta wsync ;line=193 - sta color1 + sta colpf1 c23 lda #$0A sta wsync ;line=194 - sta color1 + sta colpf1 c24 lda #$34 sta wsync ;line=195 - sta color2 + sta colpf2 c25 lda #$0C sta wsync ;line=196 - sta color1 + sta colpf1 c26 lda #$0A sta wsync ;line=197 - sta color1 + sta colpf1 c27 lda #$0C sta wsync ;line=198 - sta color1 + sta colpf1 sta wsync ;line=199 sta wsync ;line=200 c28 lda #$0E sta wsync ;line=201 - sta color1 + sta colpf1 c29 lda #$0C sta wsync ;line=202 - sta color1 + sta colpf1 c30 lda #$0E sta wsync ;line=203 - sta color1 + sta colpf1 c31 lda #$0C sta wsync ;line=204 - sta color1 + sta colpf1 c32 lda #$0E sta wsync ;line=205 - sta color1 + sta colpf1 DLINEW dli16 1 1 1 dli16 @@ -557,13 +557,13 @@ dli16 sta wsync ;line=209 c33 lda #$0C sta wsync ;line=210 - sta color1 + sta colpf1 c34 lda #$0E sta wsync ;line=211 - sta color1 + sta colpf1 c35 lda #$0C sta wsync ;line=212 - sta color1 + sta colpf1 DLINEW dli9 1 0 0 dli9 @@ -574,15 +574,15 @@ dli9 c36 ldx #$0A sta wsync ;line=216 sta chbase - stx color1 + stx colpf1 c37 lda #$0C sta wsync ;line=217 - sta color1 + sta colpf1 c38 lda #$0A x24 ldx #$9D c39 ldy #$34 sta wsync ;line=218 - sta color1 + sta colpf1 stx hposm1 sty colpm1 s14 lda #$03 @@ -594,7 +594,7 @@ c40 lda #$08 s15 ldx #$13 x26 ldy #$45 sta wsync ;line=220 - sta color1 + sta colpf1 stx sizem sty hposm2 s16 lda #$03 @@ -612,8 +612,8 @@ x29 ldy #$79 c41 lda #$06 c42 ldx #$00 sta wsync ;line=223 - sta color1 - stx color2 + sta colpf1 + stx colpf2 lda >fnt+$400*$01 s18 ldx #$50 x30 ldy #$44 @@ -624,15 +624,15 @@ x30 ldy #$44 sta wsync ;line=225 c43 lda #$08 sta wsync ;line=226 - sta color1 + sta colpf1 c44 lda #$0C sta wsync ;line=227 - sta color1 + sta colpf1 sta wsync ;line=228 sta wsync ;line=229 c45 lda #$0E sta wsync ;line=230 - sta color1 + sta colpf1 DLINEW dli10 1 1 1 dli10 @@ -699,15 +699,15 @@ VBL c0 lda #$00 sta colbak c1 lda #$0E - sta color1 + sta colpf1 c2 lda #$84 - sta color2 + sta colpf2 c3 lda #$0E - sta color3 + sta colpf3 lda #$02 - sta chrctl + sta CHACTL lda #$01 - sta gtictl + sta PRIOR sta sizep0 s0 lda #$03 sta sizem @@ -741,7 +741,7 @@ x6 lda #$A4 x7 lda #$A6 sta hposm1 c8 lda #$00 - sta color0 + sta colpf0 mwa #DLI.dli_start dliv ;set the first address of DLI interrupt diff --git a/artwork/talk.asm b/artwork/talk.asm index b9f26a1..f598d2b 100644 --- a/artwork/talk.asm +++ b/artwork/talk.asm @@ -126,3 +126,7 @@ OffensiveTextTableH NumberOfOffensiveTexts=54 NumberOfDeffensiveTexts=60 .endp +;hoverFull dta d"MY HOVERCRAFT IS FULL OF EELS!" +hoverFullEnd +;hoverEmpty dta d"RUNNING OUT OF EELS" +hoverEmptyEnd \ No newline at end of file diff --git a/grafproc.asm b/grafproc.asm index 39029a6..73152c9 100644 --- a/grafproc.asm +++ b/grafproc.asm @@ -971,7 +971,7 @@ DoNotClearParachute lda #08 sta temp ; Loop Counter ByteBelowTank - jsr point + jsr point_plot beq EmptyPoint2 sec ror UnderTank2 @@ -1243,7 +1243,7 @@ drawmountainspixelloop NextColumn1 mwa #0 ydraw NextPoint1 - jsr point + jsr point_plot beq StillNothing ldy #0 lda ydraw @@ -1294,7 +1294,7 @@ FalloutOfLine sta (tempor2),y ; and checking if there is a pixel there sta ydraw - jsr point + jsr point_plot bne ThereIsPixelHere ; if no pixel we plot it mva #1 color @@ -1622,7 +1622,7 @@ ClearPlot .endp ; ----------------------------------------- -.proc point +.proc point_plot ; ----------------------------------------- ; checks state of the pixel (coordinates in xdraw and ydraw) ; result is in A (zero or appropriate bit is set) diff --git a/lib/ATARISYS.ASM b/lib/ATARISYS.ASM new file mode 100644 index 0000000..5b3e8ec --- /dev/null +++ b/lib/ATARISYS.ASM @@ -0,0 +1,653 @@ +;**************************************************************************** +;* ATARI PERSONAL COMPUTER * +;* SYSTEM EQUATES * +;**************************************************************************** +; +; OPERATING SYSTEM EQUATE FILE +; +; MODULE ORIGIN TABLE +; +; VECTOR TABLE +; +; HANDLER ENTRY POINTS ARE CALL- +; ED OUT IN THE FOLLOWING VECTOR +; TABLE. THESE ARE THE ADDRESSES +; MINUS ONE. +; +; EXAMPLE FOR EDITOR +; +; E400 OPEN +; 2 CLOSE +; 4 GET +; 6 PUT +; 8 STATUS +; A SPECIAL +; C JUMP TO POWER ON INIT +; F NOT USED +; +EDITRV EQU $E400 ;EDITOR +SCRENV EQU $E410 ;TV SCREEN +KEYBDV EQU $E420 ;KEYBOARD +PRINTV EQU $E430 ;PRINTER +CASETV EQU $E440 ;CASSETTE +; +; JUMP VECTOR TABLE +; +; THE FOLLOWING IS A TABLE OF +; JUMP INSTRUCTIONS TO VARIOUS +; ENTRY POINTS IN THE OPERATING +; SYSTEM +; +DISKIV EQU $E450 ;DISK INITIALIZATION +DSKINV EQU $E453 ;DISK INTERFACE +CIOV EQU $E456 ;CENTRAL I/O ROUTINE +SIOV EQU $E459 ;SERIAL I/O ROUTINE +SETVBV EQU $E45C ;SET SYSTEM TIMERS +SYSVBV EQU $E45F ;VBLANK CALCULATIONS +XITVBV EQU $E462 ;EXIT VBLANK +SIOINV EQU $E465 ;SIO INITIALIZATION +SENDEV EQU $E468 ;SEND ENABLE ROUTINE +INTINV EQU $E46B ;INTRPT HANDLER INIT +CIOINV EQU $E46E ;CIO INITIALIZATION +BLKBDV EQU $E471 ;BLACKBOARD MODE +WARMSV EQU $E474 ;WARM START VECTOR +COLDSV EQU $E477 ;COLD START VECTOR +RBLOKV EQU $E47A ;CASSETTE READ BLOCK +CSOPIV EQU $E47D ;CASSETTE INPUT OPEN +; +; VECTORS ADDED FOR 800XL +; +PUPDIV EQU $E480 ;POWER UP DISPLAY +SLFTSV EQU $E483 ;SELF TEST PROGRAM +PHENTV EQU $E486 ;UPLOADED HANDLER ENTER +PHULNV EQU $E489 ;UPLOADED HANDLER UNLINK +PHINIV EQU $E48C ;UPLOADED HANDLER INIT +; +; OPERATING SYSTEM EQUATES +; +; COMMAND CODES FOR IOCBS +; +OPEN EQU $03 ;OPEN FOR I/O +GETREC EQU $05 ;GET RECORD (TEXT) +GETCHR EQU $07 ;GET CHARACTER(S) +PUTREC EQU $09 ;PUT RECORD (TEXT) +PUTCHR EQU $0B ;PUT CHARACTER(S) +CLOSE EQU $0C ;CLOSE DEVICE +STATIS EQU $0D ;STATUS REQUEST +SPECIL EQU $0E ;SPECIAL ENTRY COMMAND +; +; SPECIAL ENTRY COMMANDS +; +DRAWLN EQU $11 ;DRAW LINE +FILLIN EQU $12 ;FILL +RENAME EQU $20 ;RENAME DISK FILE +DELETE EQU $21 ;DELETE DISK FILE +FORMAT EQU $22 ;FORMAT DISK +LOCKFL EQU $23 ;LOCK FILE +UNLOCK EQU $24 ;UNLOCK FILE +POINT EQU $25 ;POINT SECTOR +NOTE EQU $26 ;NOTE SECTOR +IOCFRE EQU $FF ;IOCB "FREE" +; +; AUX1 EQUATES +; () INDICATES WHICH DEVICES +; +APPEND EQU $01 ;WR APPEND(D)-SCN RD(E) +DIRECT EQU $02 ;OPEN DIRECTORY(D) +OPNIN EQU $04 ;OPEN FOR INPUT(ALL) +OPNOT EQU $08 ;OPEN FOR OUTPUT(ALL) +OPNINO EQU $0C ;OPEN INPUT&OUTPUT(ALL) +MXDMOD EQU $10 ;OPEN MIXED MODE(E,S) +INSCLR EQU $20 ;OPEN W/O CLEAR(E,S) +; +; DEVICE NAMES +; +SCREDT EQU 'E' ;SCREEN EDITOR (R/W) +KBD EQU 'K' ;KEYBOARD (R ONLY) +DISPLY EQU 'S' ;SCREEN DISPLAY (R/W) +PRINTR EQU 'P' ;PRINTER (W ONLY) +CASSET EQU 'C' ;CASSETTE (R/W) +RS232 EQU 'R' ;MODEM (R/W) +DISK EQU 'D' ;DISK (R/W) +; +; +; +; OPERATING SYSTEM STATUS CODES +; +SUCCES EQU $01 ;SUCCESSFUL OPERATION +BRKABT EQU $80 ;BREAK KEY ABORT +PRVOPN EQU $81 ;IOCB ALREADY OPEN +NONDEV EQU $82 ;NON-EXISTANT DEVICE +WRONLY EQU $83 ;IOCB OPEN FOR W ONLY +NVALID EQU $84 ;INVALID COMMAND +NOTOPN EQU $85 ;DEVICE/FILE NOT OPEN +BADIOC EQU $86 ;INVALID IOCB # +RDONLY EQU $87 ;IOCB OPEN FOR R ONLY +EOFERR EQU $88 ;END OF FILE +TRNRCD EQU $89 ;TRUNCATED RECORD +TIMOUT EQU $8A ;PERIPHERAL TIMEOUT +DNACK EQU $8B ;DEVICE NO ACKNOWLEDGE +FRMERR EQU $8C ;SERIAL BUS FRAME ERR +CRSROR EQU $8D ;CURSOR OVERRANGE +OVRRUN EQU $8E ;SERIAL DATA OVERRUN +CHKERR EQU $8F ;SERIAL CHECKSUM ERR +DERRER EQU $90 ;PERIPHRAL DEVICE ERR +BADMOD EQU $91 ;BAD SCREEN MODE # +FNCNOT EQU $92 ;NONEXISTANT FUNCTION +SCRMEM EQU $93 ;SCREEN MEM TOO SMALL +; +; PAGE ZERO RAM ASSIGNMENTS +; +LNFLG EQU $00 ;LINBUG RAM +NGFLAG EQU $01 ;POWER-UP SELF-TEST FLAG +; +; THESE LOCATIONS NOT CLEARED +; +CASINI EQU $02 ;CASSETTE INIT LOC +RAMLO EQU $04 ;RAM POINTER MEM TST +TRAMSZ EQU $06 ;TEMP REG RAM SIZE +TSTDAT EQU $07 ;RAM TEST DATA REG +; +;CLEARED ON COLDSTART ONLY +; +WARMST EQU $08 ;WARM START FLAG +BOOTQ EQU $09 ;SUCCESSFUL BOOT FLG +DOSVEC EQU $0A ;DOS START VECTOR +DOSINI EQU $0C ;DOS INIT ADDRESS +APPMHI EQU $0E ;APPL MEM HI LIMIT +; +;CLEARED ON COLD OR WARM START +; +POKMSK EQU $10 ;MASK POKEY IRQ +BRKKEY EQU $11 ;BREAK KEY FLAG +RTCLOK EQU $12 ;REAL TIME CLOCK +BUFADR EQU $15 ;INDIRECT BUFF ADDR +ICCOMT EQU $17 ;COMMAND FOR VECTOR +DSKFMS EQU $18 ;FMS POINTER +DSKUTL EQU $1A ;DISK UTILITIES PTR +ABUFPT EQU $1C ;RESERVED +ICHIDZ EQU $20 ;HANDLER INDEX # +ICDNOZ EQU $21 ;DEVICE NUMBER +ICCOMZ EQU $22 ;COMMAND CODE +ICSTAZ EQU $23 ;STATUS RETURN +ICBALZ EQU $24 ;BUFFER ADDRESS +ICBAHZ EQU $25 +ICPTLZ EQU $26 ;PUT BYTE ROUTINE-1 +ICPTHZ EQU $27 +ICBLLZ EQU $28 ;BUFFER LENGTH +ICBLHZ EQU $29 +ICAX1Z EQU $2A ;AUXILIARY BYTES +ICAX2Z EQU $2B +ICSPRZ EQU $2C ;SPARE BYTES +ICIDNO EQU $2E ;IOCB # X 16 +CIOCHR EQU $2F ;CIO CHARACTER BYTE +STATUS EQU $30 ;INTERNAL STATUS +CHKSUM EQU $31 ;CHECKSUM +BUFRLO EQU $32 ;DATA BUFFER LO BYTE +BUFRHI EQU $33 ;DATA BUFFER HI BYTE +BFENLO EQU $34 ;NEXT BYTE PAST DATA +BFENHI EQU $35 ;BUFFER (HI & LO) +LTEMP EQU $36 ;LOADER TEMP +BUFRFL EQU $38 ;DATA BUFFR FULL FLG +RECVDN EQU $39 ;RECIEVE DONE FLAG +XMTDON EQU $3A ;XMIT DONE FLAG +CHKSNT EQU $3B ;CHECKSUM SENT FLAG +NOCKSM EQU $3C ;NO CHKSUM SENT FLAG +;BPTR EQU $3D ;CASSETTE DATA INDEX +FTYPE EQU $3E ;INTERRECORD GAP TYPE +FEOF EQU $3F ;END OF FILE FLAG +FREQ EQU $40 ;BEEP COUNT +SOUNDR EQU $41 ;NOISY I/O FLAG +CRITIC EQU $42 ;CRITICAL MODE +FMSZPG EQU $43 ;FMS ZERO PAGE +ZCHAIN EQU $4A ;HANDLER LOADER TEMP +DSTAT EQU $4C ;DISPLAY STATUS +ATRACT EQU $4D ;ATTRACT FLAG +DRKMSK EQU $4E ;DARK ATTRACT MASK +COLRSH EQU $4F ;COLOR SHIFTER +TMPCHR EQU $50 ;TEMP STORAGE +HOLD1 EQU $51 ;TEMP STORAGE +LMARGN EQU $52 ;LEFT MARGIN (1) +RMARGN EQU $53 ;RIGHT MARGIN (38) +ROWCRS EQU $54 ;CURSOR COUNTERS +COLCRS EQU $55 +DINDEX EQU $57 ;DISPLAY MODE # +SAVMSC EQU $58 ;SCREEN MEM ADDR +OLDROW EQU $5A ;DRAW START POSIT +OLDCOL EQU $5B +OLDCHR EQU $5D ;DATA UNDER CURSOR +OLDADR EQU $5E ;CURSOR MEM ADDR +FKDEF EQU $60 ;FUNC KEY DEFEAT POINTER +PALNTS EQU $62 ;PAL/NTSC FLAG +LOGCOL EQU $63 ;COL IN LOGICAL LINE +ADRESS EQU $64 ;TEMP STORAGE +MLTEMP EQU $66 ;TEMP STORAGE +SAVADR EQU $68 ;TEMP STORAGE +RAMTOP EQU $6A ;AVAILABLE RAM PAGES +BUFCNT EQU $6B ;BUFFER COUNT +BUFSTR EQU $6C ;EDITOR GETCH POINTR +BITMSK EQU $6E ;BIT MASK +SHFAMT EQU $6F ;PIXEL JUSTIFICATION +ROWAC EQU $70 ;ROW ACCUMULATOR +COLAC EQU $72 ;COLUMN ACCUMULATOR +ENDPT EQU $74 ;LINE LENGTH +DELTAR EQU $76 ;DELTA ROW +DELTAC EQU $77 ;DELTA COLUMN +KEYDEF EQU $79 ;KEY DEFEAT POINTER +SWPFLG EQU $7B ;SPLIT SCN CURS CNTL +HOLDCH EQU $7C ;KB CHAR TEMP HOLD +INSDAT EQU $7D ;TEMP STORAGE +COUNTR EQU $7E ;DRAW ITERATION CNT +; +; 80-FF ARE RESERVED FOR USER +; +; NOTE: SEE FLOATING POINT +; SUBROUTINE AREA FOR ZERO +; PAGE CELLS +; +; PAGE 1 - HARDWARE STACK +; +; PAGE TWO RAM ASSIGNMENTS +; +VDSLST EQU $0200 ;DSP LIST NMI VECTOR +VPRCED EQU $0202 ;PROCEED IRQ VECTOR +VINTER EQU $0204 ;INTERUPT IRQ VECTOR +VBREAK EQU $0206 ;BRK INST IRQ VECTOR +VKEYBD EQU $0208 ;POKEY KB IRQ VECTOR +VSERIN EQU $020A ;POKEY INPUT RDY IRQ +VSEROR EQU $020C ;POKEY OUTPUT RDY +VSEROC EQU $020E ;POKEY OUTPUT DONE +VTIMR1 EQU $0210 ;POKEY TIMER 1 IRQ +VTIMR2 EQU $0212 ;POKEY TIMER 2 IRQ +VTIMR4 EQU $0214 ;POKEY TIMER 4 IRQ +VIMIRQ EQU $0216 ;IMMED IRQ VECTOR +CDTMV1 EQU $0218 ;COUNT DOWN TIMER 1 +CDTMV2 EQU $021A ;COUNT DOWN TIMER 2 +CDTMV3 EQU $021C ;COUNT DOWN TIMER 3 +CDTMV4 EQU $021E ;COUNT DOWN TIMER 4 +CDTMV5 EQU $0220 ;COUNT DOWN TIMER 5 +VVBLKI EQU $0222 ;IMM VBLK NMI VECTOR +VVBLKD EQU $0224 ;DEF VBLK NMI VECTOR +CDTMA1 EQU $0226 ;CDTMV1 JSR ADDRESS +CDTMA2 EQU $0228 ;CDTMV2 JSR ADDRESS +CDTMF3 EQU $022A ;CDTMV3 FLAG +SRTIMR EQU $022B ;SOFTWARE REPEAT TMR +CDTMF4 EQU $022C ;CDTMV4 FLAG +INTEMP EQU $022D ;IAN'S TEMP +CDTMF5 EQU $022E ;CDTMV5 FLAG +DMACTLS EQU $022F ;SAVE DMACTL REG +DLPTRS EQU $0230 ;SAVE DISP LIST LO +;SDLSTH EQU $0231 ;SAVE DISP LIST HI +SSKCTL EQU $0232 ;SKCTL REGISTER RAM +LCOUNT EQU $0233 ;LOADER TEMP +LPENH EQU $0234 ;LIGHT PEN HORIZONTAL +LPENV EQU $0235 ;LIGHT PEN VERTICAL +BRKKY EQU $0236 ;BREAK KEY VECTOR +RELADR EQU $0238 ;LOADER REL ADDR +CDEVIC EQU $023A ;COMMAND BUFFER-DEV +CCOMND EQU $023B ;COMMAND BUFFER-CMND +CAUX1 EQU $023C ;COMMAND BUFFER AUX1 +CAUX2 EQU $023D ;COMMAND BUFFER AUX2 +;TEMP EQU $023E ;TEMPORARY RAM CELL +ERRFLG EQU $023F ;DEVICE ERROR FLAG +DFLAGS EQU $0240 ;DISK FLAGS(SECTOR1) +DBSECT EQU $0241 ;# DISK BOOT SECTORS +BOOTAD EQU $0242 ;DISK BOOT ADDRESS +COLDST EQU $0244 ;COLDSTART FLAG 1=CS +RECLEN EQU $0245 ;LOADER LENGTH +DSKTIM EQU $0246 ;DISK TIME OUT REG +VSFLAG EQU $026C ;FINE SCROLL TEMP +KEYDIS EQU $026D ;KEY DISABLE FLAG +FINE EQU $026E ;FINE SCROLL ENABLE(A1200) +GPRIOR EQU $026F ;GLOBAL PRIORITY +PADDL0 EQU $0270 ;POT 0 RAM CELL +PADDL1 EQU $0271 +PADDL2 EQU $0272 +PADDL3 EQU $0273 +STICK0 EQU $0278 ;JOYSTICK 0 RAM CELL +STICK1 EQU $0279 +PTRIG0 EQU $027C ;PADDLE TRIGGER 0 +PTRIG1 EQU $027D +PTRIG2 EQU $027E +PTRIG3 EQU $027F +STRIG0 EQU $0284 ;JOYSTICK TRIGGER 0 +STRIG1 EQU $0285 +HIBYTE EQU $0288 ;LOADER +WMODE EQU $0289 ;CASSETTE R/W MODE +BLIM EQU $028A ;CASSETTE RECORD SIZE +IMASK EQU $028B +JVECK EQU $028C ;JUMP VECTOR +NEWADR EQU $028E ;LOADER NEW ADDRESS +TXTROW EQU $0290 ;TEXT ROWCRS +TXTCOL EQU $0291 ;TEXT COLCRS +TINDEX EQU $0293 ;TEXT INDEX +TXTMSC EQU $0294 ;TEXT WINDOW MEM ADD +TXTOLD EQU $0296 ;TEXT OLDROW & COL +CRETRY EQU $029C ;# COMMAND RETRIES +HOLD3 EQU $029D +SUBTMP EQU $029E +HOLD2 EQU $029F +DMASK EQU $02A0 ;PIXEL LOCATION MASK +TMPLBT EQU $02A1 +ESCFLG EQU $02A2 ;ESCAPE FLAG +TABMAP EQU $02A3 ;TAB STOP MAP +LOGMAP EQU $02B2 ;LINE START BIT MAP +INVFLG EQU $02B6 ;INVERSE VIDEO FLAG +FILFLG EQU $02B7 ;FILL FLAG FOR DRAW +TMPROW EQU $02B8 +TMPCOL EQU $02B9 +SCRFLG EQU $02BB ;SET IF SCROLLING +HOLD4 EQU $02BC ;TEMP USED BY DRAW +DRETRY EQU $02BD ;# OF DEVICE RETRIES +SHFLOK EQU $02BE ;SHIFT/CTL LOCK FLAG +BOTSCR EQU $02BF ;BOTTOM OF SCREEN +PCOLR0 EQU $02C0 ;P0 COLOR +PCOLR1 EQU $02C1 ;P1 COLOR +PCOLR2 EQU $02C2 ;P2 COLOR +PCOLR3 EQU $02C3 ;P3 COLOR +COLOR0 EQU $02C4 ;COLOR 0 +COLOR1 EQU $02C5 +COLOR2 EQU $02C6 +COLOR3 EQU $02C7 +COLOR4 EQU $02C8 +RUNADR EQU $02C9 ;LOADER +HIUSED EQU $02CB ;LOADER +ZHIUSE EQU $02CD ;LOADER +GBYTEA EQU $02CF ;LOADER +LOADAD EQU $02D1 ;LOADER +ZLOADA EQU $02D3 ;LOADER +DSCTLN EQU $02D5 ;DISK SECTOR LENGTH +ACMISR EQU $02D7 ;RESERVED +KRPDEL EQU $02D9 ;KEY REPEAT DELAY +KEYREP EQU $02DA ;KEY REPEAT RATE(VBLANKS) +NOCLIK EQU $02DB ;CLICK ENABLE/DISABLE +HELPFG EQU $02DC ;HELP KEY FLAG +DMASAV EQU $02DD ;DMA SAVE STATE +PBPNT EQU $02DE ;PRINT BUFFER POINTER +PBUFSZ EQU $02DF ;PRINT BUFFER SIZE +DOSRUN EQU $02E0 ;DOS RUN/INIT ADDRESSES +RAMSIZ EQU $02E4 ;RAM SIZE-HIGH BYTE +MEMTOP EQU $02E5 ;TOP OF AVAIL MEMORY +MEMLO EQU $02E7 ;BOTTOM OF AVAIL MEM +HNDLOD EQU $02E9 ;POLL FLAG (1200) +DVSTAT EQU $02EA ;STATUS BUFFER +CBAUDL EQU $02EE ;CASSETTE BAUD RATE +CBAUDH EQU $02EF +CRSINH EQU $02F0 ;CURSOR INHIBIT 0=ON +KEYDEL EQU $02F1 ;KEY DELAY +CH1 EQU $02F2 ;PRIOR KB CHAR CODE +CHACT EQU $02F3 ;CHACTL REGISTER RAM +CHBAS EQU $02F4 ;CHBAS REGISTER RAM +NEWROW EQU $02F5 ;POINT DRAW GOES TO +NEWCOL EQU $02F6 +ROWINC EQU $02F8 ;ROW INCREMENT VALUE +COLINC EQU $02F9 ;COL INCREMENT VALUE +CHAR EQU $02FA ;INTERNAL CHAR CODE +ATACHR EQU $02FB ;ATASCII CHARACTER +CHKEY EQU $02FC ;KB CHAR CODE (FIFO) +FILDAT EQU $02FD ;RIGHT FILL DATA +DSPFLG EQU $02FE ;DISPLAY FLAG +SSFLAG EQU $02FF ;START/STOP FLAG +; +; PAGE THREE RAM ASSIGNMENTS +; +DDEVIC EQU $0300 ;BUS I.D. NUMBER +DUNIT EQU $0301 ;UNIT NUMBER +DCOMND EQU $0302 ;BUS COMMAND +DSTATS EQU $0303 ;COMMAND TYPE/STATUS +DBUFLO EQU $0304 ;DATA BUFFER LO BYTE +DBUFHI EQU $0305 ;DATA BUFFER HI BYTE +DTIMLO EQU $0306 ;DEVICE TIMEOUT SECS +DUNUSE EQU $0307 ;UNUSED BYTE +DBYTLO EQU $0308 ;# OF BYTES XFERRED +DBYTHI EQU $0309 +DAUX1 EQU $030A ;COMMAND AUX BYTE 1 +DAUX2 EQU $030B ;COMMAND AUX BYTE 2 +TIMER1 EQU $030C ;INITIAL TIMER VALUE +JMPERS EQU $030E ;OPTIONS (1200) +CASFLG EQU $030F ;CASSETE MODE IF SET +TIMER2 EQU $0310 ;FINAL TIMER VALUE +;TEMP1 EQU $0312 ;TEMP STORAGE +;TEMP2 EQU $0313 ;TEMP STORAGE +PTIMOT EQU $0314 ;PRINTER TIMEOUT REG +;TEMP3 EQU $0315 ;TEMP STORAGE +SAVIO EQU $0316 ;SAVE SERIAL IN DATA +TIMFLG EQU $0317 ;TIMEOUT FLAG C BAUD +STACKP EQU $0318 ;SIO STACK PTR SAVE +TSTAT EQU $0319 ;TEMP STATUS HOLDER +HATABS EQU $031A ;HANDLER ADDR TABLE +PUPBT1 EQU $033D ;POWER/UP RESET +PUPBT2 EQU $033E +PUPBT3 EQU $033F +ICHID EQU $0340 ;HANDLER INDEX # +ICDNO EQU $0341 ;DEVICE NUMBER +ICCOM EQU $0342 ;COMMAND CODE +ICSTA EQU $0343 ;STATUS +ICBAL EQU $0344 ;BUFFER ADDR LO BYTE +ICBAH EQU $0345 ;BUFFER ADDR HI BYTE +ICPTL EQU $0346 ;PUT ROUTINE ADDR-1 +ICPTH EQU $0347 +ICBLL EQU $0348 ;BUFFER LENGTH LO +ICBLH EQU $0349 ;BUFFER LENGTH HI +ICAX1 EQU $034A ;AUX BYTE 1 +ICAX2 EQU $034B ;AUX BYTE 2 +ICSPR EQU $034C ;SPARE BYTES +PRNBUF EQU $03C0 ;PRINTER BUFFER (40 BYTES) +SUPERF EQU $03E8 ;SCREEN EDITOR +CKEY EQU $03E9 ;START KEY FLAG +CASSBT EQU $03EA ;CASSETTE BOOT FLAG +CARTCK EQU $03EB ;CARTRIDGE CHECKSUM +ACMVAR EQU $03ED ;RESERVED +MINTLK EQU $03F9 ;RESERVED +GINTLK EQU $03FA ;CART INTERLOCK +CHLINK EQU $03FB ;HANDLER CHAIN +; +; PAGE FOUR RAM ASSIGNMENTS +; +CASBUF EQU $03FD ;CASSETTE BUFFER (131 BYTES) +USAREA EQU $0480 ;USER AREA +; +; PAGE FIVE AND SIX ARE RESERVED +; FOR USER WORK SPACE +; +; COLLEEN MNEMONICS +; +; --------------------------------------------------------------------------- +POKEY EQU $D200 +; --------------------------------------------------------------------------- +; +; READ +; +POT0 EQU POKEY+$00 +POT1 EQU POKEY+$01 +POT2 EQU POKEY+$02 +POT3 EQU POKEY+$03 +POT4 EQU POKEY+$04 +POT5 EQU POKEY+$05 +POT6 EQU POKEY+$06 +POT7 EQU POKEY+$07 +ALLPOT EQU POKEY+$08 +KBCODE EQU POKEY+$09 +RANDOM EQU POKEY+$0a +POTGO EQU POKEY+$0b +SERIN EQU POKEY+$0d +IRQST EQU POKEY+$0e +SKSTAT EQU POKEY+$0f +; +; WRITE +; +AUDF1 EQU POKEY+$00 +AUDC1 EQU POKEY+$01 +AUDF2 EQU POKEY+$02 +AUDC2 EQU POKEY+$03 +AUDF3 EQU POKEY+$04 +AUDC3 EQU POKEY+$05 +AUDF4 EQU POKEY+$06 +AUDC4 EQU POKEY+$07 +AUDCTL EQU POKEY+$08 +STIMER EQU POKEY+$09 +SKRES EQU POKEY+$0a +SEROUT EQU POKEY+$0d +IRQEN EQU POKEY+$0e +SKCTL EQU POKEY+$0f +; +; +; +; --------------------------------------------------------------------------- +GTIA EQU $D000 +; --------------------------------------------------------------------------- +; +; WRITE +; +HPOSP0 EQU GTIA+$00 +HPOSP1 EQU GTIA+$01 +HPOSP2 EQU GTIA+$02 +HPOSP3 EQU GTIA+$03 +HPOSM0 EQU GTIA+$04 +HPOSM1 EQU GTIA+$05 +HPOSM2 EQU GTIA+$06 +HPOSM3 EQU GTIA+$07 +SIZEP0 EQU GTIA+$08 +SIZEP1 EQU GTIA+$09 +SIZEP2 EQU GTIA+$0a +SIZEP3 EQU GTIA+$0b +SIZEM EQU GTIA+$0c +GRAFP0 EQU GTIA+$0d +GRAFP1 EQU GTIA+$0e +GRAFP2 EQU GTIA+$0f +GRAFP3 EQU GTIA+$10 +GRAFM EQU GTIA+$11 +COLPM0 EQU GTIA+$12 +COLPM1 EQU GTIA+$13 +COLPM2 EQU GTIA+$14 +COLPM3 EQU GTIA+$15 +COLPF0 EQU GTIA+$16 +COLPF1 EQU GTIA+$17 +COLPF2 EQU GTIA+$18 +COLPF3 EQU GTIA+$19 +COLBAK EQU GTIA+$1a +PRIOR EQU GTIA+$1b +VDELAY EQU GTIA+$1c +GRACTL EQU GTIA+$1d +HITCLR EQU GTIA+$1e +CONSOL EQU GTIA+$1f +; +; READ +; +M0PF EQU GTIA+$00 +M1PF EQU GTIA+$01 +M2PF EQU GTIA+$02 +M3PF EQU GTIA+$03 +P0PF EQU GTIA+$04 +P1PF EQU GTIA+$05 +P2PF EQU GTIA+$06 +P3PF EQU GTIA+$07 +M0PL EQU GTIA+$08 +M1PL EQU GTIA+$09 +M2PL EQU GTIA+$0a +M3PL EQU GTIA+$0b +P0PL EQU GTIA+$0c +P1PL EQU GTIA+$0d +P2PL EQU GTIA+$0e +P3PL EQU GTIA+$0f +TRIG0 EQU GTIA+$10 +TRIG1 EQU GTIA+$11 +TRIG2 EQU GTIA+$12 +TRIG3 EQU GTIA+$13 +PAL EQU GTIA+$14 +; +; +; --------------------------------------------------------------------------- +ANTIC EQU $D400 +; --------------------------------------------------------------------------- +; +DMACTL EQU ANTIC+$00 +CHACTL EQU ANTIC+$01 +DLPTR EQU ANTIC+$02 +;DLISTH EQU ANTIC+$03 +HSCROL EQU ANTIC+$04 +VSCROL EQU ANTIC+$05 +PMBASE EQU ANTIC+$07 +CHBASE EQU ANTIC+$09 +WSYNC EQU ANTIC+$0a +VCOUNT EQU ANTIC+$0b +PENH EQU ANTIC+$0c +PENV EQU ANTIC+$0d +NMIEN EQU ANTIC+$0e +NMIRES EQU ANTIC+$0f +NMIST EQU ANTIC+$0f +; +; +; --------------------------------------------------------------------------- +PIA EQU $D300 +; --------------------------------------------------------------------------- +; +PORTA EQU PIA+0 +PORTB EQU PIA+1 +PACTL EQU PIA+2 +PBCTL EQU PIA+3 +; +; --------------------------------------------------------------------------- +; Atari ANTIC chip display list equates +; --------------------------------------------------------------------------- +; +JUMP EQU $01 ; display list jump instruction (3 byte) +JVB EQU $41 ; display list jump and wait for vblank instruction (3) +; +SCH EQU $10 ; display list horizontal scrolling +SCV EQU $20 ; display list vertical scrolling +LMS EQU $40 ; display list load memory scan instruction (3 byte) +DLII EQU $80 ; display list interrupt instruction +; +SKIP1 EQU $00 ; display list skip 1 scan line instruction +SKIP2 EQU $10 ; display list skip 2 scan lines instruction +SKIP3 EQU $20 ; display list skip 3 scan lines instruction +SKIP4 EQU $30 ; display list skip 4 scan lines instruction +SKIP5 EQU $40 ; display list skip 5 scan lines instruction +SKIP6 EQU $50 ; display list skip 6 scan lines instruction +SKIP7 EQU $60 ; display list skip 7 scan lines instruction +SKIP8 EQU $70 ; display list skip 8 scan lines instruction +; +MODE2 EQU $02 ; display list mode 2 +MODE4 EQU $04 ; display list mode 4 +MODE8 EQU $08 ; display list mode 8 +MODEE EQU $0E ; display list mode E +MODEF EQU $0F ; display list mode F +; --------------------------------------------------------------------------- +; ENUMS +; --------------------------------------------------------------------------- + +.enum @dmactl + blank = %00 + narrow = %01 + standard= %10 + wide = %11 + missiles= %100 + players = %1000 + lineX1 = %10000 + lineX2 = %00000 + dma = %100000 +.ende + +scr48 = @dmactl(wide|dma|players|missiles|lineX1) +scr40 = @dmactl(standard|dma|players|missiles|lineX1) +scr32 = @dmactl(narrow|dma|players|missiles|lineX1) + +.enum @pmcntl + missiles= %1 + players = %10 + trigs = %100 +.ende + +.enum @gtictl + prior0 = %0 + prior1 = %1 + prior2 = %10 + prior4 = %100 + prior8 = %1000 + ply5 = %10000 ; Fifth Player Enable + mlc = %100000 ; Multiple Color Player Enable + mode9 = %01000000 + mode10 = %10000000 + mode11 = %11000000 +.ende diff --git a/scorch.asm b/scorch.asm index e6755e8..f0b6164 100644 --- a/scorch.asm +++ b/scorch.asm @@ -43,7 +43,7 @@ ; icl 'artwork/sfx/rmt_feat.asm' - .zpvar xdraw .word = $80 ;variable X for plot + .zpvar xdraw .word = $64 ;variable X for plot .zpvar ydraw .word ;variable Y for plot (like in Atari Basic - Y=0 in upper right corner of the screen) .zpvar xbyte .word .zpvar ybyte .word @@ -141,7 +141,7 @@ ;------------------------------- - icl 'lib/atari.hea' + icl 'lib/ATARISYS.ASM' icl 'lib/macro.hea' ;splash screen and musix @@ -384,8 +384,8 @@ NoGameOverYet jsr SetPMWidth lda #0 - sta colpf2s ; status line "off" - sta colpf1s + sta COLOR2 ; status line "off" + sta COLOR1 tax @ sta singleRoundVars,x @@ -450,7 +450,7 @@ SettingEnergies mva #$00 TankSequencePointer ;---------round screen is ready--------- - mva #TextForegroundColor colpf1s ; status line "on" + mva #TextForegroundColor COLOR1 ; status line "on" rts .endp @@ -531,7 +531,7 @@ DoNotFinishTheRound ldx tankNr lda TankStatusColoursTable,x - sta colpf2s ; set color of status line + sta COLOR2 ; set color of status line jsr PutTankNameOnScreen jsr DisplayStatus @@ -970,15 +970,15 @@ B0 DEY ;-------------------------------------------------- .proc ColorsOfSprites lda TankColoursTable ; colours of sprites under tanks - sta COLPM0S + sta PCOLR0 lda TankColoursTable+1 - sta COLPM1S + sta PCOLR1 lda TankColoursTable+2 - sta COLPM2S + sta PCOLR2 lda TankColoursTable+3 - sta COLPM3S + sta PCOLR3 LDA TankColoursTable+4 - STA COLPF3S ; joined missiles (5th tank) + STA COLOR3 ; joined missiles (5th tank) rts .endp @@ -1055,10 +1055,10 @@ SetunPlots ; ora #$38 ; Players and Missiles single lined ; sta dmactls lda #$03 ; P/M on - sta pmcntl + sta GRACTL jsr SetPMWidth lda #%00100001 ; P/M priorities (multicolor players on) - prior=1 - sta gtictls + sta GPRIOR jsr PMoutofScreen ;let the tanks be visible! @@ -1150,14 +1150,14 @@ MakeTanksVisible bne EndofPMG lda #%00100001 ; playfield after P/M - prior=1 STA WSYNC - sta gtictl + sta PRIOR bne EndOfDLI_GO EndofPMG cmp #1 bne ColoredLines lda #%00100100 ; playfield before P/M STA WSYNC - sta gtictl + sta PRIOR bne EndOfDLI_GO ColoredLines cmp #9 @@ -1519,7 +1519,7 @@ checkJoyGetKey ;------------JOY------------- ;happy happy joy joy ;check for joystick now - lda JSTICK0 + lda STICK0 and #$0f cmp #$0f beq notpressedJoyGetKey @@ -1529,7 +1529,7 @@ checkJoyGetKey notpressedJoyGetKey ;fire - lda TRIG0S + lda STRIG0 bne @- lda #$0c ;Return key @@ -1550,11 +1550,11 @@ getkeyend ;-------------------------------------------------- .proc WaitForKeyRelease ;-------------------------------------------------- - lda JSTICK0 + lda STICK0 and #$0f cmp #$0f bne WaitForKeyRelease - lda TRIG0S + lda STRIG0 beq WaitForKeyRelease lda SKSTAT cmp #$ff @@ -1568,7 +1568,7 @@ getkeyend and #%00000100 beq @+ lda #1 -@ and TRIG0S +@ and STRIG0 rts .endp ;-------------------------------------------------- diff --git a/scorch.xex b/scorch.xex index e85c9c062fd5a124ac8760a4bd5a3c90c30bc25b..aa0df240789fa84923ae48f2398a515ab2a47e01 100644 GIT binary patch delta 13582 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 diff --git a/textproc.asm b/textproc.asm index baf477f..2e988ff 100644 --- a/textproc.asm +++ b/textproc.asm @@ -26,9 +26,9 @@ lda #%00111110 ; normal screen width, DL on, P/M on sta dmactls jsr SetPMWidth - mva #TextBackgroundColor colpf2s + mva #TextBackgroundColor COLOR2 jsr ColorsOfSprites - mva #$ca colpf1s + mva #$ca COLOR1 VDLI DLIinterruptOptions ; jsr SetDLI for Options text screen @@ -294,7 +294,7 @@ AfterManualPurchase ldx tankNr lda TankStatusColoursTable,x - sta colpf2s + sta COLOR2 ; we are clearing list of the weapons @@ -1050,7 +1050,7 @@ NoArrowDown mva #0 TankNr @ tax lda TankStatusColoursTable,x - sta colpf2s ; set color of player name line + sta COLOR2 ; set color of player name line jsr EnterPlayerName bit escFlag spl:rts @@ -1909,12 +1909,12 @@ FinishResultDisplay lda #%00111110 ; normal screen width, DL on, P/M on sta dmactls lda #%00100100 ; playfield before P/M - sta gtictls + sta GPRIOR jsr SetPMWidth jsr ColorsOfSprites - mva #0 colpf1s + mva #0 COLOR1 sta CreditsVScrol - mva #TextForegroundColor colpf2s + mva #TextForegroundColor COLOR2 VDLI DLIinterruptGameOver ; jsr SetDLI for Game Over screen ; make text and color lines for each tank ldx NumberOfPlayers ;we start from the highest (best) tank @@ -2402,8 +2402,8 @@ NextChar02 mva #GOSbeg hposp0 mva #GOSbeg+12 hposp0+1 - mva #15 COLPM0S - sta COLPM1S + mva #15 PCOLR0 + sta PCOLR1 rts .endp diff --git a/weapons.asm b/weapons.asm index 772b219..3cc365e 100644 --- a/weapons.asm +++ b/weapons.asm @@ -1261,7 +1261,7 @@ checkJoy ;------------JOY------------- ;happy happy joy joy ;check for joystick now - lda JSTICK0 + lda STICK0 and #$0f cmp #$0f beq notpressedJoy @@ -1270,7 +1270,7 @@ checkJoy jmp jumpFromStick notpressedJoy ;fire - lda TRIG0S + lda STRIG0 jeq pressedSpace mva #$ff pressTimer ; stop counting frames jmp notpressed @@ -2493,7 +2493,7 @@ checkJoy ;------------JOY------------- ;happy happy joy joy ;check for joystick now - lda JSTICK0 + lda STICK0 and #$0f cmp #$0f beq notpressedJoy @@ -2502,7 +2502,7 @@ checkJoy jmp jumpFromStick notpressedJoy ;fire - lda TRIG0S + lda STRIG0 jeq pressedSpace mva #$ff pressTimer ; stop counting frames jmp notpressed