summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Morgan <sjm@sjm.io>2015-06-26 18:06:01 +0100
committerSimon Morgan <sjm@sjm.io>2015-06-26 18:06:01 +0100
commitaa41d2d66478ed5ed03cc841c6405288a8ca29b6 (patch)
treedd63b2ab6ecfe962eb2e5b1b8ebdd728d414d483
downloadhattrick-7800-aa41d2d66478ed5ed03cc841c6405288a8ca29b6.tar.gz
hattrick-7800-aa41d2d66478ed5ed03cc841c6405288a8ca29b6.tar.bz2
hattrick-7800-aa41d2d66478ed5ed03cc841c6405288a8ca29b6.zip
Initial import.
-rw-r--r--CIRTAB78.SCR1
-rw-r--r--CLNTAB78.SCR1
-rw-r--r--CRDTAB78.SCR1
-rw-r--r--GOLTAB78.SCR1
-rw-r--r--HATRICK.SCR1
-rw-r--r--HOCKEY.SCR1
-rw-r--r--HOCKEY.SML1516
-rw-r--r--HOKTAB78.SCR1
-rw-r--r--ME.TTPbin0 -> 27782 bytes
-rw-r--r--NGLTAB78.SCR1
-rw-r--r--NUMTAB78.SCR1
-rw-r--r--SCOTAB78.SCR1
-rw-r--r--TTLTAB78.SCR1
-rw-r--r--TWBTAB78.SCR1
-rw-r--r--ZAMTAB78.SCR1
15 files changed, 1529 insertions, 0 deletions
diff --git a/CIRTAB78.SCR b/CIRTAB78.SCR
new file mode 100644
index 0000000..59aaee0
--- /dev/null
+++ b/CIRTAB78.SCR
@@ -0,0 +1 @@
+009C C, 0076 C, 00D8 C, 0004 C, 00A6 C, 0076 C, 00D8 C, 0004 C, \ No newline at end of file
diff --git a/CLNTAB78.SCR b/CLNTAB78.SCR
new file mode 100644
index 0000000..7e2398d
--- /dev/null
+++ b/CLNTAB78.SCR
@@ -0,0 +1 @@
+001D C, 0053 C, 00F0 C, 0002 C, 002A C, 009C C, 00F0 C, 0002 C, 002E C, 0082 C, 00E8 C, 0001 C, 004C C, 0082 C, 00E8 C, 0001 C, 006A C, 0096 C, 00E8 C, 0001 C, 0074 C, 009C C, 00E8 C, 0001 C, 0078 C, 007F C, 00F0 C, 0001 C, 0079 C, 0017 C, 00E8 C, 0001 C, 0082 C, 0017 C, 00E8 C, 0001 C, \ No newline at end of file
diff --git a/CRDTAB78.SCR b/CRDTAB78.SCR
new file mode 100644
index 0000000..3dce7ba
--- /dev/null
+++ b/CRDTAB78.SCR
@@ -0,0 +1 @@
+000A C, 0058 C, 00EC C, 0001 C, 0012 C, 005D C, 00EC C, 0001 C, \ No newline at end of file
diff --git a/GOLTAB78.SCR b/GOLTAB78.SCR
new file mode 100644
index 0000000..39b7ee4
--- /dev/null
+++ b/GOLTAB78.SCR
@@ -0,0 +1 @@
+0060 C, 001E C, 00CE C, 0002 C, 0062 C, 001E C, 00CE C, 0002 C, 0064 C, 001E C, 00CE C, 0002 C, 0066 C, 001E C, 00CE C, 0002 C, 0068 C, 001E C, 00CE C, 0002 C, 006A C, 001E C, 00CE C, 0002 C, \ No newline at end of file
diff --git a/HATRICK.SCR b/HATRICK.SCR
new file mode 100644
index 0000000..f8b2781
--- /dev/null
+++ b/HATRICK.SCR
@@ -0,0 +1 @@
+( ATARI 7800 operating system + FORTH 00:01 05/22/86 ) ( 6502 FORTH for ROM 16:13 06/28/85 ) ( This file contains proprietary code and is Copyright 1986 ) ( by Ibid Inc., Hartford, CT ) ( SYSTEM COMPILATION FLAGS ATARI 7800 11:24 06/27/85 ) .NOLIST HEX 4000 C000 ROM ( 8000 -UP for now...) 1800 1000 RAM ( 1800 -27FF -- with holes ) FFFF EQU EM -HEADERS ( FORTH VERSION NUMBER EQUATES ) DECIMAL 3 EQU LMS-REL 1 EQU LMS-VER 0 EQU LMS-REV 06 EQU REL-MON 27 EQU REL-DAY 85 EQU REL-YR HEX ( ATARI 7800 DEVICE CONTROL REGISTERS - ZERO PAGE 05/22/86 ) HEX 01 EQU INPTCTRL ( INPUT PORT CONTROL - VBLANK ) 08 EQU IPP0 ( PADDLE RIGHT FIRE BUTTON JOY1 = 88) 09 EQU IPP1 ( PADDLE LEFT FIRE BUTTON JOY1 = 89) 0A EQU IPP2 ( PADDLE RIGHT FIRE BUTTON JOY2 = 8A) 0B EQU IPP3 ( PADDLE LEFT FIRE BUTTON JOY2 = 8B) 0C EQU IPF0 ( PLAYER 0 FIRE BUTTON INPUT ) 0D EQU IPF1 ( PLAYER 1 FIRE BUTTON INPUT ) 15 EQU AUDC0 ( AUDIO CONTROL CHANNEL 0 ) 16 EQU AUDC1 ( AUDIO CONTROL CHANNEL 1 ) 17 EQU AUDF0 ( AUDIO FREQUENCY CHANNEL 0 ) 18 EQU AUDF1 ( AUDIO FREQUENCY CHANNEL 1 ) 19 EQU AUDV0 ( AUDIO VOLUME CHANNEL 0 ) 1A EQU AUDV1 ( AUDIO VOLUME CHANNEL 1 ) ( ATARI 7800 DEVICE CONTROL REGISTERS - ZERO PAGE 05/22/86 ) 20 EQU BACKGRND ( BACKGROUND COLOR R/W) 24 EQU WSYNC ( WAIT FOR SYNC STROBE) 28 EQU MSTAT ( MARIA STATUS RO) 2C EQU DPPH ( DISPLAY LIST LIST-DLL-HI ADDR POINTER WO) 30 EQU DPPL ( DISPLAY LIST LIST-DLL-LO ADDR POINTER WO) 34 EQU CHARBASE ( CHARACTER BASE ADDRESS - HI ADDR WO) 38 EQU OFFSETREG ( UNUSED R/W) 3C EQU CTRL ( MARIA CONTROL REG WO) ( ATARI 7800 DEVICE CONTROL REGISTERS - ZERO PAGE 05/22/86 ) ( BELOW ARE R/W COLOR CONTROL REGS FOR PALETTES 0-7) 21 EQU P0C1 22 EQU P0C2 23 EQU P0C3 25 EQU P1C1 26 EQU P1C2 27 EQU P1C3 29 EQU P2C1 2A EQU P2C2 2B EQU P2C3 2D EQU P3C1 2E EQU P3C2 2F EQU P3C3 31 EQU P4C1 32 EQU P4C2 33 EQU P4C3 35 EQU P5C1 36 EQU P5C2 37 EQU P5C3 39 EQU P6C1 3A EQU P6C2 3B EQU P6C3 3D EQU P7C1 3E EQU P7C2 3F EQU P7C3 ( TIA -- JOYSTICK AND CONSOLE INPUT ) 0280 EQU SWCHA ( P0,P1 JOYSTICK DIRECTION XXXXXXXX ) 0282 EQU SWCHB ( CONSOLE SWITCHES XXXXXXXX ) 0281 EQU CTLSWA ( I/O CONTROL FOR SWCHA R/W--0/1) 0283 EQU CTLSWB ( I/O CONTROL FOR SWCHB R/W--0/1) ( FORTH VIDEO DISPLAY REGISTERS - ZERO PAGE 11:43 04/23/86 ) 7C EQU VIDSTACK-BASE 7D EQU DL-TAB-HOLD 7F EQU ELEM-TAB-HOLD 7F EQU STATUS-HOLD 81 EQU IMAGE-TAB-HOLD 81 EQU SPRITE-HOLD 83 EQU COUNTER 85 EQU ELEM-HOLD 85 EQU DPP-HOLD 89 EQU IMAGE-HOLD 85 EQU DPP-HOLD-LO 8D EQU ST-ZONE 86 EQU DPP-HOLD-HI 8E EQU ADJ-HOLD 8F EQU INT-FLAG ( FORTH AUDIO AND DISPLAY REGISTERS - ZERO 12:42 11/17/86 ) 90 EQU START-VID-STACK ( POINTER TO VIDSTACK BOT ) 92 EQU ^CUR-WORKAREA 94 EQU ^CUR-NOTE 96 EQU BONUS 97 EQU BG-SCOREAREA 98 EQU BG-FREE2 99 EQU BG-FREE3 9A EQU BG-TOP-ICE 9B EQU DX0 9C EQU DY0 9D EQU FB0 9F EQU DX1 A0 EQU DY1 A1 EQU FB1 A2 EQU DLI# A3 EQU CONSOLE A4 EQU SCROLL A5 EQU SCOREFLASH A6 EQU HHURTS A7 EQU ACTION-CTR A8 EQU SND?-FLAG A9 EQU H-INACTIVE AA EQU OBJECT AC EQU RTAB AE EQU SYSTIMER B0 EQU CUR-SND ( B2 EQU SND-RAM 16h Bytes -> C6h ) ( Atari Sound Equates 16:49 12/05/86 ) DECIMAL ( Workarea and Note equates ) 11 EQU WORK-SIZE 6 EQU NOTE-SIZE 0 EQU DUR ( same ) 1 EQU FREQ ( same ) 2 EQU VOL ( same ) 3 EQU W-FTMR ( counter ) 3 EQU N-WAVE 4 EQU W-FRLD ( timer reload ) 4 EQU N-FSWP ( ftmr | fchg ) 5 EQU W-FCHG ( frq chg ) 5 EQU N-VSWP ( vtmr | vchg ) 6 EQU W-VTMR ( counter ) 7 EQU W-VRLD ( timer reload ) 8 EQU W-VCHG ( frq chg ) 9 EQU W-NXT-NOTE 0 EQU V0 1 EQU V1 HEX ( Atari Sound Workareas 12:42 11/17/86 ) B2 EQU SND-RAM SND-RAM EQU WORKAREA0 WORKAREA0 WORK-SIZE + EQU WORKAREA1 WORKAREA1 WORK-SIZE + EQU NEXT-FREE ( FORTH SYSTEM VARIBLES - N IP W & XSAVE - 12:45 11/17/86 ) 00EF EQU ^S0 ( data stack ) 00F0 EQU N ( EF - F7 ) 00F8 EQU IP ( IP-LO IP-HI 6C W-LO W-HI ) 00FB EQU W 00FD EQU XSAVE 01FF EQU ^R0 ( return stack ) ( ATARI 7800 LIVING COLORS ) 1F EQU YELLOWISH-GREEN 6F EQU PURPLE BF EQU GREYISH-GREEN 3F EQU SALMON 7F EQU BLUE DF EQU LIME-GREEN 4F EQU PINK 8F EQU BLUE1 CF EQU GREEN 5F EQU LAVENDER 9F EQU BLUE2 FF EQU COPPER AF EQU GREYISH-BLUE EF EQU GREENISH-YELLOW 2F EQU TAN 0F EQU BLUISH-GREY ( FORTH SYSTEM VARIBLES - PAGE 22 05/22/86 ) 2200 EQU S0 ( base addr hold of param stack ) S0 2+ EQU R0 ( base addr hold of return stack) R0 2+ EQU <TIB> ( addr of terminal input buffer ) <TIB> 2+ EQU #TIB ( length of input stream in TIB ) #TIB 2+ EQU DP ( next usable addr in dictionary ) DP 2+ EQU VOC-LINK ( start of vocabulary chain ) VOC-LINK 2+ EQU OUT ( column count, output ) OUT 2+ EQU >IN ( offset into input stream ) >IN 2+ EQU STATE ( 0=interpreting -1=compiling) STATE 2+ EQU BASE ( current system radix) BASE 2+ EQU DPL ( # of decimal places in DOUBLE#) DPL 2+ EQU CSP ( compiler security, stack position) CSP 2+ EQU HLD ( addr of forming output string) HLD 2+ EQU SPAN ( length of string read with EXPECT) SPAN 2+ EQU CONTEXT ( vocabulary first in search order) ( FORTH MISC SYSTEM VARIBLES - PAGES 0,2 & 21 14:35 06/23/86 ) 200 ^R0 0FF AND - EQU *R0 ( offset for ,X addressing ) 2100 EQU ^TIB ( Forth terminal input buffer ) 28 EQU TIB_LEN ( length of terminal inp buff ) 8 EQU BSIN ( backspace char ) DECIMAL 160 EQU RIGHT-WALL 0 EQU LEFT-WALL HEX ( GRAPHICS SCREEN DLL LAYOUT - PAGE 18 14:05 05/02/86 ) HEX 1810 EQU GBORDERA GBORDERA 3 + EQU GBORDERB GBORDERB 3 + EQU GBORDERC GBORDERC 3 + EQU GLINE0 GLINE0 3 + EQU GLINE1 GLINE1 3 + EQU GLINE2 GLINE2 3 + EQU GLINE3 GLINE3 3 + EQU GLINE4 GLINE4 3 + EQU GLINE5 GLINE5 3 + EQU GLINE6 GLINE6 3 + EQU GLINE7 GLINE7 3 + EQU GLINE8 GLINE8 3 + EQU GLINE9 GLINE9 3 + EQU GLINE10 GLINE10 3 + EQU GLINE11 GLINE11 3 + EQU GLINE12 GLINE12 3 + EQU GLINE13 GLINE13 3 + EQU GLINE14 GLINE14 3 + EQU GLINE15 GLINE15 3 + EQU GLINE16 GLINE16 3 + EQU GLINE17 GLINE17 3 + EQU GLINE18 GLINE18 3 + EQU GLINE19 GLINE19 3 + EQU GLINE20 GLINE20 3 + EQU GLINE21 GLINE21 3 + EQU GLINE22 GLINE22 3 + EQU GLINE23 GLINE23 3 + EQU GBORDERD GBORDERD 3 + EQU GBORDERE GBORDERE 3 + EQU GBORDERF ( GRAPHICS SCREEN DL LAYOUT - PAGE 22 14:50 06/23/86 ) 2220 EQU GNULL GNULL 4 + EQU DL-TABLE-START DL-TABLE-START EQU GNE0 GNE0 3E + EQU GNE1 GNE1 3E + EQU GNE2 GNE2 3E + EQU GNE3 GNE3 3E + EQU GNE4 GNE4 3E + EQU GNE5 GNE5 3E + EQU GNE6 GNE6 3E + EQU GNE7 GNE7 3E + EQU GNE8 GNE8 3E + EQU GNE9 GNE9 3E + EQU GNE10 GNE10 3E + EQU GNE11 GNE11 3E + EQU GNE12 GNE12 3E + EQU GNE13 GNE13 3E + EQU GNE14 GNE14 3E + EQU GNE15 GNE15 3E + EQU GNE16 GNE16 3E + EQU GNE17 GNE17 3E + EQU GNE18 GNE18 3E + EQU GNE19 GNE19 3E + EQU GNE20 GNE20 3E + EQU GNE21 GNE21 3E + EQU GNE22 GNE22 3E + EQU GNE23 GNE23 3E + EQU 5BYTE GBORDERA EQU ZONE-LIST ( 14:35 12/01/86 ) GBORDERF 6 + EQU TEST-COUNT TEST-COUNT 10 + EQU PLAYERS-ETAB PLAYERS-ETAB EQU BLUE-ALTER ( **PLAYERS-ETAB) BLUE-ALTER 1+ EQU BLUE-IMAGE# BLUE-IMAGE# 1+ EQU BLUE-X BLUE-X 1+ EQU BLUE-Y BLUE-Y 1+ EQU REDD-ALTER REDD-ALTER 1+ EQU REDD-IMAGE# REDD-IMAGE# 1+ EQU REDD-X REDD-X 1+ EQU REDD-Y REDD-Y 1+ EQU BLUE-GOALY-ALTER BLUE-GOALY-ALTER 1+ EQU BLUE-GOALY-IMAGE# BLUE-GOALY-IMAGE# 1+ EQU BLUE-GOALY-X BLUE-GOALY-X 1+ EQU BLUE-GOALY-Y ( BURST ELEMENT-TABLE & SCORE ELEMENT TABLE 15:27 08/25/86 ) BLUE-GOALY-Y 1+ EQU REDD-GOALY-ALTER REDD-GOALY-ALTER 1+ EQU REDD-GOALY-IMAGE# REDD-GOALY-IMAGE# 1+ EQU REDD-GOALY-X REDD-GOALY-X 1+ EQU REDD-GOALY-Y REDD-GOALY-Y 1+ EQU PUCK-ALTER PUCK-ALTER 1+ EQU PUCK-IMAGE# PUCK-IMAGE# 1+ EQU PUCK-X PUCK-X 1+ EQU PUCK-Y PUCK-Y 1+ EQU END-TABLE-PLUG ( **GAMEVARS) END-TABLE-PLUG 60 + EQU SCOREBOARD-ETAB ( **SCORE-ETAB) SCOREBOARD-ETAB 40 + EQU NUMBERS-ETAB ( **NUMBERS-ETAB) NUMBERS-ETAB 40 + EQU NETGOAL-ETAB ( **NETGOAL-ETAB) NETGOAL-ETAB 40 + EQU CENTERLINES-ETAB ( **C-LINES-ETAB) CENTERLINES-ETAB 40 + EQU BORDER-ETAB ( **BORDER-ETAB) ( VARIOUS STORES AND HOLDS 15:57 08/25/86 ) NUMBERS-ETAB EQU NUM0-A NUM0-A 1+ EQU NUM0-N NUM0-N 3 + EQU NUM1-A NUM1-A 1+ EQU NUM1-N NUM1-N 3 + EQU NUM2-A NUM2-A 1+ EQU NUM2-N NUM2-N 3 + EQU NUM3-A NUM3-A 1+ EQU NUM3-N NUM3-N 3 + EQU NUM4-A NUM4-A 1+ EQU NUM4-N NUM4-N 3 + EQU NUM5-A NUM5-A 1+ EQU NUM5-N NUM5-N 3 + EQU NUM6-A NUM6-A 1+ EQU NUM6-N NUM6-N 3 + EQU NUM7-A NUM7-A 1+ EQU NUM7-N NUM7-N 3 + EQU NUM8-A NUM8-A 1+ EQU NUM8-N NUM8-N 3 + EQU NUM9-A NUM9-A 1+ EQU NUM9-N NUM9-N 3 + EQU NUMA-A NUMA-A 1+ EQU NUMA-N ( BLUE SCORE NUMS: 0 & 1 RED SCORE NUMS: 2 & 3 ) ( CLOCK NUMS: 4, 5 & 6 ) ( BLUE SAVES NUMS: 7 & 8 RED SAVES NUMS: 9 & A ) ( VARIOUS STORES AND HOLDS 15:57 08/25/86 ) NETGOAL-ETAB EQU BUT-A BUT-A 1+ EQU BUT-I BUT-I 3 + EQU BLT-A BLT-A 1+ EQU BLT-I BLT-I 3 + EQU RUT-A RUT-A 1+ EQU RUT-I RUT-I 3 + EQU RLT-A RLT-A 1+ EQU RLT-I RLT-I 3 + EQU NETPLUG TEST-COUNT 1+ EQU TIMER TIMER 1+ EQU SECONDS SECONDS 1+ EQU MINUTES MINUTES 1+ EQU PLAYER1-FEET PLAYER1-FEET 1+ EQU PLAYER2-FEET ( cold start entry point 12:35 06/22/85 ) ASSEMBLER L: RESET NOP ECLD JMP ( jump to cold start ) L: NMI VIDEO-INT-RTN JMP L: IRQ RTI FORTH L: INIT-FORTH 0 , ( link to top of FORTH voc ) L: INIT-S0 ^S0 , ( initial S0 ) L: INIT-R0 ^R0 , ( initial R0 ) L: INIT-TIB ^TIB , ( initial <TIB> ) L: INIT-DP 0 , ( initial DP ) THERE LABEL NO_SKIP 2 ALLOT-RAM ( inner interpreter 11:58 02/08/85 ) ASSEMBLER L: POP3 INX INX L: POP2 INX INX L: POP INX INX NEXT JMP L: PUSH DEX DEX L: PUT TOS 1+ STA PLA TOS STA L: NEXT 1 # LDY IP )Y LDA W 1+ STA DEY IP )Y LDA W STA CLC IP LDA 2 # ADC IP STA CS IF IP 1+ INC THEN W 1 - JMP ( logical flags 16:51 06/19/85 ) L: POP3-TRUE INX INX L: POP2-TRUE INX INX L: POP-TRUE INX INX SET-TRUE JMP L: PUSH-TRUE DEX DEX L: SET-TRUE 0FF # LDA TOS STA TOS 1+ STA NEXT JMP L: POP3-FALSE INX INX L: POP2-FALSE INX INX L: POP-FALSE INX INX SET-FALSE JMP L: PUSH-FALSE DEX DEX L: SET-FALSE 0 # LDA TOS STA TOS 1+ STA NEXT JMP FORTH ( ECLD -- 7800 STARTUP, THEN FORTH INIT 13:29 05/19/86 ) PROC ECLD ( 7800 STARTUP ----INSERTED ) 07 # LDA INPTCTRL STA ( LATCH INTO 3600 MODE ) SEI CLD 7F # LDA CTRL STA ( CONTROL REG -- DMA OFF ) 00 # LDY OFFSETREG STY ( OFFSET -- 00 ) 01 # LDA INPTCTRL STA ( NOW JOYSTICK ANTIFREEZE--?????) CTLSWA STY 14 # LDA ( 281 -- INIT JOYSTICK READ 6531) CTLSWB STA ( 283 -- INIT CONSOLE READ 6531) AUDV0 STY ( ZERO AUDIO VOLUME ) AUDV1 STY ( ZERO AUDIO VOLUME ) ( ECLD continued machine cold start 00:47 05/22/86 ) ( FORTH VIRTUAL MACHINE INIT ) ' COLD >BODY >HI # LDA IP 1+ STA ( init IP ) ' COLD >BODY >LO # LDA IP STA 06C # LDA W 1- STA ( init W with JMP-IND opcode ) 0FF # LDX TXS ( init RP ) ^S0 # LDX ( init SP ) NEXT JMP END-PROC ( COLD 23:47 05/22/86 ) : COLD INIT-S0 @ S0 ! INIT-R0 @ R0 ! INIT-TIB @ <TIB> ! INIT-DP @ DP ! INIT-FORTH @ CONTEXT ! STATE OFF >IN OFF DPL OFF OUT OFF SPAN OFF NO_SKIP OFF 40 7F ERASE 1800 [ 2000 1800 - ] LITERAL ERASE ( zero all this) 2220 [ 2800 2220 - ] LITERAL ERASE ( skip system vars ) ( AUDIO-OFF ) VIDEO DECIMAL ABORT ; ( INITIALIZE VIDEO & AUDIO INTERFACES 15:09 06/23/86 ) ( CODE AUDIO-OFF 0 # LDA AUDIO-CLR JSR 1 # LDA AUDIO-CLR JSR NEXT JMP END-CODE ) CODE VIDEO ( -- ) XSAVE STX START-VIDEO JSR XSAVE LDX NEXT JMP END-CODE ( abort bye mon ABORT 10:58 06/21/85 ) 0 CONSTANT ABVAR ( INIT in open code: ' top-word ' ABVAR ! ) : abort S0 @ SP! DECIMAL STATE OFF ( QUIT ) ; : ABORT ABVAR EXECUTE ; CODE GRAPHICS-MODE XSAVE STX START-VIDEO JSR XSAVE LDX NEXT JMP END-CODE HERE EQU G-WAITING-DLL ( PRE-MADE DLL TABLE CMOVED INTO PLACE) ASSEMBLER 88 C, 5BYTE >HI C, 5BYTE >LO C, ( BORDER T1 BG-SCRAR) 07 C, GNULL >HI C, GNULL >LO C, ( BORDER T2) 07 C, GNULL >HI C, GNULL >LO C, ( BORDER T3) 07 C, GNE0 >HI C, GNE0 >LO C, ( ZONE 0 ) 07 C, GNE1 >HI C, GNE1 >LO C, ( ZONE 1 ) 07 C, GNE2 >HI C, GNE2 >LO C, ( ZONE 2 ) 07 C, GNE3 >HI C, GNE3 >LO C, ( ZONE 3 ) 87 C, GNE4 >HI C, GNE4 >LO C, ( ZONE 4 BG-TOP-ICE) 07 C, GNE5 >HI C, GNE5 >LO C, ( ZONE 5 ) 07 C, GNE6 >HI C, GNE6 >LO C, ( ZONE 6 ) 07 C, GNE7 >HI C, GNE7 >LO C, ( ZONE 7 ) 07 C, GNE8 >HI C, GNE8 >LO C, ( ZONE 8 ) 07 C, GNE9 >HI C, GNE9 >LO C, ( ZONE 9 ) 07 C, GNE10 >HI C, GNE10 >LO C, ( ZONE 10 ) 07 C, GNE11 >HI C, GNE11 >LO C, ( ZONE 11 ) 07 C, GNE12 >HI C, GNE12 >LO C, ( ZONE 12 ) 07 C, GNE13 >HI C, GNE13 >LO C, ( ZONE 13 ) 07 C, GNE14 >HI C, GNE14 >LO C, ( ZONE 14 ) 07 C, GNE15 >HI C, GNE15 >LO C, ( ZONE 15 ) 07 C, GNE16 >HI C, GNE16 >LO C, ( ZONE 16 ) 07 C, GNE17 >HI C, GNE17 >LO C, ( ZONE 17 ) 07 C, GNE18 >HI C, GNE18 >LO C, ( ZONE 18 ) 07 C, GNE19 >HI C, GNE19 >LO C, ( ZONE 19 ) 07 C, GNE20 >HI C, GNE20 >LO C, ( ZONE 20 ) 07 C, GNE21 >HI C, GNE21 >LO C, ( ZONE 21 ) 07 C, GNE22 >HI C, GNE22 >LO C, ( ZONE 22 ) 87 C, GNE23 >HI C, GNE23 >LO C, ( ZONE 23 BOTTOM-ICE) 07 C, GNULL >HI C, GNULL >LO C, ( BORDER B1) 07 C, GNULL >HI C, GNULL >LO C, ( BORDER B2) 07 C, GNULL >HI C, GNULL >LO C, ( BORDER B3) 07 C, GNULL >HI C, GNULL >LO C, ( BORDER B4) ( COLD START VIDEO INITIALIZATION 1/3 11:08 05/07/86 ) HEX PROC START-VIDEO 60 # LDA CTRL STA ( MARIA NO DMA ) DEX DEX DEX DEX ( MAKE ROOM ON STACK ) G-WAITING-DLL >HI # LDA NOS 1+ STA ( ADDR OF ROM IMAGE ) G-WAITING-DLL >LO # LDA NOS STA ( GRAPHICS DLL TABLE LODD) ZONE-LIST >HI # LDA TOS 1+ STA ( ADDR OF RAM IMAGE OF THE) ZONE-LIST >LO # LDA TOS STA ( GRAPHICS DLL TABLE LOADED) 6D # LDY BEGIN 2 X) LDA 0 X) STA ( 90 BYTE DLL TABLE TRANSFERED) TOS INC 0= IF TOS 1+ INC THEN NOS INC 0= IF NOS 1+ INC THEN DEY 0= UNTIL ( COLD START VIDEO INITIALIZATION 2/3 11:08 05/07/86 ) 5BYTE STY 5BYTE 5 + STY 5BYTE 6 + STY ( SPECIAL 5BYTE) 5BYTE 8 + STY B0 # LDY 5BYTE 7 + STY 40 # LDY 5BYTE 1+ STY B0 # LDY 5BYTE 2+ STY ( HEADER AT END) 1F # LDY 5BYTE 3 + STY AA # LDY 5BYTE 4 + STY ( OF DL TABLE ) 00 # LDA INT-FLAG STA 7C # LDA START-VID-STACK STA 1 # LDA DLI# STA ( INITIAL VBLANK VIDEO-INIT 3/3 12:36 06/03/86 ) BEGIN MSTAT BIT 0< UNTIL ( THEN WAIT FOR VBLANK ) ZONE-LIST >HI # LDA DPPH STA ( DPPH LOADED ) ZONE-LIST >LO # LDA DPPL STA ( DPPL LOADED ) ( 48) 40 # LDA CTRL STA ( MARIA DMA ON-NO BORDER XTND) 0F # LDA P0C1 STA 76 # LDA P0C2 STA 00 # LDA P0C3 STA ( PAL 0) 2F # LDA P1C1 STA 46 # LDA P1C2 STA 00 # LDA P1C3 STA ( PAL 1) 0F # LDA P2C1 STA 76 # LDA P2C2 STA 46 # LDA P2C3 STA ( PAL 2) 2F # LDA P3C1 STA 08 # LDA P3C2 STA 00 # LDA P3C3 STA ( PAL 3) 58 # LDA P4C1 STA 54 # LDA P4C2 STA 50 # LDA P4C3 STA ( PAL 4) 2F # LDA P5C1 STA 2F # LDA P5C2 STA 2F # LDA P5C3 STA ( PAL 5) 00 # LDA P6C1 STA 00 # LDA P6C2 STA 00 # LDA P6C3 STA ( PAL 6) 0A # LDA P7C1 STA 0A # LDA P7C2 STA 0A # LDA P7C3 STA ( PAL 7) INX INX INX INX RTS END-PROC ( TEXT MODE RAM DISTRIBUTION 16:13 08/04/86 ) 1810 EQU RAM-TEXT-DLL 18F0 EQU RAM-TEXT-DLS 1A00 EQU RAM-CHARMAPS 18F0 EQU BLANK 1A00 EQU CM-BLANK BLANK 7 + EQU FP1 CM-BLANK 10 + EQU CM-FP1 FP1 7 + EQU FP2 CM-FP1 10 + EQU CM-FP2 FP2 7 + EQU FP3 CM-FP2 10 + EQU CM-FP3 FP3 7 + EQU FP4 CM-FP3 10 + EQU CM-FP4 FP4 7 + EQU FP5 CM-FP4 10 + EQU CM-FP5 FP5 7 + EQU FP6 CM-FP5 10 + EQU CM-FP6 FP6 7 + EQU FP7 CM-FP6 10 + EQU CM-FP7 FP7 7 + EQU FP8 CM-FP7 10 + EQU CM-FP8 FP8 7 + EQU FP9 CM-FP8 10 + EQU CM-FP9 FP9 7 + EQU FP10 CM-FP9 10 + EQU CM-FP10 FP10 7 + EQU FP11 CM-FP10 10 + EQU CM-FP11 FP11 7 + EQU FP12 CM-FP11 10 + EQU CM-FP12 ( TEXT MODE RAM DISTRIBUTION 16:13 08/04/86 ) FP12 7 + EQU FP13 CM-FP12 10 + EQU CM-FP13 FP13 7 + EQU FP14 CM-FP13 10 + EQU CM-FP14 FP14 7 + EQU FP15 CM-FP14 10 + EQU CM-FP15 FP15 7 + EQU SP1 CM-FP15 10 + EQU CM-SP1 SP1 7 + EQU SP2 CM-SP1 10 + EQU CM-SP2 SP2 7 + EQU SP3 CM-SP2 10 + EQU CM-SP3 SP3 7 + EQU SP4 CM-SP3 10 + EQU CM-SP4 SP4 7 + EQU SP5 CM-SP4 10 + EQU CM-SP5 SP5 7 + EQU SP6 CM-SP5 10 + EQU CM-SP6 SP6 7 + EQU SP7 CM-SP6 10 + EQU CM-SP7 SP7 7 + EQU SP8 CM-SP7 10 + EQU CM-SP8 SP8 7 + EQU SP9 CM-SP8 10 + EQU CM-SP9 SP9 7 + EQU SP10 CM-SP9 10 + EQU CM-SP10 SP10 7 + EQU TP1 CM-SP10 10 + EQU CM-TP1 TP1 7 + EQU TP2 CM-TP1 10 + EQU CM-TP2 ( TEXT MODE RAM DISTRIBUTION 16:13 08/04/86 ) TP2 7 + EQU TP3 CM-TP2 10 + EQU CM-TP3 TP3 7 + EQU TP4 CM-TP3 10 + EQU CM-TP4 TP4 7 + EQU TP5 CM-TP4 10 + EQU CM-TP5 TP5 7 + EQU TP6 CM-TP5 10 + EQU CM-TP6 TP6 7 + EQU TP7 CM-TP6 10 + EQU CM-TP7 TP7 7 + EQU TP8 CM-TP7 10 + EQU CM-TP8 TP8 7 + EQU TP9 CM-TP8 10 + EQU CM-TP9 TP9 7 + EQU TP10 CM-TP9 10 + EQU CM-TP10 TP10 7 + EQU TP11 CM-TP10 10 + EQU CM-TP11 HERE EQU ROM-TEXT-DLL ( PRE-MADE DLL TABLE) ASSEMBLER 0B C, BLANK >HI C, BLANK >LO C, ( ROM-IMAGE>>RAM ADDR 1810) 0B C, BLANK >HI C, BLANK >LO C, ( LEN: 207 ENDS: 18DF ) 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, ( PRE-MADE DLL TABLE CMOVED INTO SLOT) 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, HERE EQU TITLE-DLLS 0B C, FP1 >HI C, FP1 >LO C, 0B C, FP2 >HI C, FP2 >LO C, 0B C, FP3 >HI C, FP3 >LO C, 0B C, FP4 >HI C, FP4 >LO C, 0B C, FP5 >HI C, FP5 >LO C, 0B C, FP6 >HI C, FP6 >LO C, 0B C, FP7 >HI C, FP7 >LO C, 0B C, FP8 >HI C, FP8 >LO C, ( PRE-MADE DLL TABLE CMOVED INTO SLOT) 0B C, FP9 >HI C, FP9 >LO C, 0B C, FP10 >HI C, FP10 >LO C, 0B C, FP11 >HI C, FP11 >LO C, 0B C, FP12 >HI C, FP12 >LO C, 0B C, FP13 >HI C, FP13 >LO C, 0B C, FP14 >HI C, FP14 >LO C, 0B C, FP15 >HI C, FP15 >LO C, 8B C, BLANK >HI C, BLANK >LO C, 8B C, SP1 >HI C, SP1 >LO C, 0B C, SP2 >HI C, SP2 >LO C, 0B C, SP3 >HI C, SP3 >LO C, 0B C, SP4 >HI C, SP4 >LO C, 0B C, SP5 >HI C, SP5 >LO C, 0B C, SP6 >HI C, SP6 >LO C, 0B C, SP7 >HI C, SP7 >LO C, ( PRE-MADE DLL TABLE CMOVED INTO SLOT) 0B C, SP8 >HI C, SP8 >LO C, 0B C, SP9 >HI C, SP9 >LO C, 0B C, SP10 >HI C, SP10 >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, TP1 >HI C, TP1 >LO C, 0B C, TP2 >HI C, TP2 >LO C, 0B C, TP3 >HI C, TP3 >LO C, 0B C, TP4 >HI C, TP4 >LO C, 0B C, TP5 >HI C, TP5 >LO C, 0B C, TP6 >HI C, TP6 >LO C, 0B C, TP7 >HI C, TP7 >LO C, 0B C, TP8 >HI C, TP8 >LO C, 0B C, TP9 >HI C, TP9 >LO C, 0B C, TP10 >HI C, TP10 >LO C, 0B C, TP11 >HI C, TP11 >LO C, ( PRE-MADE DLL TABLE CMOVED INTO SLOT) 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, 0B C, BLANK >HI C, BLANK >LO C, HEX HERE EQU ROM-TEXT-DLS ( PRE-MADE DL TABLE ) CM-BLANK >LO C, 60 C, CM-BLANK >HI C, 10 C, 14 C, 0 C, 0 C, CM-FP1 >LO C, 60 C, CM-FP1 >HI C, 10 C, 14 C, 0 C, 0 C, CM-FP2 >LO C, 60 C, CM-FP2 >HI C, 10 C, 14 C, 0 C, 0 C, CM-FP3 >LO C, 60 C, CM-FP3 >HI C, 10 C, 14 C, 0 C, 0 C, CM-FP4 >LO C, 60 C, CM-FP4 >HI C, 10 C, 14 C, 0 C, 0 C, CM-FP5 >LO C, 60 C, CM-FP5 >HI C, 10 C, 14 C, 0 C, 0 C, CM-FP6 >LO C, 60 C, CM-FP6 >HI C, 10 C, 14 C, 0 C, 0 C, CM-FP7 >LO C, 60 C, CM-FP7 >HI C, 10 C, 14 C, 0 C, 0 C, CM-FP8 >LO C, 60 C, CM-FP8 >HI C, 10 C, 14 C, 0 C, 0 C, CM-FP9 >LO C, 60 C, CM-FP9 >HI C, 10 C, 14 C, 0 C, 0 C, CM-FP10 >LO C, 60 C, CM-FP10 >HI C, 10 C, 14 C, 0 C, 0 C, CM-FP11 >LO C, 60 C, CM-FP11 >HI C, 10 C, 14 C, 0 C, 0 C, CM-FP12 >LO C, 60 C, CM-FP12 >HI C, 10 C, 14 C, 0 C, 0 C, CM-FP13 >LO C, 60 C, CM-FP13 >HI C, 10 C, 14 C, 0 C, 0 C, CM-FP14 >LO C, 60 C, CM-FP14 >HI C, 10 C, 14 C, 0 C, 0 C, ( PRE-MADE DL TABLE CMOVED INTO SLOT) CM-FP15 >LO C, 60 C, CM-FP15 >HI C, 10 C, 14 C, 0 C, 0 C, CM-SP1 >LO C, 60 C, CM-SP1 >HI C, 10 C, 14 C, 0 C, 0 C, CM-SP2 >LO C, 60 C, CM-SP2 >HI C, 10 C, 14 C, 0 C, 0 C, CM-SP3 >LO C, 60 C, CM-SP3 >HI C, 10 C, 14 C, 0 C, 0 C, CM-SP4 >LO C, 60 C, CM-SP4 >HI C, 10 C, 14 C, 0 C, 0 C, CM-SP5 >LO C, 60 C, CM-SP5 >HI C, 10 C, 14 C, 0 C, 0 C, CM-SP6 >LO C, 60 C, CM-SP6 >HI C, 10 C, 14 C, 0 C, 0 C, CM-SP7 >LO C, 60 C, CM-SP7 >HI C, 10 C, 14 C, 0 C, 0 C, CM-SP8 >LO C, 60 C, CM-SP8 >HI C, 10 C, 14 C, 0 C, 0 C, CM-SP9 >LO C, 60 C, CM-SP9 >HI C, 10 C, 14 C, 0 C, 0 C, CM-SP10 >LO C, 60 C, CM-SP10 >HI C, 10 C, 14 C, 0 C, 0 C, CM-TP1 >LO C, 60 C, CM-TP1 >HI C, 10 C, 14 C, 0 C, 0 C, CM-TP2 >LO C, 60 C, CM-TP2 >HI C, 10 C, 14 C, 0 C, 0 C, CM-TP3 >LO C, 60 C, CM-TP3 >HI C, 10 C, 14 C, 0 C, 0 C, CM-TP4 >LO C, 60 C, CM-TP4 >HI C, 10 C, 14 C, 0 C, 0 C, ( PRE-MADE DL TABLE CMOVED INTO SLOT) CM-TP5 >LO C, 60 C, CM-TP5 >HI C, 10 C, 14 C, 0 C, 0 C, CM-TP6 >LO C, 60 C, CM-TP6 >HI C, 10 C, 14 C, 0 C, 0 C, CM-TP7 >LO C, 60 C, CM-TP7 >HI C, 10 C, 14 C, 0 C, 0 C, CM-TP8 >LO C, 60 C, CM-TP8 >HI C, 10 C, 14 C, 0 C, 0 C, CM-TP9 >LO C, 60 C, CM-TP9 >HI C, 10 C, 14 C, 0 C, 0 C, CM-TP10 >LO C, 60 C, CM-TP10 >HI C, 10 C, 14 C, 0 C, 0 C, CM-TP11 >LO C, 60 C, CM-TP11 >HI C, 10 C, 14 C, 0 C, 0 C, ( BEGINS 18F0 LEN: 259 ENDS : 19F3 ) HERE EQU ROM-CHARMAPS ( PRE-MADE CHAR MAPS) ( 16:03 09/11/86 ) ," HATRICK, THE ATARI 7800 VERSION, BY JACK SANDBERG, SR. SOFTWARE ENGINEER, ibid inc., WEST HARTFORD, CT VER. 1.0 04/16/87 -- SECURITY STRING DO NOT REMOVE" ( TEXT MODE INITIALIZATION 12:49 08/05/86 ) 0 .IF D2 EQU TEXT-DLL-LEN 103 EQU TEXT-DLS-LEN 250 EQU CHARMAPS-LEN FORTH : TEXT-MODE BEGIN ?VBLANK UNTIL 60 CTRL C! ( MARIA OFF ) 00 BACKGRND C! ROM-TEXT-DLL RAM-TEXT-DLL TEXT-DLL-LEN CMOVE ROM-TEXT-DLS RAM-TEXT-DLS TEXT-DLS-LEN CMOVE ROM-CHARMAPS RAM-CHARMAPS CHARMAPS-LEN 2*CMOVE 18 DUP DPPH C! DPP-HOLD-HI C! 10 DUP DPPL C! DPP-HOLD-LO C! 4A 4A 4A P0C3 C! P0C2 C! P0C1 C! F0 CHARBASE C! BEGIN ?VBLANK UNTIL 50 CTRL C! ; .THEN ( TITLE MODE INITIALIZATION 12:49 08/05/86 ) 0 .IF : TITLE-MODE BEGIN ?VBLANK UNTIL 60 CTRL C! ( MARIA OFF ) 00 BACKGRND C! ROM-TEXT-DLL RAM-TEXT-DLL TEXT-DLL-LEN CMOVE ROM-TEXT-DLS RAM-TEXT-DLS TEXT-DLS-LEN CMOVE RAM-CHARMAPS CHARMAPS-LEN 40 FILL TITLE-DLLS 1810 ! 1810 C@ DPPL C! 1811 C@ DPPH C! 1F 18 4A P0C3 C! P0C2 C! P0C1 C! F0 CHARBASE C! BEGIN ?VBLANK UNTIL 50 CTRL C! ; .THEN ( TITLE SCREENS DISPLAY RTN 14:52 09/11/86 ) 0 .IF : TITLE TITLE-MODE BEGIN ?VBLANK UNTIL CREDIT0 CM-FP8 10 2*CMOVE BEGIN ?VBLANK 0= UNTIL 100 0 DO I 0F AND 40 OR P0C3 C! CONSOLE-CHECK 200 0 DO LOOP LOOP 4A P0C3 C! BEGIN ?VBLANK UNTIL CREDIT1A CM-FP6 10 2*CMOVE CREDIT1B CM-FP7 10 2*CMOVE CM-BLANK CM-FP8 10 CMOVE CREDIT2 CM-FP9 10 2*CMOVE CREDIT3A CM-FP11 10 2*CMOVE CREDIT3B CM-FP12 10 2*CMOVE CREDIT3C CM-FP13 10 2*CMOVE BEGIN ?VBLANK 0= UNTIL 800 0 DO CONSOLE-CHECK LOOP ; .THEN ( TITLE SCREENS DISPLAY RTN CONT 15:10 09/11/86 ) 0 .IF BEGIN ?VBLANK UNTIL CREDIT4A CM-FP8 10 2*CMOVE CREDIT4B CM-FP9 10 2*CMOVE CREDIT4C CM-FP10 10 2*CMOVE BEGIN ?VBLANK 0= UNTIL 550 0 DO CONSOLE-CHECK LOOP BEGIN ?VBLANK UNTIL CREDIT5A CM-FP8 10 2*CMOVE CREDIT5B CM-FP9 10 2*CMOVE CREDIT5C CM-FP10 10 2*CMOVE BEGIN ?VBLANK 0= UNTIL 550 0 DO CONSOLE-CHECK LOOP ; .THEN ( TEXT-MODE DEDICATED SCROLLER 12:58 08/05/86 ) 0 .IF : SCROLL-STORY TEXT-MODE 30 0 DO BEGIN ?VBLANK UNTIL 0A DPP-HOLD @ C! BEGIN ?VBLANK NOT UNTIL 175 0 DO 0 DROP LOOP CONSOLE-CHECK BEGIN ?VBLANK UNTIL 09 DPP-HOLD @ C! BEGIN ?VBLANK NOT UNTIL 175 0 DO 0 DROP LOOP CONSOLE-CHECK BEGIN ?VBLANK UNTIL 08 DPP-HOLD @ C! BEGIN ?VBLANK NOT UNTIL 175 0 DO 0 DROP LOOP CONSOLE-CHECK BEGIN ?VBLANK UNTIL 07 DPP-HOLD @ C! BEGIN ?VBLANK NOT UNTIL 175 0 DO 0 DROP LOOP CONSOLE-CHECK BEGIN ?VBLANK UNTIL 06 DPP-HOLD @ C! BEGIN ?VBLANK NOT UNTIL 175 0 DO 0 DROP LOOP CONSOLE-CHECK BEGIN ?VBLANK UNTIL 05 DPP-HOLD @ C! BEGIN ?VBLANK NOT UNTIL 175 0 DO 0 DROP LOOP CONSOLE-CHECK BEGIN ?VBLANK UNTIL 04 DPP-HOLD @ C! BEGIN ?VBLANK NOT UNTIL 175 0 DO 0 DROP LOOP CONSOLE-CHECK ( TEXT-MODE DEDICATED SCROLLER CONT'D 12:58 08/05/86 ) BEGIN ?VBLANK UNTIL 03 DPP-HOLD @ C! BEGIN ?VBLANK NOT UNTIL 175 0 DO 0 DROP LOOP CONSOLE-CHECK BEGIN ?VBLANK UNTIL 02 DPP-HOLD @ C! BEGIN ?VBLANK NOT UNTIL 175 0 DO 0 DROP LOOP CONSOLE-CHECK BEGIN ?VBLANK UNTIL 01 DPP-HOLD @ C! BEGIN ?VBLANK NOT UNTIL 175 0 DO 0 DROP LOOP CONSOLE-CHECK BEGIN ?VBLANK UNTIL 00 DPP-HOLD @ C! BEGIN ?VBLANK NOT UNTIL 175 0 DO 0 DROP LOOP CONSOLE-CHECK DPP-HOLD @ 3 + DPP-HOLD ! BEGIN ?VBLANK UNTIL DPP-HOLD-HI C@ DPPH C! DPP-HOLD-LO C@ DPPL C! BEGIN ?VBLANK NOT UNTIL LOOP 1000 0 DO CONSOLE-CHECK LOOP ; .THEN ( INCLUDE ATARI4TH -- MC FORTH NUCLEUS 00:08 05/22/86 ) ( SETUP subroutine 14:44 03/25/85 ) PROC SETUP A ASL N 1 - STA BEGIN TOS LDA N ,Y STA INX INY N 1 - CPY 0= UNTIL 0 # LDY RTS END-PROC INCLUDE F:ATARI4TH ( THE BULK OF FORTH-83 ) ( NEW-GRAPHICS RTN -VIDEO MAINTENANCE SECTION 16:17 06/03/86 ) CODE (NEW-GRAPHICS) ( DL-TABLE/IMAGE-TAB-START/ELEM-TAB-START ) COUNTER STY ( INITIALIZE TO 0) 1$: TOS LDA ELEM-TAB-HOLD STA ( REFRESH POINTERS ) TOS 1+ LDA ELEM-TAB-HOLD 1+ STA ( TO TABLES ) NOS LDA IMAGE-TAB-HOLD STA NOS 1+ LDA IMAGE-TAB-HOLD 1+ STA NOS 2+ LDA DL-TAB-HOLD STA NOS 3 + LDA DL-TAB-HOLD 1+ STA ( ***USING COUNTER TO FIND OUT WHERE ARE IN ELEMENT TABLE***) COUNTER LDA ( EACH ELEMENT TABLE ENTRY IS ) A ASL COUNTER 1+ ROL ( FOUR BYTES LONG ) A ASL COUNTER 1+ ROL CLC ( OFFSET IS ADDED TO BASE OF ELEMENT) ELEM-TAB-HOLD ADC ELEM-TAB-HOLD STA ( TABLE TO FIND ENTRY ) ELEM-TAB-HOLD 1+ LDA COUNTER 1+ ADC ELEM-TAB-HOLD 1+ STA 0 # AND COUNTER 1+ STA ( NOTE THAT COUNTER NOT SHIFTED ) ( NEW-GRAPHICS RTN -VIDEO MAINTENANCE SECTION 16:17 06/03/86 ) ( LOADING ELEM-TABLE ) XSAVE STX 0 # LDX ELEM-TAB-HOLD X) LDA ELEM-HOLD STA ELEM-HOLD BIT ( ***TEST FIRST BYTE OF ELEMENT ENTRY***) 3$ BVC 4$ JMP 3$: ( LAST) 2$ BMI ( NO ALTER) 5$ JMP 2$: ELEM-HOLD LDA 80 # EOR ELEM-TAB-HOLD X) STA ( RESET ALTER BIT) 3 # LDY ( BIT 7 IS SET = NEGATIVE ) BEGIN ( ***FILL ELEM-HOLD FROM ELEMENT ENTRY***) ELEM-TAB-HOLD )Y LDA ELEM-HOLD ,Y STA ( FILLS BACKWARDS ) DEY 0= UNTIL ( NEW-GRAPHICS RTN -VIDEO MAINTENANCE SECTION 16:17 06/03/86 ) ELEM-HOLD 1+ LDA ( ***FIND WHERE IMAGE-ENTRY IS***) 0 # LDY N STY A ASL N ROL ( EACH IMAGE-TABLE-ELEMENT IS) A ASL N ROL ( FOUR BYTES LONG ) CLC IMAGE-TAB-HOLD ADC IMAGE-TAB-HOLD STA IMAGE-TAB-HOLD 1+ LDA ( ADDING IN THIS OFFSET TO BASE) N ADC ( IMAGE-TABLE ADDR TELLS WHERE TO ) IMAGE-TAB-HOLD 1+ STA ( PULL 4 IMAGE-ENTRY BYTES FROM) 3 # LDY BEGIN ( ***FILL IMAGE-HOLD WITH ENTRY***) IMAGE-TAB-HOLD )Y LDA ( PULLING BYTES INTO IMAGE) IMAGE-HOLD ,Y STA ( HOLD FROM IMAGE-TABLE) DEY 0< ( FILLS BACKWARDS ) UNTIL ( NEW-GRAPHICS RTN -VIDEO MAINTENANCE SECTION 16:17 06/03/86 ) ELEM-HOLD 3 + LDA ( ***FIND START-ZONE AND ADJUSTMENT***) PHA ( PUSH Y ) 7 # AND 0= NOT IF IMAGE-HOLD 3 + INC THEN ( #ZONES 1+) ADJ-HOLD STA ( Y-REMAINDER IN ADDITIONAL RASTERS) PLA A LSR A LSR A LSR ST-ZONE STA ( STARTING ZONE VIA Y /8) CLC IMAGE-HOLD 3 + ADC ( ADJ ZONES # + START ZONE# ) SEC ( SUM CANNOT BE OVER 25, IF THEN SBC DIFF FROM #ZONES) 19 # SBC 0< NOT IF N STA IMAGE-HOLD 3 + LDA SEC N SBC IMAGE-HOLD 3 + STA THEN ADJ-HOLD LDA ( ***ADJUST IMAGE BASE ADDR***) CLC IMAGE-HOLD 2+ ADC ( ADD STARTING ADDR OF IMAGE DOWN-) IMAGE-HOLD 2+ STA ( WARDS THRU MEMORY SINCE UPSIDEDN) ( NEW-GRAPHICS RTN -VIDEO MAINTENANCE SECTION 16:17 06/03/86 ) 0 # LDY N STY ( ***FIND START ADDR FOR DL-TABLE***) ST-ZONE ASL N ROL ST-ZONE LDA N 2+ STA ( STORE 2*) N LDA N 1+ STA ST-ZONE ASL N ROL ST-ZONE ASL N ROL ( 32 * =64*) ST-ZONE ASL N ROL ST-ZONE ASL N ROL ( MULTIPLY ) ST-ZONE ASL N ROL SEC ST-ZONE LDA N 2+ SBC ST-ZONE STA N LDA N 1+ SBC N STA ( 62*=64*-2*) CLC ST-ZONE LDA DL-TAB-HOLD ADC DL-TAB-HOLD STA DL-TAB-HOLD 1+ LDA N ADC DL-TAB-HOLD 1+ STA ( ADD=>ZONE) ELEM-HOLD LDA 0F # AND ( PRIORITY # ) A ASL A ASL ( ELEM# * 4 ) CLC DL-TAB-HOLD ADC DL-TAB-HOLD STA CS IF DL-TAB-HOLD 1+ INC THEN ( DL-ADDR=ST-ZONE*32 + ELEM#*4) ( NEW-GRAPHICS RTN -VIDEO MAINTENANCE SECTION 16:17 06/03/86 ) ( BASE OF VID-STACK ) 7C # LDX ( STATIC STACK VS DYNAM) IMAGE-HOLD 3 + LDA PHA TAY ( #ZONES/ITEMS FOR INT RTN) ELEM-HOLD 2 + LDA IMAGE-HOLD 3 + STA ( HORIZ EMPLACED EXACTLY AS A DL IS) BEGIN DEX DEX DEX DEX DEX DEX DL-TAB-HOLD LDA 0 ,X STA DL-TAB-HOLD 1+ LDA 1 ,X STA IMAGE-HOLD LDA 2 ,X STA IMAGE-HOLD 1+ LDA 3 ,X STA IMAGE-HOLD 2+ LDA 4 ,X STA IMAGE-HOLD 3 + LDA 5 ,X STA IMAGE-HOLD 2+ LDA SEC 8 # SBC IMAGE-HOLD 2+ STA 3E # LDA CLC DL-TAB-HOLD ADC DL-TAB-HOLD STA 0 # LDA DL-TAB-HOLD 1+ ADC DL-TAB-HOLD 1+ STA DEY 0= UNTIL ( #ZONES CONTINUOUSLY DEC'D) START-VID-STACK STX PLA INT-FLAG STA ( STORING LOCATION OF USERSTACK TOP AND #TIEMS ON IT ) ( NEW-GRAPHICS RTN -VIDEO MAINTENANCE SECTION 16:17 06/03/86 ) 5$: COUNTER INC XSAVE LDX ' VIDEO-UPDATE >BODY JSR 1$ JMP 4$: XSAVE LDX 0 # LDY COUNTER STY INX INX INX INX INX INX RTS END-CODE CODE NEW-GRAPHICS ( DL-TABLE/IMAGE-TABLE/ELEMENT-TABLE) ' (NEW-GRAPHICS) >BODY JSR NEXT JMP END-CODE ( NEW-GRAPHICS RTN -VIDEO MAINTENANCE SECTION 16:17 06/03/86 ) CODE VIDEO-UPDATE XSAVE STX START-VID-STACK LDX INT-FLAG LDY 0= NOT IF BEGIN ( b3-2 b1-0 DL-addr -- ) 2 ,X LDA 0 X) STA 0 ,X INC 0= IF 1 ,X INC THEN 3 ,X LDA 0 X) STA 0 ,X INC 0= IF 1 ,X INC THEN 4 ,X LDA 0 X) STA 0 ,X INC 0= IF 1 ,X INC THEN 5 ,X LDA 0 X) STA 0 ,X INC 0= IF 1 ,X INC THEN INX INX INX INX INX INX START-VID-STACK STX INT-FLAG DEC 0= UNTIL THEN XSAVE LDX RTS END-CODE ( VIDEO INTERRUPT RTN - VIDEO MAINTENANCE SEC. 10:00 07/03/86 ) PROC VIDEO-INT-RTN PHA TXA PHA TYA PHA DLI# LDA 1 # CMP 0= IF BG-SCOREAREA LDA BACKGRND STA ( SCORE AREA ) SND?-FLAG LDA 0= IF ' UPDATE-SOUND >BODY JSR THEN SYSTIMER INC 0= IF SYSTIMER 1+ INC THEN 2 # LDA DLI# STA POLL2 JMP THEN 2 # CMP 0= IF DLI# ADC DLI# ADC DLI# ADC NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP BG-TOP-ICE LDA BACKGRND STA ( TOP ICE ) TIMER INC 0 # LDA DLI# STA POLL2 JMP THEN ( IRQ EXTENDED -- JJT 16:05 08/18/86 ) 0 # CMP 0= IF 03 # LDY BEGIN DEY 0= UNTIL NOP NOP BG-SCOREAREA LDA BACKGRND STA ( BOTTOM ICE) READ-JOYS JSR READ-BUTTONS JSR 1 # LDA DLI# STA ( CONSOLE-CHECK JSR ) POLL2 JMP THEN L: POLL2 PLA TAY PLA TAX PLA RTI END-PROC ( VBLANK-WAIT ?VBLANK - VIDEO MAINTENANCE 15:56 06/23/86 ) PROC VBLANK-WAIT ( FOREGROUND WAIT... .AY) MSTAT BIT ( VBLANK NOW?) 0< IF BEGIN MSTAT BIT 0< NOT UNTIL THEN ( WAIT FOR MARIA) BEGIN MSTAT BIT 0< UNTIL ( THEN WAIT FOR VBLANK ) RTS END-PROC ( here, one is but a few cycles into VBLANK) CODE ?VBLANK ( --F TRUE if VBLANK ) MSTAT BIT 0< IF DEY THEN DEX DEX TOS STY TOS 1+ STY NEXT JMP END-CODE ( DL HEADER LIST INIT - VIDEO MAINTENANCE 1/2 15:14 06/10/86 ) CODE (DL-INIT) ( DL ADDR/ # DL'S --- ) TOS LDY INX INX ( PULL COUNT AND GET RID OF TOS) BEGIN 00 # LDA TOS X) STA TOS INC ( BANG ADDR LO ) 0= IF TOS 1+ INC THEN ( NEXT BYTE ) 1F # LDA TOS X) STA TOS INC ( BANG PALETTE0 LENGTH=1) 0= IF TOS 1+ INC THEN ( NEXT BYTE ) C0 # LDA TOS X) STA TOS INC ( BANG ADDR HI ) 0= IF TOS 1+ INC THEN ( NEXT BYTE ) AA # LDA TOS X) STA TOS INC ( BANG X-COORD=OFFSCREEN) 0= IF TOS 1+ INC THEN ( NEXT BYTE & CHECK IF COUNT=0) DEY 0= UNTIL INX INX RTS END-CODE ( GET RID OF TOS ) ( DL HEADER LIST INIT - VIDEO MAINTENANCE 2/2 15:14 06/10/86 ) CODE DL-INIT ( STARTING LINE ADDR/#LINES/#DL'S PER LINE ) BEGIN ( START BY TRANSFERRING STARTLINE ADDR TO NEWTOS) NOS 2+ LDA NOS 3 + LDY DEX DEX TOS STA TOS 1+ STY NOS LDY DEX DEX TOS STY 0 # LDY TOS 1+ STY ( TOP-OFF W/ ) ' (DL-INIT) >BODY JSR ( COUNTER AND RUN WITH IT ) CLC NOS 2+ LDA 3E # ADC NOS 2+ STA ( ADD X3E TO GET NEXT ) NOS 3 + LDA 0 # ADC NOS 3 + STA ( NEW STARTLINE ADDR ) NOS LDY DEY NOS STY ( DEC AND CHECK #LINES TO DO COUNTER) 0= UNTIL INX INX INX INX INX INX NEXT JMP END-CODE ( MISC VIDEO MANTENANCE WORDS 15:56 06/23/86 ) PROC RTIL RTI END-PROC ( IRQ vector points here...) CODE BREAK BRK END-CODE ( for EMULATOR debugging ) ( JOYSTICKS/BUTTONS MAINTENANCE RTNS 16:14 06/23/86 ) ( 08 EQU IPP0 ( PADDLE RIGHT FIRE BUTTON JOY1 = 88) ( 09 EQU IPP1 ( PADDLE LEFT FIRE BUTTON JOY1 = 89) ( 0A EQU IPP2 ( PADDLE RIGHT FIRE BUTTON JOY2 = 8A) ( 0B EQU IPP3 ( PADDLE LEFT FIRE BUTTON JOY2 = 8B) PROC READ-BUTTONS ( -- .AY) 0 # LDY IPP0 LDA IPP1 ORA 0< IF DEY THEN FB0 STY ( RIGHT JOY1) 0 # LDY IPP2 LDA IPP3 ORA 0< IF DEY THEN FB1 STY ( LEFT JOY1) RTS END-PROC CODE NEXT-JOYS ( -- ) READ-JOYS JSR READ-BUTTONS JSR NEXT JMP END-CODE ( JOYSTICKS/BUTTONS MAINTENANCE RTNS 17:12 11/25/86 ) ( based on origin at upleft, X and Y can =01,00,FF =1-byte -1) PROC READ-JOYS ( -- .A) 0 # LDA DX0 STA DY0 STA DX1 STA DY1 STA ( init mem to 0s) SWCHA LDA ( =280=directional input RLDURLDU) A LSR CS NOT IF DY1 DEC THEN ( UP=-1 ) A LSR CS NOT IF DY1 INC THEN ( DOWN=1 ) A LSR CS NOT IF DX1 DEC THEN ( LEFT=-1) A LSR CS NOT IF DX1 INC THEN ( RIGHT=1 ) A LSR CS NOT IF DY0 DEC THEN ( UP=-1 ) A LSR CS NOT IF DY0 INC THEN ( DOWN=1 ) A LSR CS NOT IF DX0 DEC THEN ( LEFT=-1) A LSR CS NOT IF DX0 INC THEN ( RIGHT=1 ) RTS END-PROC ( CONSOLE SWITCH MAINTENANCE RTNS 16:14 06/23/86 ) CODE ?RESET ( --F) 1 # LDA CONSOLE AND 0= NOT IF DEY THEN DEX DEX TOS STY TOS 1+ STY NEXT JMP END-CODE CODE ?SELECT ( --F) 2 # LDA CONSOLE AND 0= NOT IF DEY THEN DEX DEX TOS STY TOS 1+ STY NEXT JMP END-CODE CODE ?PAUSE ( --F) 8 # LDA CONSOLE AND 0= NOT IF DEY THEN DEX DEX TOS STY TOS 1+ STY NEXT JMP END-CODE CODE ?DIFFL ( --F) CONSOLE BIT 1$ BVC DEY 1$: DEX DEX TOS STY TOS 1+ STY NEXT JMP END-CODE CODE ?DIFFR ( --F) CONSOLE BIT 0< IF DEY THEN DEX DEX TOS STY TOS 1+ STY NEXT JMP END-CODE ( CONSOLE SWITCH MAINTENANCE RTNS 16:14 06/23/86 ) CODE RESET-RTN VBLANK-WAIT JSR SEI 60 # LDA CTRL STA RESET JMP END-CODE : GETRAW SWCHB C@ FF XOR CONSOLE C! ; ( CONSOLE CHECK runs in NMI during game... 01:39 08/27/87 ) 0 .IF CODE RESET-RTN FFFC MEM ) JMP END-CODE : ?RESET-RTN ?RESET IF ['] FOREGRND-TASK EXECUTE ( RESET-RTN ) THEN ; PROC CONSOLE-CHECK SWCHB LDA FF # EOR CONSOLE STA 8 # LDA CONSOLE AND 0= NOT IF DEY THEN .THEN ( Atari Sound INIT-SOUND Routine 13:53 10/01/86 ) HEX CODE INIT-SOUND ( uses Y = 0 ) AUDV0 STY ( Y=00 ) ( Turn Off Vol ) AUDV1 STY ( Turn Off Vol ) ^CUR-WORKAREA 1+ STY ( Hi Byte Zero Pg Addr) DEY ( Y=FF ) WORKAREA0 STY ( Turn Off Workareas ) WORKAREA1 STY NEXT JMP END-CODE ( Atari Sound NEXT-NOTE Routine #1 16:48 12/05/86 ) HEX CODE NEXT-NOTE ( uses A, X and Y ) ( Needs X = CUR-VOICE# ) ( Needs Y = ^CUR-WORKAREA ) ^CUR-WORKAREA STY ( For filling Workarea ) W-NXT-NOTE ,Y LDA ^CUR-NOTE STA ( Move 1st note addr to ) W-NXT-NOTE 1+ ,Y LDA ^CUR-NOTE 1+ STA 0 # LDY ( 1st byte Next note = Dur ) ^CUR-NOTE )Y LDA ( Atari Sound NEXT-NOTE Routine #2 16:48 12/05/86 ) 0= IF AUDV0 ,X STA ( Sound over,Turn off VOL ) FF # LDA ( and Turn off Workarea ) ^CUR-WORKAREA )Y STA ( Y=0 so use for 1st byte = Duration ) RTS ELSE ( Next Note Valid ) ^CUR-WORKAREA )Y STA ( Y=0 so use for 1st byte = Duration ) INY ( Y = 1 = FREQ ) ^CUR-NOTE )Y LDA ( Move 2nd byte to ) AUDF0 ,X STA ( FREQ ) PHA ( Save Freq ) INY ( Y = 2 = VOL ) ^CUR-NOTE )Y LDA ( Move 3rd byte to ) AUDV0 ,X STA ( VOL ) PHA ( Save Vol ) ( Atari Sound NEXT-NOTE Routine #3 16:48 12/05/86 ) INY ( Y = 3 = WAVE ) ^CUR-NOTE )Y LDA ( Move 4th byte to ) AUDC0 ,X STA ( WAVE ) ^CUR-WORKAREA LDX ( X = CUR-WKAREA changed to offset ) ^CUR-NOTE LDA ( Calc next note addr and ) CLC ( move to Workarea ) NOTE-SIZE # ADC ( ^nxt-note hold ) W-NXT-NOTE ,X STA ( X = CUR-WKAREA as offset ) ^CUR-NOTE 1+ LDA 0 # ADC ( include carry flag ) W-NXT-NOTE 1+ ,X STA PLA ( Take care of saved Vol ) VOL ,X STA PLA ( Take care of saved Freq ) FREQ ,X STA ( Atari Sound NEXT-NOTE Routine #4 16:48 12/05/86 ) INY ( Y = 4 = N-FSWP ) ^CUR-NOTE )Y LDA ( Move 5th byte to FTMR + FCHG) PHA 0F # AND ( Low nibble = degree of chg ) 8 # CMP CS IF FF # EOR CLC 1 # ADC ( 4 Bit -> 8 Bit sign math ) THEN W-FCHG ,X STA PLA A LSR A LSR A LSR A LSR ( Move hi to low ) W-FTMR ,X STA ( Load timer count ) W-FRLD ,X STA ( Save as reload count ) ( Atari Sound NEXT-NOTE Routine #5 16:48 12/05/86 ) INY ( Y = 5 = N-VSWP ) ^CUR-NOTE )Y LDA ( Move 6th byte to VTMR + VCHG) PHA 0F # AND ( Low nibble = degree of chg ) 8 # CMP CS IF FF # EOR CLC 1 # ADC ( 4 Bit -> 8 Bit sign math ) THEN W-VCHG ,X STA PLA A LSR A LSR A LSR A LSR ( Move hi nibble to low ) W-VTMR ,X STA ( Load timer and reload count ) W-VRLD ,X STA THEN RTS END-CODE ( Atari Sound START-SOUND Routine #1 16:48 12/05/86 ) HEX PROC (START-SOUND) ( Sound # in A, uses A and Y ) A ASL ( * 2 for offset and clear carry ) TAY SOUND-LIST ,Y LDA ( Save addr at table + offset ) ^CUR-NOTE STA ( in ^CUR-NOTE temporarily ) SOUND-LIST 1+ ,Y LDA ^CUR-NOTE 1+ STA 0 # LDY ^CUR-NOTE )Y LDA ( 1st byte of sound = Voice# ) 0= IF WORKAREA0 # LDY ELSE WORKAREA1 # LDY THEN ( Save proper Workarea in Y ) ( Atari Sound START-SOUND Routine #2 16:48 12/05/86 ) FF # LDA ( Turn Off Workarea to Change ) DUR ,Y STA ( Y = Current workarea ) ^CUR-NOTE LDA ( Sound addr 1+ = 1st Note ) CLC 1 # ADC ( Move 1st note addr to ) W-NXT-NOTE ,Y STA ( Workarea ^Next Note ) ^CUR-NOTE 1+ LDA 0 # ADC ( Include carry flag ) W-NXT-NOTE 1+ ,Y STA 1 # LDA ( Trigger NEXT-NOTE for next ) DUR ,Y STA ( interrupt w/dur = 1 ) RTS END-CODE ( 14:26 08/29/87 ) CODE START-SOUND ( AREG HAS SOUND ) # 13 CMP CS NOT IF ( < ) TAY WORKAREA0 LDA WORKAREA1 AND 0FF # CMP 0= NOT IF ( WORKAREAS ON? ) TYA CUR-SND CMP CS NOT IF ( LOWER SOUND ) CUR-SND STA (START-SOUND) JMP ELSE RTS THEN ELSE TYA CUR-SND STA (START-SOUND) JMP THEN ELSE CUR-SND STA (START-SOUND) JMP THEN END-CODE ( Atari Sound UPDATE-F/V Routine #1 16:48 12/05/86 ) CODE UPDATE-F/V ( Needs X = CUR-VOICE#, Y = ^CUR-WORKAREA ) W-FTMR ,Y LDA ( Y = Current workarea ) SEC 1 # SBC ( Decrement Duration ) 0< IF W-FCHG ,Y LDA ( Y = Current workarea ) CLC FREQ ,Y ADC ( Y = Current workarea ) 1F # AND ( Maintain 5 bits Max ) AUDF0 ,X STA ( X = VOICE# ) FREQ ,Y STA ( Y = Current workarea ) W-FRLD ,Y LDA ( Reload Timer ) THEN W-FTMR ,Y STA ( Y = Current workarea ) ( Atari Sound UPDATE-F/V Routine #1 16:48 12/05/86 ) W-VTMR ,Y LDA ( Y = Current workarea ) SEC 1 # SBC ( Decrement Duration ) 0< IF VOL ,Y LDA ( Y = Current workarea ) CLC W-VCHG ,Y ADC ( Y = Current workarea ) 0F # AND ( Volume = 4 Bits Max ) AUDV0 ,X STA ( X = VOICE# ) VOL ,Y STA ( Y = Current workarea ) W-VRLD ,Y LDA ( Reload Timer ) THEN W-VTMR ,Y STA ( Y = Current workarea ) RTS END-CODE ( Atari Sound Interrupt Routine #1 16:48 12/05/86 ) CODE UPDATE-SOUND ( uses A, X and Y ) WORKAREA0 LDA ( Get 1st Byte of Workarea0 ) FF # CMP 0= NOT ( Workarea inactive? ) IF V0 # LDX ( Setup proper Voice# in X ) WORKAREA0 # LDY ( Setup proper Workarea in Y ) SEC 1 # SBC ( Decrement Duration ) 0= IF ' NEXT-NOTE >BODY JSR ( Get the next note ) ELSE WORKAREA0 STA ( update 1st Byte of Workarea0 ) ' UPDATE-F/V >BODY JSR ( update freq and vol ) THEN THEN ( Atari Sound Interrupt Routine #2 16:48 12/05/86 ) WORKAREA1 LDA ( Get 1st Byte of Workarea1 ) FF # CMP 0= NOT ( Workarea inactive? ) IF V1 # LDX ( Setup proper Voice# in X ) WORKAREA1 # LDY ( Setup proper Workarea in Y ) SEC 1 # SBC ( Decrement Duration ) 0= IF ' NEXT-NOTE >BODY JMP ( No need to come back ) ELSE WORKAREA1 STA ( update 1st Byte of Workarea1 ) ' UPDATE-F/V >BODY JMP ( update freq and vol ) THEN THEN RTS END-CODE HERE EQU SOUND-LIST ( Hattrick Sound LIST [L-]: 00 PMA 13:58 05/07/87 ) ( SOUND-LIST ) .NOLIST -HEADERS HEX T-SERVE , 00 EQU L-SERVE T-GOAL , 01 EQU L-GOAL T-WHACK , 02 EQU L-WHACK T-PICKUP , 03 EQU L-PICKUP T-BOUNCE , 04 EQU L-BOUNCE T-SAVE , 05 EQU L-SAVE T-CHEER , 06 EQU L-CHEER T-PL/PLYR , 07 EQU L-PL/PLYR T-PL/EDGE , 08 EQU L-PL/EDGE T-TIMER , 09 EQU L-TIMER T-BUGLE , 0A EQU L-BUGLE T-UPWHIS , 0B EQU L-UPWHIS ( Hattrick Sound LIST [L-]: 01 PMA 13:57 04/07/87 ) T-HIKAZOO , 0C EQU L-HIKAZOO T-MDKAZOO , 0D EQU L-MDKAZOO T-LOKAZOO , 0E EQU L-LOKAZOO T-SKRITCH , 0F EQU L-SKRITCH T-RUSTLE , 10 EQU L-RUSTLE T-HIWOLF , 11 EQU L-HIWOLF T-LOWOLF , 12 EQU L-LOWOLF ( Hattrick Sound LIST [L-]: 01 PMA 13:57 04/07/87 ) T-SOPFAN , 13 EQU L-SOPFAN T-ALTFAN , 14 EQU L-ALTFAN T-TOPZAM , 15 EQU L-TOPZAM T-BOTZAM , 16 EQU L-BOTZAM T-TOPBACH , 17 EQU L-TOPBACH T-BOTBACH , 18 EQU L-BOTBACH T-0ENDG , 19 EQU L-0ENDG T-1ENDG , 1A EQU L-1ENDG T-TOPTURK , 1B EQU L-TOPTURK T-BOTTURK , 1C EQU L-BOTTURK T-0OVERTM , 1D EQU L-0OVERTM T-1OVERTM , 1E EQU L-1OVERTM ( Random number generator, by J E Rickenbacker 08/23/82 ) ( Given an argument, returns a pseudo-random number between ) ( 0 and that argument. The pseudo-random sequence can be ) ( altered by changing the seed. ) FORTH DEFINITIONS DECIMAL VARIABLE SEED : (RAND) SEED @ 259 * 3 + 32767 AND DUP SEED ! ; ( n1 --- n2 ) ( return a pseudo-random number in the range 0 <= n2 < n1 ) : RANDOM (RAND) 32767 */ ; HEX ( Hattrick Sound CODES [-SND]: 00 PMA 13:58 05/07/87 ) CODE RUSTLE-SND L-RUSTLE # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE CODE CHEER-SND L-CHEER # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE CODE HIWOLF-SND L-HIWOLF # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE CODE LOWOLF-SND L-LOWOLF # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE CODE UPWHIS-SND L-UPWHIS # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE CODE HIKAZOO-SND L-HIKAZOO # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE CODE MDKAZOO-SND L-MDKAZOO # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE ( Hattrick Sound CODES [-SND]: 01 PMA 13:57 04/07/87 ) CODE LOKAZOO-SND L-LOKAZOO # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE CODE BUGLE-SND L-BUGLE # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE CODE SERVE-SND L-SERVE # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE CODE BOUNCE-SND L-BOUNCE # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE CODE PL/EDGE-SND L-PL/EDGE # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE CODE PL/PLYR-SND L-PL/PLYR # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE CODE PICKUP-SND L-PICKUP # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE ( Hattrick Sound CODES [-SND]: 02 PMA 13:57 04/07/87 ) CODE WHACK-SND L-WHACK # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE CODE GOAL-SND L-GOAL # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE CODE SAVE-SND L-SAVE # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE CODE SKRITCH-SND L-SKRITCH # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE CODE TIMER-SND L-TIMER # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE CODE OVERTIME-SND L-0OVERTM # LDA ' START-SOUND >BODY JSR L-1OVERTM # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE ( Hattrick Sound CODES [-SND]: 03 PMA 13:58 05/07/87 ) CODE ENDGAME-SND L-0ENDG # LDA ' START-SOUND >BODY JSR L-1ENDG # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE CODE FANFARE-SND L-SOPFAN # LDA ' START-SOUND >BODY JSR L-ALTFAN # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE CODE ZAMBONI-SND L-TOPZAM # LDA ' START-SOUND >BODY JSR L-BOTZAM # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE CODE BACH-SND L-TOPBACH # LDA ' START-SOUND >BODY JSR L-BOTBACH # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE CODE TURK-SND L-TOPTURK # LDA ' START-SOUND >BODY JSR L-BOTTURK # LDA ' START-SOUND >BODY JSR NEXT JMP END-CODE ( Hattrick Sound CODES [-SND]: 04 PMA 13:58 05/07/87 ) VARIABLE SND-CTR : BEGIN-SNDS 0 SND-CTR ! BEGIN SND-CTR @ DUP CASE 0000 OF FANFARE-SND ENDOF 0B00 OF SERVE-SND ENDOF 0C00 OF CHEER-SND ENDOF 1000 OF UPWHIS-SND ENDOF 1180 OF HIWOLF-SND ENDOF 1480 OF LOWOLF-SND ENDOF ( 1680 OF QUIET-SNDS ENDOF ) ENDCASE 1 SND-CTR +! 1680 = UNTIL ; : END-SNDS 0 SND-CTR ! BEGIN SND-CTR @ DUP CASE 0000 OF ENDGAME-SND ENDOF 0600 OF CHEER-SND ENDOF 0800 OF UPWHIS-SND ENDOF 0980 OF HIWOLF-SND ENDOF 0C80 OF LOWOLF-SND ENDOF 0E80 OF TURK-SND ENDOF ENDCASE 1 SND-CTR +! 0E80 = UNTIL ; ( Hattrick Sound CODES [-SND]: 05 PMA 13:58 05/07/87 ) : ??-SND 4 RANDOM CASE 0 OF LOWOLF-SND 1D00 ENDOF 1 OF MDKAZOO-SND 2A00 ENDOF 2 OF UPWHIS-SND 0780 ENDOF 3 OF LOKAZOO-SND 3A00 ENDOF ENDCASE 0 DO LOOP ; : !!-SND 6 RANDOM CASE 0 OF BUGLE-SND 5C80 ENDOF 1 OF HIWOLF-SND 2500 ENDOF 2 OF HIKAZOO-SND 3900 ENDOF 3 OF LOWOLF-SND 1D00 ENDOF 4 OF LOKAZOO-SND 3A00 ENDOF 5 OF UPWHIS-SND 0780 ENDOF ENDCASE 0 DO LOOP ; ( Hattrick Sound CODES [-SND]: 06 PMA 13:58 05/07/87 ) : QUIET-SNDS BEGIN ??-SND FFF0 RANDOM 0 DO LOOP AGAIN ; : SERVE-SNDS SERVE-SND 4000 0 DO LOOP QUIET-SNDS ; : WHACK-SNDS ( interrupt pickup sequence & INIT-SOUND ) WHACK-SND 9000 0 DO LOOP QUIET-SNDS ; : PICKUP-SNDS ( interrupt whack sequence & INIT-SOUND ) PICKUP-SND 5000 0 DO LOOP BEGIN !!-SND 6000 RANDOM 0 DO LOOP AGAIN ; HERE EQU T-DELAY V0 C, 10 C, 00 C, 00 C, 0 C, 00 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 0 PMA 11:44 04/15/87 ) HERE EQU T-RUSTLE V0 C, FF C, 02 C, 03 C, 8 C, 00 C, 00 C, 00 C, HERE EQU T-CHEER V0 C, FF C, 02 C, 06 C, 8 C, 00 C, 00 C, 00 C, HERE EQU T-HIWOLF V0 C, 01 C, 0F C, 09 C, 4 C, 00 C, 00 C, 01 C, 0E C, 0A C, 4 C, 00 C, 00 C, 01 C, 0D C, 0B C, 4 C, 00 C, 00 C, 01 C, 0C C, 0C C, 4 C, 00 C, 00 C, 01 C, 0B C, 0D C, 4 C, 00 C, 00 C, 01 C, 0A C, 0E C, 4 C, 00 C, 00 C, 02 C, 09 C, 0F C, 4 C, 00 C, 00 C, 03 C, 00 C, 00 C, 4 C, 00 C, 00 C, 01 C, 10 C, 08 C, 4 C, 00 C, 00 C, 01 C, 0F C, 08 C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 1 PMA 11:44 04/15/87 ) 01 C, 0E C, 0A C, 4 C, 00 C, 00 C, 01 C, 0D C, 0B C, 4 C, 00 C, 00 C, 01 C, 0C C, 0C C, 4 C, 00 C, 00 C, 01 C, 0B C, 0D C, 4 C, 00 C, 00 C, 01 C, 0A C, 0E C, 4 C, 00 C, 00 C, 02 C, 09 C, 0F C, 4 C, 00 C, 00 C, 01 C, 0A C, 0E C, 4 C, 00 C, 00 C, 01 C, 0B C, 0D C, 4 C, 00 C, 00 C, 01 C, 0C C, 0C C, 4 C, 00 C, 00 C, 01 C, 0D C, 0B C, 4 C, 00 C, 00 C, 01 C, 0E C, 0A C, 4 C, 00 C, 00 C, 01 C, 0F C, 09 C, 4 C, 00 C, 00 C, 01 C, 10 C, 09 C, 4 C, 00 C, 00 C, 01 C, 11 C, 09 C, 4 C, 00 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 2 PMA 13:58 05/07/87 ) HERE EQU T-LOWOLF V0 C, 01 C, 14 C, 05 C, 5 C, 00 C, 00 C, 01 C, 13 C, 06 C, 5 C, 00 C, 00 C, 01 C, 12 C, 07 C, 5 C, 00 C, 00 C, 01 C, 11 C, 08 C, 5 C, 00 C, 00 C, 01 C, 10 C, 09 C, 5 C, 00 C, 00 C, 02 C, 0F C, 0A C, 5 C, 00 C, 00 C, 02 C, 00 C, 00 C, 5 C, 00 C, 00 C, 01 C, 14 C, 05 C, 5 C, 00 C, 00 C, 01 C, 13 C, 06 C, 5 C, 00 C, 00 C, 01 C, 12 C, 07 C, 5 C, 00 C, 00 C, 01 C, 11 C, 08 C, 5 C, 00 C, 00 C, 01 C, 10 C, 09 C, 5 C, 00 C, 00 C, 02 C, 0F C, 0A C, 5 C, 00 C, 00 C, 01 C, 10 C, 09 C, 5 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 3 PMA 13:58 05/07/87 ) 01 C, 11 C, 08 C, 5 C, 00 C, 00 C, 01 C, 12 C, 07 C, 5 C, 00 C, 00 C, 01 C, 13 C, 06 C, 5 C, 00 C, 00 C, 01 C, 14 C, 05 C, 5 C, 00 C, 00 C, 01 C, 15 C, 04 C, 5 C, 00 C, 00 C, 01 C, 16 C, 03 C, 5 C, 00 C, 00 C, 00 C, HERE EQU T-UPWHIS V0 C, 01 C, 0E C, 03 C, 5 C, 00 C, 00 C, 01 C, 0D C, 04 C, 5 C, 00 C, 00 C, 01 C, 0C C, 05 C, 5 C, 00 C, 00 C, 01 C, 0B C, 06 C, 5 C, 00 C, 00 C, 01 C, 0A C, 07 C, 5 C, 00 C, 00 C, 02 C, 09 C, 09 C, 5 C, 00 C, 00 C, 00 C, HERE EQU T-HIKAZOO V0 C, 35 C, 00 C, 0A C, F C, 00 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 4 PMA 13:58 05/07/87 ) HERE EQU T-MDKAZOO V0 C, 20 C, 06 C, 06 C, 1 C, 00 C, 00 C, 00 C, HERE EQU T-LOKAZOO V0 C, 30 C, 03 C, 08 C, 7 C, 00 C, 00 C, 00 C, HERE EQU T-BUGLE V0 C, 01 C, 0E C, 0F C, C C, 00 C, 00 C, 01 C, 0D C, 0F C, C C, 00 C, 00 C, 01 C, 0E C, 0F C, C C, 00 C, 00 C, 01 C, 0D C, 0F C, C C, 00 C, 00 C, 01 C, 0E C, 0F C, C C, 00 C, 00 C, 01 C, 0D C, 0F C, C C, 00 C, 00 C, 03 C, 00 C, 00 C, C C, 00 C, 00 C, 01 C, 0B C, 0F C, C C, 00 C, 00 C, 01 C, 0A C, 0F C, C C, 00 C, 00 C, 01 C, 0B C, 0F C, C C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 5 PMA 13:58 05/07/87 ) 01 C, 0A C, 0F C, C C, 00 C, 00 C, 01 C, 0B C, 0F C, C C, 00 C, 00 C, 01 C, 0A C, 0F C, C C, 00 C, 00 C, 03 C, 00 C, 00 C, C C, 00 C, 00 C, 01 C, 1B C, 0F C, 4 C, 00 C, 00 C, 01 C, 1A C, 0F C, 4 C, 00 C, 00 C, 01 C, 1B C, 0F C, 4 C, 00 C, 00 C, 01 C, 1A C, 0F C, 4 C, 00 C, 00 C, 01 C, 1B C, 0F C, 4 C, 00 C, 00 C, 01 C, 1A C, 0F C, 4 C, 00 C, 00 C, 03 C, 00 C, 00 C, 4 C, 00 C, 00 C, 01 C, 17 C, 0F C, 4 C, 00 C, 00 C, 01 C, 16 C, 0F C, 4 C, 00 C, 00 C, 01 C, 17 C, 0F C, 4 C, 00 C, 00 C, 01 C, 16 C, 0F C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 6 PMA 13:58 05/07/87 ) 01 C, 17 C, 0F C, 4 C, 00 C, 00 C, 01 C, 16 C, 0F C, 4 C, 00 C, 00 C, 03 C, 00 C, 00 C, 4 C, 00 C, 00 C, 08 C, 00 C, 00 C, 4 C, 00 C, 00 C, 01 C, 1B C, 0F C, 4 C, 00 C, 00 C, 01 C, 1A C, 0F C, 4 C, 00 C, 00 C, 01 C, 1B C, 0F C, 4 C, 00 C, 00 C, 01 C, 1A C, 0F C, 4 C, 00 C, 00 C, 01 C, 1B C, 0F C, 4 C, 00 C, 00 C, 01 C, 1A C, 0F C, 4 C, 00 C, 00 C, 03 C, 00 C, 00 C, 4 C, 00 C, 00 C, 01 C, 17 C, 0F C, 4 C, 00 C, 00 C, 01 C, 16 C, 0F C, 4 C, 00 C, 00 C, 01 C, 17 C, 0F C, 4 C, 00 C, 00 C, 01 C, 16 C, 0F C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 7 PMA 13:58 05/07/87 ) 01 C, 17 C, 0F C, 4 C, 00 C, 00 C, 01 C, 16 C, 0F C, 4 C, 00 C, 00 C, 01 C, 17 C, 0F C, 4 C, 00 C, 00 C, 01 C, 16 C, 0F C, 4 C, 00 C, 00 C, 01 C, 17 C, 0F C, 4 C, 00 C, 00 C, 01 C, 16 C, 0F C, 4 C, 00 C, 00 C, 01 C, 17 C, 0F C, 4 C, 00 C, 00 C, 01 C, 16 C, 0F C, 4 C, 00 C, 00 C, 01 C, 17 C, 0F C, 4 C, 00 C, 00 C, 01 C, 16 C, 0F C, 4 C, 00 C, 00 C, 01 C, 17 C, 0F C, 4 C, 00 C, 00 C, 01 C, 16 C, 0F C, 4 C, 00 C, 00 C, 01 C, 17 C, 0F C, 4 C, 00 C, 00 C, 01 C, 16 C, 0F C, 4 C, 00 C, 00 C, 01 C, 17 C, 0F C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 8 PMA 13:58 05/07/87 ) 01 C, 16 C, 0F C, 4 C, 00 C, 00 C, 01 C, 17 C, 0F C, 4 C, 00 C, 00 C, 01 C, 16 C, 0F C, 4 C, 00 C, 00 C, 00 C, HERE EQU T-SERVE V1 C, 0A C, 0A C, 0F C, 4 C, 00 C, 00 C, 0E C, 0A C, 0F C, 4 C, 21 C, 00 C, 00 C, HERE EQU T-BOUNCE V1 C, 01 C, 03 C, 0F C, 6 C, 00 C, 00 C, 01 C, 03 C, 00 C, 6 C, 00 C, 00 C, 01 C, 03 C, 07 C, 6 C, 00 C, 00 C, 00 C, HERE EQU T-PL/EDGE V1 C, 02 C, 1A C, 0F C, D C, 00 C, 00 C, 01 C, 1B C, 0D C, D C, 00 C, 00 C, 00 C, HERE EQU T-PL/PLYR V1 C, 02 C, 14 C, 06 C, 8 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 9 PMA 13:58 05/07/87 ) 02 C, 01 C, 0F C, E C, 00 C, 00 C, 01 C, 14 C, 08 C, 3 C, 00 C, 00 C, 00 C, HERE EQU T-PICKUP V1 C, 01 C, 06 C, 01 C, D C, 00 C, 00 C, 01 C, 09 C, 02 C, D C, 00 C, 00 C, 01 C, 0C C, 03 C, D C, 00 C, 00 C, 01 C, 11 C, 05 C, D C, 00 C, 00 C, 01 C, 17 C, 07 C, D C, 00 C, 00 C, 01 C, 1F C, 09 C, D C, 00 C, 00 C, 00 C, HERE EQU T-WHACK V1 C, 02 C, 01 C, 0F C, 3 C, 00 C, 00 C, 02 C, 01 C, 00 C, 3 C, 00 C, 00 C, 01 C, 01 C, 06 C, 3 C, 00 C, 00 C, 02 C, 01 C, 00 C, 3 C, 00 C, 00 C, 01 C, 01 C, 04 C, 3 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 10 PMA 13:58 05/07/87 ) 02 C, 01 C, 00 C, 3 C, 00 C, 00 C, 01 C, 01 C, 02 C, 3 C, 00 C, 00 C, 00 C, HERE EQU T-GOAL V1 C, 02 C, 09 C, 0F C, 4 C, 00 C, 18 C, 96 C, 08 C, 0F C, 4 C, 00 C, 18 C, 00 C, HERE EQU T-SAVE V1 C, 03 C, 00 C, 0F C, 1 C, 00 C, 00 C, 01 C, 09 C, 0D C, 4 C, 00 C, 00 C, 01 C, 0C C, 0B C, 4 C, 00 C, 00 C, 01 C, 11 C, 09 C, 4 C, 00 C, 00 C, 01 C, 17 C, 07 C, 4 C, 00 C, 00 C, 01 C, 1F C, 05 C, 4 C, 00 C, 00 C, 01 C, 0D C, 03 C, D C, 00 C, 00 C, 01 C, 12 C, 01 C, D C, 00 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 11 PMA 10:45 04/16/87 ) HERE EQU T-SKRITCH V1 C, 02 C, 01 C, 01 C, 8 C, 00 C, 00 C, 02 C, 00 C, 02 C, 8 C, 00 C, 00 C, 02 C, 01 C, 03 C, 8 C, 00 C, 00 C, 02 C, 01 C, 01 C, 8 C, 00 C, 00 C, 02 C, 01 C, 03 C, 8 C, 00 C, 00 C, 10 C, 00 C, 00 C, 0 C, 00 C, 00 C, 02 C, 01 C, 03 C, 8 C, 00 C, 00 C, 02 C, 01 C, 01 C, 8 C, 00 C, 00 C, 02 C, 00 C, 02 C, 8 C, 00 C, 00 C, 02 C, 00 C, 03 C, 8 C, 00 C, 00 C, 02 C, 00 C, 02 C, 8 C, 00 C, 00 C, 00 C, HERE EQU T-TIMER V0 C, 02 C, 01 C, 0F C, 1 C, 00 C, 00 C, 01 C, 01 C, 00 C, 1 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 12 PMA 10:45 04/16/87 ) 01 C, 01 C, 06 C, 1 C, 00 C, 00 C, 17 C, 01 C, 00 C, 1 C, 00 C, 00 C, 02 C, 01 C, 0F C, 1 C, 00 C, 00 C, 01 C, 01 C, 00 C, 1 C, 00 C, 00 C, 01 C, 01 C, 06 C, 1 C, 00 C, 00 C, 19 C, 01 C, 00 C, 1 C, 00 C, 00 C, 00 C, HERE EQU T-0OVERTM V0 C, 0A C, 06 C, 0F C, A C, 00 C, 00 C, 14 C, 06 C, 00 C, A C, 00 C, 00 C, 0A C, 06 C, 0F C, A C, 00 C, 00 C, 14 C, 06 C, 00 C, A C, 00 C, 00 C, 0A C, 06 C, 0F C, A C, 00 C, 00 C, 14 C, 06 C, 00 C, A C, 00 C, 00 C, 0A C, 06 C, 0F C, A C, 00 C, 00 C, 14 C, 06 C, 00 C, A C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 13 PMA 11:44 04/15/87 ) 0A C, 06 C, 0F C, A C, 00 C, 00 C, 00 C, HERE EQU T-1OVERTM V1 C, 0A C, 06 C, 0F C, 7 C, 00 C, 00 C, 14 C, 06 C, 00 C, 7 C, 00 C, 00 C, 0A C, 06 C, 0F C, 7 C, 00 C, 00 C, 14 C, 06 C, 00 C, 7 C, 00 C, 00 C, 0A C, 06 C, 0F C, 7 C, 00 C, 00 C, 14 C, 06 C, 00 C, 7 C, 00 C, 00 C, 0A C, 06 C, 0F C, 7 C, 00 C, 00 C, 14 C, 06 C, 00 C, 7 C, 00 C, 00 C, 0A C, 06 C, 0F C, 7 C, 00 C, 00 C, 00 C, HERE EQU T-0ENDG V0 C, 78 C, 15 C, 0F C, 1 C, 00 C, 00 C, 00 C, HERE EQU T-1ENDG V1 C, 78 C, 15 C, 0F C, 1 C, 00 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 14 PMA 11:44 04/15/87 ) HERE EQU T-SOPFAN V0 C, 06 C, 0E C, 0B C, D C, 00 C, 00 C, 06 C, 0C C, 0C C, D C, 00 C, 00 C, 06 C, 09 C, 0D C, D C, 00 C, 00 C, 06 C, 08 C, 0F C, D C, 00 C, 00 C, 06 C, 09 C, 0E C, D C, 00 C, 00 C, 06 C, 0C C, 0D C, D C, 00 C, 00 C, 06 C, 0E C, 08 C, D C, 00 C, 00 C, 06 C, 0C C, 09 C, D C, 00 C, 00 C, 06 C, 09 C, 0A C, D C, 00 C, 00 C, 06 C, 08 C, 0C C, D C, 00 C, 00 C, 06 C, 09 C, 0B C, D C, 00 C, 00 C, 06 C, 0C C, 0A C, D C, 00 C, 00 C, 06 C, 0E C, 09 C, D C, 00 C, 00 C, 06 C, 0C C, 0A C, D C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 15 PMA 11:44 04/15/87 ) 06 C, 09 C, 0B C, D C, 00 C, 00 C, 06 C, 0C C, 0A C, D C, 00 C, 00 C, 06 C, 0B C, 0B C, D C, 00 C, 00 C, 06 C, 08 C, 0C C, D C, 00 C, 00 C, 06 C, 0B C, 0B C, D C, 00 C, 00 C, 06 C, 1F C, 0C C, 4 C, 00 C, 00 C, 06 C, 17 C, 0D C, 4 C, 00 C, 00 C, 06 C, 1F C, 0C C, 4 C, 00 C, 00 C, 06 C, 1D C, 0D C, 4 C, 00 C, 00 C, 06 C, 16 C, 0E C, 4 C, 00 C, 00 C, 36 C, 0E C, 0F C, 4 C, 00 C, 00 C, 00 C, HERE EQU T-ALTFAN V1 C, 06 C, 18 C, 0B C, D C, 00 C, 00 C, 06 C, 10 C, 0C C, D C, 00 C, 00 C, 06 C, 04 C, 0D C, 1 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 16 PMA 11:44 04/15/87 ) 06 C, 0A C, 0F C, D C, 00 C, 00 C, 06 C, 04 C, 0E C, 1 C, 00 C, 00 C, 06 C, 10 C, 0D C, D C, 00 C, 00 C, 06 C, 18 C, 08 C, D C, 00 C, 00 C, 06 C, 10 C, 09 C, D C, 00 C, 00 C, 06 C, 04 C, 0A C, 1 C, 00 C, 00 C, 06 C, 0A C, 0C C, D C, 00 C, 00 C, 06 C, 04 C, 0B C, 1 C, 00 C, 00 C, 06 C, 10 C, 0A C, D C, 00 C, 00 C, 06 C, 18 C, 09 C, D C, 00 C, 00 C, 06 C, 10 C, 0A C, D C, 00 C, 00 C, 06 C, 04 C, 0B C, 1 C, 00 C, 00 C, 06 C, 15 C, 0A C, D C, 00 C, 00 C, 06 C, 0E C, 0B C, D C, 00 C, 00 C, 06 C, 0A C, 0C C, D C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 17 PMA 15:33 07/08/87 ) 06 C, 13 C, 0B C, D C, 00 C, 00 C, 06 C, 0C C, 0C C, D C, 00 C, 00 C, 06 C, 09 C, 0D C, D C, 00 C, 00 C, 06 C, 11 C, 0C C, D C, 00 C, 00 C, 06 C, 04 C, 0D C, 1 C, 00 C, 00 C, 06 C, 1B C, 00 C, 4 C, 00 C, 00 C, 36 C, 11 C, 0F C, 4 C, 00 C, 00 C, 00 C, HERE EQU T-TOPZAM ( 0 ) V0 C, 0E C, 16 C, C C, 4 C, 00 C, C4 C, 07 C, 16 C, C C, 4 C, 00 C, 54 C, 07 C, 16 C, C C, 4 C, 00 C, 54 C, 0E C, 11 C, C C, 4 C, 00 C, C4 C, 0E C, 11 C, C C, 4 C, 00 C, C4 C, 0E C, 13 C, C C, 4 C, 00 C, 00 C, 0E C, 0C C, C C, D C, 00 C, A4 C, ( Hattrick Sound TABLES [T-]: 18 PMA 15:33 07/08/87 ) 07 C, 0C C, C C, D C, 00 C, 00 C, 07 C, 0D C, C C, D C, 00 C, 00 C, 07 C, 0C C, C C, D C, 00 C, A4 C, 07 C, 00 C, 0 C, 0 C, 00 C, 00 C, ( T-TOP 1a ) 15 C, 0B C, C C, D C, 00 C, 00 C, 07 C, 1B C, C C, 4 C, 00 C, 00 C, 12 C, 0B C, C C, D C, 00 C, 00 C, 0A C, 00 C, 0 C, 0 C, 00 C, 00 C, 15 C, 0A C, C C, D C, 00 C, 00 C, 07 C, 07 C, C C, D C, 00 C, 00 C, 12 C, 0B C, C C, D C, 00 C, 00 C, 0A C, 00 C, 0 C, 0 C, 00 C, 00 C, 0E C, 09 C, C C, D C, 00 C, 00 C, 0E C, 0C C, C C, D C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 19 PMA 15:33 07/08/87 ) 0E C, 1F C, C C, 4 C, 00 C, 00 C, 0E C, 0C C, C C, D C, 00 C, 00 C, 0E C, 1D C, C C, 4 C, 00 C, A4 C, 0E C, 1A C, C C, 4 C, 00 C, A4 C, 14 C, 17 C, C C, 4 C, 00 C, A4 C, 08 C, 00 C, 0 C, 0 C, 00 C, 00 C, 15 C, 16 C, C C, 4 C, 00 C, 00 C, 15 C, 00 C, 0 C, 0 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 54 C, 07 C, 16 C, C C, 4 C, 00 C, 54 C, 0A C, 16 C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 0 C, 0 C, 00 C, 00 C, 0A C, 16 C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 0 C, 0 C, 00 C, 00 C, 0A C, 16 C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 20 PMA 15:33 07/08/87 ) 04 C, 00 C, 0 C, 0 C, 00 C, 00 C, 0A C, 16 C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 0 C, 0 C, 00 C, 00 C, ( T-TOP 2 ) 0E C, 00 C, 0 C, 0 C, 00 C, 00 C, 0E C, 13 C, C C, 4 C, 00 C, C4 C, 0E C, 1A C, C C, 4 C, 00 C, C4 C, 0E C, 13 C, C C, 4 C, 00 C, C4 C, 0E C, 1D C, C C, 4 C, 00 C, C4 C, 0E C, 13 C, C C, 4 C, 00 C, C4 C, 07 C, 1F C, C C, 4 C, 00 C, 00 C, 07 C, 1D C, C C, 4 C, 00 C, 00 C, 07 C, 1B C, C C, 4 C, 00 C, 00 C, 07 C, 1A C, C C, 4 C, 00 C, 00 C, ( T-TOP 1b ) ( Hattrick Sound TABLES [T-]: 21 PMA 15:33 07/08/87 ) 15 C, 0B C, C C, D C, 00 C, 00 C, 07 C, 1B C, C C, 4 C, 00 C, 00 C, 12 C, 0B C, C C, D C, 00 C, 00 C, 0A C, 00 C, 0 C, 0 C, 00 C, 00 C, 15 C, 0A C, C C, D C, 00 C, 00 C, 07 C, 07 C, C C, D C, 00 C, 00 C, 12 C, 0B C, C C, D C, 00 C, 00 C, 0A C, 00 C, 0 C, 0 C, 00 C, 00 C, 0E C, 09 C, C C, D C, 00 C, 00 C, 0E C, 0C C, C C, D C, 00 C, 00 C, 0E C, 1F C, C C, 4 C, 00 C, 00 C, 0E C, 0C C, C C, D C, 00 C, 00 C, 0E C, 1D C, C C, 4 C, 00 C, A4 C, 0E C, 1A C, C C, 4 C, 00 C, A4 C, 12 C, 17 C, C C, 4 C, 00 C, A4 C, ( Hattrick Sound TABLES [T-]: 22 PMA 15:33 07/08/87 ) 0A C, 00 C, 0 C, 0 C, 00 C, 00 C, 15 C, 16 C, C C, 4 C, 00 C, 00 C, 15 C, 00 C, 0 C, 0 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 54 C, 07 C, 16 C, C C, 4 C, 00 C, 54 C, 0A C, 16 C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 0 C, 0 C, 00 C, 00 C, 0A C, 16 C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 0 C, 0 C, 00 C, 00 C, 0A C, 16 C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 0 C, 0 C, 00 C, 00 C, 0A C, 16 C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 0 C, 0 C, 00 C, 00 C, ( T-TOP 3 ) 0E C, 00 C, 0 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 23 PMA 15:33 07/08/87 ) 0E C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 0F C, C C, 4 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 00 C, 07 C, 1A C, C C, 4 C, 00 C, 00 C, 1C C, 1D C, C C, 4 C, 00 C, 00 C, 0E C, 1A C, C C, 4 C, 00 C, 00 C, 0E C, 17 C, C C, 4 C, 00 C, 00 C, 1C C, 16 C, C C, 4 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, 10 C, 11 C, C C, 4 C, 00 C, C4 C, 0C C, 00 C, 0 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 24 PMA 15:33 07/08/87 ) 10 C, 10 C, C C, 4 C, 00 C, C4 C, 0C C, 00 C, 0 C, 0 C, 00 C, 00 C, 37 C, 13 C, C C, 4 C, 00 C, 00 C, 01 C, 00 C, 0 C, 0 C, 00 C, 00 C, 0E C, 13 C, C C, 4 C, 00 C, 00 C, 0E C, 0C C, C C, D C, 00 C, C4 C, 07 C, 0C C, C C, D C, 00 C, 00 C, 07 C, 0D C, C C, D C, 00 C, 00 C, 07 C, 0C C, C C, D C, 00 C, 00 C, 07 C, 00 C, 0 C, 0 C, 00 C, 00 C, 37 C, 1D C, C C, 4 C, 00 C, 00 C, 01 C, 00 C, 0 C, 0 C, 00 C, 00 C, 0E C, 1D C, C C, 4 C, 00 C, 84 C, 2A C, 00 C, 0 C, 0 C, 00 C, 00 C, 37 C, 1D C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 25 PMA 15:33 07/08/87 ) 01 C, 00 C, 0 C, 0 C, 00 C, 00 C, 0E C, 1D C, C C, 4 C, 00 C, 84 C, 2A C, 00 C, 0 C, 0 C, 00 C, 00 C, 00 C, HERE EQU T-BOTZAM ( 0 ) V1 C, 1C C, 0B C, 08 C, D C, 00 C, 00 C, 1C C, 09 C, 08 C, D C, 00 C, 00 C, 0E C, 1F C, 08 C, 4 C, 00 C, 00 C, 2A C, 00 C, 08 C, 0 C, 00 C, 00 C, ( T-BOT 1a ) 1C C, 17 C, 08 C, D C, 00 C, 00 C, 1C C, 11 C, 08 C, D C, 00 C, 00 C, 1C C, 12 C, 08 C, D C, 00 C, 00 C, 1C C, 11 C, 08 C, D C, 00 C, 00 C, 1C C, 13 C, 08 C, D C, 00 C, 00 C, 1C C, 14 C, 08 C, D C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 26 PMA 15:33 07/08/87 ) 1C C, 17 C, 08 C, D C, 00 C, 00 C, 1C C, 1A C, 08 C, D C, 00 C, 00 C, 1C C, 1D C, 08 C, D C, 00 C, 00 C, 1C C, 1A C, 08 C, D C, 00 C, 00 C, 1C C, 17 C, 08 C, D C, 00 C, 00 C, 1C C, 1D C, 08 C, D C, 00 C, 00 C, ( T-BOT 2 ) 1C C, 1A C, 08 C, D C, 00 C, 00 C, 1C C, 0E C, 08 C, D C, 00 C, 00 C, 1C C, 0F C, 08 C, D C, 00 C, 00 C, 1C C, 11 C, 08 C, D C, 00 C, 00 C, ( T-BOT 1b ) 1C C, 17 C, 08 C, D C, 00 C, 00 C, 1C C, 11 C, 08 C, D C, 00 C, 00 C, 1C C, 12 C, 08 C, D C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 27 PMA 15:33 07/08/87 ) 1C C, 11 C, 08 C, D C, 00 C, 00 C, 1C C, 13 C, 08 C, D C, 00 C, 00 C, 1C C, 14 C, 08 C, D C, 00 C, 00 C, 1C C, 17 C, 08 C, D C, 00 C, 00 C, 1C C, 1A C, 08 C, D C, 00 C, 00 C, 1C C, 1D C, 08 C, D C, 00 C, 00 C, 1C C, 1A C, 08 C, D C, 00 C, 00 C, 1C C, 17 C, 08 C, D C, 00 C, 00 C, 1C C, 1D C, 08 C, D C, 00 C, 00 C, ( T-BOT 3 ) 1C C, 1A C, 08 C, D C, 00 C, 00 C, 1C C, 0E C, 08 C, D C, 00 C, 00 C, 1C C, 0F C, 08 C, D C, 00 C, 00 C, 1C C, 13 C, 08 C, D C, 00 C, 00 C, 1C C, 0E C, 08 C, D C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 28 PMA 15:33 07/08/87 ) 1C C, 0F C, 08 C, D C, 00 C, 00 C, 1C C, 10 C, 08 C, D C, 00 C, 00 C, 1C C, 11 C, 08 C, D C, 00 C, 00 C, 38 C, 13 C, 08 C, D C, 00 C, 00 C, 0E C, 14 C, 08 C, D C, 00 C, 00 C, 2A C, 00 C, 00 C, 0 C, 00 C, 00 C, 1C C, 1D C, 08 C, D C, 00 C, 00 C, 1C C, 0A C, 08 C, D C, 00 C, 00 C, 0E C, 0B C, 08 C, D C, 00 C, 00 C, 2A C, 00 C, 00 C, 0 C, 00 C, 00 C, 1C C, 13 C, 08 C, D C, 00 C, 00 C, 1C C, 0E C, 08 C, D C, 00 C, 00 C, 0E C, 0F C, 08 C, D C, 00 C, 00 C, 2A C, 00 C, 00 C, 0 C, 00 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 29 PMA 15:33 07/08/87 ) HERE EQU T-TOPBACH V0 C, 0E C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 1D C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 17 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 1D C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 13 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 1D C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 30 PMA 15:33 07/08/87 ) ( T-TOPBACH m 2 ) 0E C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 0F C, C C, 4 C, 00 C, 00 C, 07 C, 11 C, C C, 4 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, 07 C, 11 C, C C, 4 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 00 C, 07 C, 17 C, C C, 4 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 00 C, 07 C, 17 C, C C, 4 C, 00 C, 00 C, 07 C, 1A C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 31 PMA 15:33 07/08/87 ) ( T-TOPBACH m 3 ) 0E C, 1D C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 17 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 13 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 17 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 0E C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 13 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 32 PMA 15:33 07/08/87 ) ( T-TOPBACH m 4 ) 07 C, 0B C, C C, 4 C, 00 C, 00 C, 07 C, 09 C, C C, 4 C, 00 C, 00 C, 07 C, 0A C, C C, 4 C, 00 C, 00 C, 07 C, 09 C, C C, 4 C, 00 C, 00 C, 07 C, 0B C, C C, 4 C, 00 C, 00 C, 07 C, 09 C, C C, 4 C, 00 C, 00 C, 07 C, 0A C, C C, 4 C, 00 C, 00 C, 07 C, 09 C, C C, 4 C, 00 C, 00 C, 07 C, 0B C, C C, 4 C, 00 C, 00 C, 07 C, 09 C, C C, 4 C, 00 C, 00 C, 07 C, 0A C, C C, 4 C, 00 C, 00 C, 07 C, 09 C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 33 PMA 15:33 07/08/87 ) ( T-TOPBACH m 5 ) 07 C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 0B C, C C, 4 C, 00 C, 00 C, 07 C, 0C C, C C, 4 C, 00 C, 00 C, 07 C, 0B C, C C, 4 C, 00 C, 00 C, 07 C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 0B C, C C, 4 C, 00 C, 00 C, 07 C, 0C C, C C, 4 C, 00 C, 00 C, 07 C, 0B C, C C, 4 C, 00 C, 00 C, 07 C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 0B C, C C, 4 C, 00 C, 00 C, 07 C, 0C C, C C, 4 C, 00 C, 00 C, 07 C, 0B C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 34 PMA 15:33 07/08/87 ) ( T-TOPBACH m 6 ) 07 C, 11 C, C C, 4 C, 00 C, 00 C, 07 C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 10 C, C C, 4 C, 00 C, 00 C, 07 C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 11 C, C C, 4 C, 00 C, 00 C, 07 C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 10 C, C C, 4 C, 00 C, 00 C, 07 C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 11 C, C C, 4 C, 00 C, 00 C, 07 C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 10 C, C C, 4 C, 00 C, 00 C, 07 C, 0E C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 35 PMA 15:33 07/08/87 ) ( T-TOPBACH m 7 ) 0E C, 14 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 1A C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 11 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 14 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 0E C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 11 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 36 PMA 15:33 07/08/87 ) ( T-TOPBACH m 8 ) 07 C, 0C C, C C, 4 C, 00 C, 00 C, 07 C, 0B C, C C, 4 C, 00 C, 00 C, 07 C, 0C C, C C, 4 C, 00 C, 00 C, 07 C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 0F C, C C, 4 C, 00 C, 00 C, 07 C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 0F C, C C, 4 C, 00 C, 00 C, 07 C, 11 C, C C, 4 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, 07 C, 11 C, C C, 4 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 37 PMA 15:33 07/08/87 ) ( T-TOPBACH m 9 ) 0E C, 17 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 07 C, 11 C, C C, 4 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, 07 C, 14 C, C C, 4 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, 07 C, 14 C, C C, 4 C, 00 C, 00 C, 07 C, 17 C, C C, 4 C, 00 C, 00 C, 07 C, 1A C, C C, 4 C, 00 C, 00 C, 07 C, 17 C, C C, 4 C, 00 C, 00 C, 07 C, 1A C, C C, 4 C, 00 C, 00 C, 07 C, 1D C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 38 PMA 15:33 07/08/87 ) ( T-TOPBACH m 10 ) 07 C, 1F C, C C, 4 C, 00 C, 00 C, 07 C, 1D C, C C, 4 C, 00 C, 00 C, 07 C, 1F C, C C, 4 C, 00 C, 00 C, 07 C, 0B C, C C, D C, 00 C, 00 C, 0E C, 0C C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, 07 C, 14 C, C C, 4 C, 00 C, 00 C, 0E C, 13 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 1F C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 39 PMA 15:33 07/08/87 ) ( T-TOPBACH m 11 ) 0E C, 1D C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 13 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 1F C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 13 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 0B C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 14 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 40 PMA 15:33 07/08/87 ) ( T-TOPBACH m 12 ) 1C C, 13 C, C C, 4 C, 00 C, 00 C, 1C C, 00 C, 00 C, 0 C, 00 C, 00 C, 1C C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 41 PMA 15:33 07/08/87 ) ( T-TOPBACH m 13 ) 0E C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 13 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 0F C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 13 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 0C C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 13 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 42 PMA 15:33 07/08/87 ) ( T-TOPBACH m 14 ) 0E C, 09 C, C C, 4 C, 00 C, 00 C, 07 C, 0A C, C C, 4 C, 00 C, 00 C, 07 C, 0B C, C C, 4 C, 00 C, 00 C, 07 C, 0C C, C C, 4 C, 00 C, 00 C, 07 C, 0B C, C C, 4 C, 00 C, 00 C, 07 C, 0C C, C C, 4 C, 00 C, 00 C, 07 C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 0F C, C C, 4 C, 00 C, 00 C, 07 C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 0F C, C C, 4 C, 00 C, 00 C, 07 C, 11 C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 43 PMA 15:33 07/08/87 ) ( T-TOPBACH m 15 ) 0E C, 13 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 10 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 17 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 13 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 1D C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 10 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 44 PMA 15:33 07/08/87 ) ( T-TOPBACH m 16 ) 07 C, 11 C, C C, 4 C, 00 C, 00 C, 07 C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 10 C, C C, 4 C, 00 C, 00 C, 07 C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 11 C, C C, 4 C, 00 C, 00 C, 07 C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 10 C, C C, 4 C, 00 C, 00 C, 07 C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 11 C, C C, 4 C, 00 C, 00 C, 07 C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 10 C, C C, 4 C, 00 C, 00 C, 07 C, 0E C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 45 PMA 15:33 07/08/87 ) ( T-TOPBACH m 17 ) 07 C, 16 C, C C, 4 C, 00 C, 00 C, 07 C, 11 C, C C, 4 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, 07 C, 11 C, C C, 4 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 00 C, 07 C, 11 C, C C, 4 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, 07 C, 11 C, C C, 4 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 00 C, 07 C, 11 C, C C, 4 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, 07 C, 11 C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 46 PMA 15:33 07/08/87 ) ( T-TOPBACH m 18 ) 07 C, 1A C, C C, 4 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 00 C, 07 C, 17 C, C C, 4 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 00 C, 07 C, 1A C, C C, 4 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 00 C, 07 C, 17 C, C C, 4 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 00 C, 07 C, 1A C, C C, 4 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 00 C, 07 C, 17 C, C C, 4 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 47 PMA 15:33 07/08/87 ) ( T-TOPBACH m 19 ) 0E C, 1F C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 0C C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 1A C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 1F C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 16 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 1A C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 48 PMA 15:33 07/08/87 ) ( T-TOPBACH m 20 ) 07 C, 13 C, C C, 4 C, 00 C, 00 C, 07 C, 11 C, C C, 4 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 00 C, 07 C, 17 C, C C, 4 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 00 C, 07 C, 17 C, C C, 4 C, 00 C, 00 C, 07 C, 1A C, C C, 4 C, 00 C, 00 C, 07 C, 1D C, C C, 4 C, 00 C, 00 C, 07 C, 1A C, C C, 4 C, 00 C, 00 C, 07 C, 1D C, C C, 4 C, 00 C, 00 C, 07 C, 0A C, C C, D C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 49 PMA 15:33 07/08/87 ) ( T-TOPBACH m 21 ) 07 C, 0B C, C C, D C, 00 C, 00 C, 07 C, 00 C, 00 C, 0 C, 00 C, 00 C, 07 C, 0C C, C C, 4 C, 00 C, 00 C, 07 C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 0F C, C C, 4 C, 00 C, 00 C, 07 C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 0F C, C C, 4 C, 00 C, 00 C, 07 C, 11 C, C C, 4 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, 07 C, 11 C, C C, 4 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 50 PMA 15:33 07/08/87 ) ( T-TOPBACH m 22 ) 07 C, 17 C, C C, 4 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 00 C, 07 C, 17 C, C C, 4 C, 00 C, 00 C, 07 C, 1A C, C C, 4 C, 00 C, 00 C, 0E C, 11 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 07 C, 0E C, C C, 4 C, 00 C, 00 C, 07 C, 0F C, C C, 4 C, 00 C, 00 C, 0E C, 0E C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 17 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 51 PMA 15:33 07/08/87 ) ( T-TOPBACH m 23 ) 0E C, 16 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 0E C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 17 C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 0E C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 1A C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 0F C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 52 PMA 15:33 07/08/87 ) ( T-TOPBACH m 24 ) 1C C, 0E C, C C, 4 C, 00 C, 00 C, 1C C, 00 C, 00 C, 0 C, 00 C, 00 C, 00 C, HERE EQU T-BOTBACH ( m 1 ) V1 C, 1C C, 00 C, 00 C, 0 C, 00 C, 00 C, 1C C, 00 C, 00 C, 0 C, 00 C, 00 C, 1C C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 54 [no 53] PMA 15:33 07/08/87 ) ( T-BOTBACH m 2 ) 0E C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 13 C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 0F C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 13 C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 0C C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 13 C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 55 PMA 15:33 07/08/87 ) ( T-BOTBACH m 3 ) 0E C, 09 C, C C, D C, 00 C, 00 C, 07 C, 1F C, C C, 4 C, 00 C, 00 C, 07 C, 0B C, C C, D C, 00 C, 00 C, 07 C, 0C C, C C, D C, 00 C, 00 C, 07 C, 0B C, C C, D C, 00 C, 00 C, 07 C, 0C C, C C, D C, 00 C, 00 C, 07 C, 0E C, C C, D C, 00 C, 00 C, 07 C, 0F C, C C, D C, 00 C, 00 C, 07 C, 0E C, C C, D C, 00 C, 00 C, 07 C, 0F C, C C, D C, 00 C, 00 C, 07 C, 11 C, C C, D C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 56 PMA 15:33 07/08/87 ) ( T-BOTBACH m 4 ) 0E C, 13 C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 0F C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 0C C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 0F C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 09 C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 0C C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 57 PMA 15:33 07/08/87 ) ( T-BOTBACH m 5 ) 07 C, 17 C, C C, 4 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, 07 C, 17 C, C C, 4 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, 07 C, 17 C, C C, 4 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, 07 C, 16 C, C C, 4 C, 00 C, 00 C, 07 C, 13 C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 58 PMA 15:33 07/08/87 ) ( T-BOTBACH m 6 ) 07 C, 1D C, C C, 4 C, 00 C, 00 C, 07 C, 17 C, C C, 4 C, 00 C, 00 C, 07 C, 1A C, C C, 4 C, 00 C, 00 C, 07 C, 17 C, C C, 4 C, 00 C, 00 C, 07 C, 1D C, C C, 4 C, 00 C, 00 C, 07 C, 17 C, C C, 4 C, 00 C, 00 C, 07 C, 1A C, C C, 4 C, 00 C, 00 C, 07 C, 17 C, C C, 4 C, 00 C, 00 C, 07 C, 1D C, C C, 4 C, 00 C, 00 C, 07 C, 17 C, C C, 4 C, 00 C, 00 C, 07 C, 1A C, C C, 4 C, 00 C, 00 C, 07 C, 17 C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 59 PMA 15:33 07/08/87 ) ( T-BOTBACH m 7 ) 07 C, 0B C, C C, D C, 00 C, 00 C, 07 C, 1D C, C C, 4 C, 00 C, 00 C, 07 C, 1F C, C C, 4 C, 00 C, 00 C, 07 C, 1D C, C C, 4 C, 00 C, 00 C, 07 C, 0B C, C C, D C, 00 C, 00 C, 07 C, 1D C, C C, 4 C, 00 C, 00 C, 07 C, 1F C, C C, 4 C, 00 C, 00 C, 07 C, 1D C, C C, 4 C, 00 C, 00 C, 07 C, 0B C, C C, D C, 00 C, 00 C, 07 C, 1D C, C C, 4 C, 00 C, 00 C, 07 C, 1F C, C C, 4 C, 00 C, 00 C, 07 C, 1D C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 60 PMA 15:33 07/08/87 ) ( T-BOTBACH m 8 ) 0E C, 0D C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 11 C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 0C C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 11 C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 1F C, C C, 4 C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 0C C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 61 PMA 15:33 07/08/87 ) ( T-BOTBACH m 9 ) 0E C, 1D C, C C, 4 C, 00 C, 00 C, 07 C, 1D C, C C, 4 C, 00 C, 00 C, 07 C, 1F C, C C, 4 C, 00 C, 00 C, 07 C, 0B C, C C, D C, 00 C, 00 C, 07 C, 1F C, C C, 4 C, 00 C, 00 C, 07 C, 0B C, C C, D C, 00 C, 00 C, 07 C, 0C C, C C, D C, 00 C, 00 C, 07 C, 0D C, C C, D C, 00 C, 00 C, 07 C, 0C C, C C, D C, 00 C, 00 C, 07 C, 0D C, C C, D C, 00 C, 00 C, 07 C, 0F C, C C, D C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 62 PMA 15:33 07/08/87 ) ( T-BOTBACH m 10 ) 0E C, 11 C, C C, D C, 00 C, 00 C, 07 C, 0C C, C C, D C, 00 C, 00 C, 07 C, 0D C, C C, D C, 00 C, 00 C, 07 C, 0F C, C C, D C, 00 C, 00 C, 07 C, 0D C, C C, D C, 00 C, 00 C, 07 C, 0F C, C C, D C, 00 C, 00 C, 07 C, 11 C, C C, D C, 00 C, 00 C, 07 C, 13 C, C C, D C, 00 C, 00 C, 07 C, 11 C, C C, D C, 00 C, 00 C, 07 C, 13 C, C C, D C, 00 C, 00 C, 07 C, 14 C, C C, D C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 63 PMA 15:33 07/08/87 ) ( T-BOTBACH m 11 ) 07 C, 17 C, C C, D C, 00 C, 00 C, 07 C, 14 C, C C, D C, 00 C, 00 C, 07 C, 17 C, C C, D C, 00 C, 00 C, 07 C, 1A C, C C, D C, 00 C, 00 C, 07 C, 11 C, C C, D C, 00 C, 00 C, 07 C, 13 C, C C, D C, 00 C, 00 C, 07 C, 14 C, C C, D C, 00 C, 00 C, 07 C, 13 C, C C, D C, 00 C, 00 C, 0E C, 11 C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 11 C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 64 PMA 15:33 07/08/87 ) ( T-BOTBACH m 12 ) 0E C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 1A C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 14 C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 1A C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 11 C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 1A C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 65 PMA 15:33 07/08/87 ) ( T-BOTBACH m 13 ) 0E C, 0C C, C C, D C, 00 C, 00 C, 07 C, 0D C, C C, D C, 00 C, 00 C, 07 C, 0F C, C C, D C, 00 C, 00 C, 07 C, 11 C, C C, D C, 00 C, 00 C, 07 C, 0F C, C C, D C, 00 C, 00 C, 07 C, 11 C, C C, D C, 00 C, 00 C, 07 C, 13 C, C C, D C, 00 C, 00 C, 07 C, 14 C, C C, D C, 00 C, 00 C, 07 C, 13 C, C C, D C, 00 C, 00 C, 07 C, 14 C, C C, D C, 00 C, 00 C, 07 C, 17 C, C C, D C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 66 PMA 15:33 07/08/87 ) ( T-BOTBACH m 14 ) 0E C, 1A C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 14 C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 11 C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 14 C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 0C C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 11 C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 67 PMA 15:33 07/08/87 ) ( T-BOTBACH m 15 ) 07 C, 0A C, C C, D C, 00 C, 00 C, 07 C, 0C C, C C, D C, 00 C, 00 C, 07 C, 0E C, C C, D C, 00 C, 00 C, 07 C, 0C C, C C, D C, 00 C, 00 C, 07 C, 13 C, C C, D C, 00 C, 00 C, 07 C, 0C C, C C, D C, 00 C, 00 C, 07 C, 11 C, C C, D C, 00 C, 00 C, 07 C, 0C C, C C, D C, 00 C, 00 C, 07 C, 0F C, C C, D C, 00 C, 00 C, 07 C, 0C C, C C, D C, 00 C, 00 C, 07 C, 13 C, C C, D C, 00 C, 00 C, 07 C, 0C C, C C, D C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 68 PMA 15:33 07/08/87 ) ( T-BOTBACH m 16 ) 0E C, 0E C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 17 C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 13 C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 17 C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 0E C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 13 C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 69 PMA 15:33 07/08/87 ) ( T-BOTBACH m 17 ) 07 C, 0B C, C C, D C, 00 C, 00 C, 07 C, 09 C, C C, D C, 00 C, 00 C, 07 C, 0A C, C C, D C, 00 C, 00 C, 07 C, 09 C, C C, D C, 00 C, 00 C, 07 C, 0B C, C C, D C, 00 C, 00 C, 07 C, 09 C, C C, D C, 00 C, 00 C, 07 C, 0A C, C C, D C, 00 C, 00 C, 07 C, 09 C, C C, D C, 00 C, 00 C, 07 C, 0B C, C C, D C, 00 C, 00 C, 07 C, 09 C, C C, D C, 00 C, 00 C, 07 C, 0A C, C C, D C, 00 C, 00 C, 07 C, 09 C, C C, D C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 70 PMA 15:33 07/08/87 ) ( T-BOTBACH m 18 ) 07 C, 0E C, C C, D C, 00 C, 00 C, 07 C, 0B C, C C, D C, 00 C, 00 C, 07 C, 0C C, C C, D C, 00 C, 00 C, 07 C, 0B C, C C, D C, 00 C, 00 C, 07 C, 0E C, C C, D C, 00 C, 00 C, 07 C, 0B C, C C, D C, 00 C, 00 C, 07 C, 0C C, C C, D C, 00 C, 00 C, 07 C, 0B C, C C, D C, 00 C, 00 C, 07 C, 0E C, C C, D C, 00 C, 00 C, 07 C, 0B C, C C, D C, 00 C, 00 C, 07 C, 0C C, C C, D C, 00 C, 00 C, 07 C, 0B C, C C, D C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 71 PMA 15:33 07/08/87 ) ( T-BOTBACH m 19 ) 07 C, 11 C, C C, D C, 00 C, 00 C, 07 C, 0E C, C C, D C, 00 C, 00 C, 07 C, 0F C, C C, D C, 00 C, 00 C, 07 C, 0E C, C C, D C, 00 C, 00 C, 07 C, 11 C, C C, D C, 00 C, 00 C, 07 C, 0E C, C C, D C, 00 C, 00 C, 07 C, 0F C, C C, D C, 00 C, 00 C, 07 C, 0E C, C C, D C, 00 C, 00 C, 07 C, 11 C, C C, D C, 00 C, 00 C, 07 C, 0E C, C C, D C, 00 C, 00 C, 07 C, 0F C, C C, D C, 00 C, 00 C, 07 C, 0E C, C C, D C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 72 PMA 15:33 07/08/87 ) ( T-BOTBACH m 20 ) 0E C, 14 C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 1A C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 13 C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 1A C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 0F C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 1A C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 73 PMA 15:33 07/08/87 ) ( T-BOTBACH m 21 ) 07 C, 0E C, C C, D C, 00 C, 00 C, 07 C, 0C C, C C, D C, 00 C, 00 C, 07 C, 0E C, C C, D C, 00 C, 00 C, 07 C, 0F C, C C, D C, 00 C, 00 C, 07 C, 11 C, C C, D C, 00 C, 00 C, 07 C, 0F C, C C, D C, 00 C, 00 C, 07 C, 11 C, C C, D C, 00 C, 00 C, 07 C, 13 C, C C, D C, 00 C, 00 C, 07 C, 14 C, C C, D C, 00 C, 00 C, 07 C, 13 C, C C, D C, 00 C, 00 C, 07 C, 14 C, C C, D C, 00 C, 00 C, 07 C, 17 C, C C, D C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 74 PMA 15:33 07/08/87 ) ( T-BOTBACH m 22 ) 07 C, 1A C, C C, D C, 00 C, 00 C, 07 C, 00 C, 00 C, 0 C, 00 C, 00 C, 07 C, 09 C, C C, D C, 00 C, 00 C, 07 C, 1F C, C C, 4 C, 00 C, 00 C, 07 C, 0B C, C C, D C, 00 C, 00 C, 07 C, 1F C, C C, 4 C, 00 C, 00 C, 07 C, 0B C, C C, D C, 00 C, 00 C, 07 C, 0C C, C C, D C, 00 C, 00 C, 07 C, 0E C, C C, D C, 00 C, 00 C, 07 C, 0C C, C C, D C, 00 C, 00 C, 07 C, 0E C, C C, D C, 00 C, 00 C, 07 C, 0F C, C C, D C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 75 PMA 15:33 07/08/87 ) ( T-BOTBACH m 23 ) 07 C, 11 C, C C, D C, 00 C, 00 C, 07 C, 0F C, C C, D C, 00 C, 00 C, 07 C, 11 C, C C, D C, 00 C, 00 C, 07 C, 13 C, C C, D C, 00 C, 00 C, 07 C, 0C C, C C, D C, 00 C, 00 C, 07 C, 0E C, C C, D C, 00 C, 00 C, 07 C, 0F C, C C, D C, 00 C, 00 C, 07 C, 0E C, C C, D C, 00 C, 00 C, 0E C, 0C C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0E C, 1A C, C C, D C, 00 C, 00 C, 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 76 PMA 15:33 07/08/87 ) ( T-BOTBACH m 24 ) 1C C, 13 C, C C, D C, 00 C, 00 C, 1C C, 00 C, 00 C, 0 C, 00 C, 00 C, 00 C, HERE EQU T-TOPTURK ( upbeat ) V0 C, 06 C, 17 C, C C, 4 C, 00 C, 00 C, 06 C, 1A C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 77 PMA 15:33 07/08/87 ) ( T-TOPTURK m 1 ) 08 C, 1D C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 1D C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 1D C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 06 C, 0F C, C C, D C, 00 C, 00 C, 06 C, 0E C, C C, D C, 00 C, 00 C, 08 C, 0C C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 0C C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 78 PMA 15:33 07/08/87 ) ( T-TOPTURK m > ) 08 C, 0C C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 06 C, 1D C, C C, 4 C, 00 C, 00 C, 06 C, 1A C, C C, 4 C, 00 C, 00 C, 08 C, 17 C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 17 C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 06 C, 17 C, C C, 4 C, 00 C, 00 C, 06 C, 1A C, C C, 4 C, 00 C, 00 C, 06 C, 1D C, C C, 4 C, 00 C, 00 C, 06 C, 1A C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 79 PMA 15:33 07/08/87 ) ( T-TOPTURK m 4 ) 0C C, 17 C, C C, 4 C, 00 C, 00 C, 08 C, 1A C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 1A C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 06 C, 17 C, C C, 4 C, 00 C, 00 C, 06 C, 1A C, C C, 4 C, 00 C, 00 C, 06 C, 1D C, C C, 4 C, 00 C, 00 C, 06 C, 1F C, C C, 4 C, 00 C, 00 C, 06 C, 1D C, C C, 4 C, 00 C, 00 C, 06 C, 1A C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 80 PMA 15:33 07/08/87 ) ( T-TOPTURK m > ) 08 C, 1D C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 06 C, 0F C, C C, D C, 00 C, 00 C, 06 C, 0E C, C C, D C, 00 C, 00 C, 06 C, 0C C, C C, D C, 00 C, 00 C, 06 C, 0B C, C C, D C, 00 C, 00 C, 06 C, 0C C, C C, D C, 00 C, 00 C, 06 C, 0F C, C C, D C, 00 C, 00 C, 08 C, 0C C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 06 C, 1D C, C C, 4 C, 00 C, 00 C, 06 C, 1A C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 81 PMA 15:33 07/08/87 ) ( T-TOPTURK m 7 ) 06 C, 17 C, C C, 4 C, 00 C, 00 C, 0C C, 13 C, C C, 4 C, 00 C, 00 C, 06 C, 11 C, C C, 4 C, 00 C, 00 C, 06 C, 13 C, C C, 4 C, 00 C, 00 C, 06 C, 17 C, C C, 4 C, 00 C, 00 C, 06 C, 1D C, C C, 4 C, 00 C, 00 C, 06 C, 1A C, C C, 4 C, 00 C, 00 C, 08 C, 17 C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 1A C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 82 PMA 15:33 07/08/87 ) ( T-TOPTURK m > ) 0C C, 1D C, C C, 4 C, 00 C, 00 C, 0C C, 00 C, 00 C, 0 C, 00 C, 00 C, 06 C, 17 C, C C, 4 C, 00 C, 00 C, 0C C, 13 C, C C, 4 C, 00 C, 00 C, 06 C, 17 C, C C, 4 C, 00 C, 00 C, 08 C, 13 C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 13 C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 83 PMA 15:33 07/08/87 ) ( T-TOPTURK m 10 ) 06 C, 17 C, C C, 4 C, 00 C, 00 C, 0C C, 13 C, C C, 4 C, 00 C, 00 C, 06 C, 17 C, C C, 4 C, 00 C, 00 C, 18 C, 13 C, C C, 4 C, 00 C, 00 C, ( 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, ) 06 C, 15 C, C C, 4 C, 00 C, 00 C, 0C C, 11 C, C C, 4 C, 00 C, 00 C, 06 C, 15 C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 84 PMA 15:33 07/08/87 ) ( T-TOPTURK m > ) 08 C, 11 C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 11 C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 06 C, 15 C, C C, 4 C, 00 C, 00 C, 0C C, 11 C, C C, 4 C, 00 C, 00 C, 06 C, 15 C, C C, 4 C, 00 C, 00 C, 08 C, 11 C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0C C, 13 C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 85 PMA 15:33 07/08/87 ) ( T-TOPTURK m 13 ) 08 C, 0E C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 0E C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 13 C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 13 C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 17 C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 17 C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 86 PMA 15:33 07/08/87 ) ( T-TOPTURK m > ) 0C C, 1A C, C C, 4 C, 00 C, 00 C, 06 C, 1D C, C C, 4 C, 00 C, 00 C, 06 C, 1A C, C C, 4 C, 00 C, 00 C, 06 C, 17 C, C C, 4 C, 00 C, 00 C, 0C C, 13 C, C C, 4 C, 00 C, 00 C, 06 C, 11 C, C C, 4 C, 00 C, 00 C, 06 C, 13 C, C C, 4 C, 00 C, 00 C, 06 C, 17 C, C C, 4 C, 00 C, 00 C, 06 C, 1D C, C C, 4 C, 00 C, 00 C, 06 C, 1A C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 87 PMA 15:33 07/08/87 ) ( T-TOPTURK m 16 ) 08 C, 17 C, C C, 4 C, 00 C, 00 C, 10 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 1A C, D C, 4 C, 00 C, 00 C, 10 C, 00 C, 00 C, 0 C, 00 C, 00 C, 24 C, 1D C, F C, 4 C, 00 C, 00 C, 00 C, HERE EQU T-BOTTURK ( upbeat ) V1 C, 06 C, 09 C, C C, D C, 00 C, 00 C, 06 C, 0C C, C C, D C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 89 [no 88] PMA 15:33 07/08/87 ) ( T-BOTTURK m 1 ) 08 C, 0F C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 0F C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 0F C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 06 C, 13 C, C C, D C, 00 C, 00 C, 06 C, 11 C, C C, D C, 00 C, 00 C, 08 C, 0F C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 0F C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 90 PMA 15:33 07/08/87 ) ( T-BOTTURK m > ) 08 C, 0F C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 06 C, 0F C, C C, D C, 00 C, 00 C, 06 C, 0C C, C C, D C, 00 C, 00 C, 08 C, 09 C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 09 C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 06 C, 09 C, C C, D C, 00 C, 00 C, 06 C, 0C C, C C, D C, 00 C, 00 C, 06 C, 0F C, C C, D C, 00 C, 00 C, 06 C, 0C C, C C, D C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 91 PMA 15:33 07/08/87 ) ( T-BOTTURK m 4 ) 0C C, 09 C, C C, D C, 00 C, 00 C, 08 C, 0C C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 0C C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 06 C, 09 C, C C, D C, 00 C, 00 C, 06 C, 0C C, C C, D C, 00 C, 00 C, 08 C, 0F C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 0F C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 92 PMA 15:33 07/08/87 ) ( T-BOTTURK m > ) 08 C, 0F C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 06 C, 13 C, C C, D C, 00 C, 00 C, 06 C, 11 C, C C, D C, 00 C, 00 C, 08 C, 0F C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 0F C, C C, D C, 00 C, 00 C, 04 C, 13 C, C C, D C, 00 C, 00 C, 08 C, 0F C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 06 C, 0B C, C C, D C, 00 C, 00 C, 06 C, 1F C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 93 PMA 15:33 07/08/87 ) ( T-BOTTURK m 7 ) 06 C, 1D C, C C, 4 C, 00 C, 00 C, 0C C, 17 C, C C, 4 C, 00 C, 00 C, 06 C, 14 C, C C, 4 C, 00 C, 00 C, 06 C, 17 C, C C, 4 C, 00 C, 00 C, 06 C, 1D C, C C, 4 C, 00 C, 00 C, 06 C, 0F C, C C, D C, 00 C, 00 C, 06 C, 0C C, C C, D C, 00 C, 00 C, 08 C, 09 C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 0C C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 94 PMA 15:33 07/08/87 ) ( T-BOTTURK m > ) 0C C, 0F C, C C, D C, 00 C, 00 C, 0C C, 00 C, 00 C, 0 C, 00 C, 00 C, 06 C, 13 C, C C, D C, 00 C, 00 C, 0C C, 0F C, C C, D C, 00 C, 00 C, 06 C, 13 C, C C, D C, 00 C, 00 C, 08 C, 0F C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 0F C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 95 PMA 15:33 07/08/87 ) ( T-BOTTURK m 10 ) 06 C, 1D C, C C, 4 C, 00 C, 00 C, 0C C, 17 C, C C, 4 C, 00 C, 00 C, 06 C, 1D C, C C, 4 C, 00 C, 00 C, 18 C, 17 C, C C, 4 C, 00 C, 00 C, ( 00 C, 00 C, 00 C, 0 C, 00 C, 00 C, ) 06 C, 0B C, C C, D C, 00 C, 00 C, 0C C, 0E C, C C, D C, 00 C, 00 C, 06 C, 0B C, C C, D C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 96 PMA 15:33 07/08/87 ) ( T-BOTTURK m > ) 08 C, 0E C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 0E C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 06 C, 0B C, C C, D C, 00 C, 00 C, 0C C, 09 C, C C, D C, 00 C, 00 C, 06 C, 0B C, C C, D C, 00 C, 00 C, 08 C, 09 C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 0C C, 1F C, C C, 4 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 97 PMA 15:33 07/08/87 ) ( T-BOTTURK m 13 ) 08 C, 17 C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 17 C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 1D C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 1D C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 0C C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 0B C, C C, D C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 98 PMA 15:33 07/08/87 ) ( T-BOTTURK m > ) 08 C, 1F C, C C, 4 C, 00 C, 00 C, 04 C, 00 C, 00 C, 0 C, 00 C, 00 C, 06 C, 0B C, C C, D C, 00 C, 00 C, 06 C, 1F C, C C, 4 C, 00 C, 00 C, 06 C, 1D C, C C, 4 C, 00 C, 00 C, 0C C, 17 C, C C, 4 C, 00 C, 00 C, 06 C, 15 C, C C, 4 C, 00 C, 00 C, 06 C, 17 C, C C, 4 C, 00 C, 00 C, 06 C, 1D C, C C, 4 C, 00 C, 00 C, 06 C, 0F C, C C, D C, 00 C, 00 C, 06 C, 0C C, C C, D C, 00 C, 00 C, ( Hattrick Sound TABLES [T-]: 99 PMA 15:33 07/08/87 ) ( T-BOTTURK m 16 ) 08 C, 09 C, C C, D C, 00 C, 00 C, 10 C, 00 C, 00 C, 0 C, 00 C, 00 C, 08 C, 0C C, D C, D C, 00 C, 00 C, 10 C, 00 C, 00 C, 0 C, 00 C, 00 C, 24 C, 13 C, F C, D C, 00 C, 00 C, 00 C, ( DIRECT ERASE WORD P1 14:25 06/19/86 ) CODE (DIRECT-ERASE) ( PRIORITY/TOP ZONE/HOWMANY --- ) 0 # LDY NOS LDA NOS STY ( GET TOP ZONE, ZERO NOS ) TAY 0= NOT IF ( TOP=COUNT TO Y-REG ) BEGIN 3E # LDA CLC NOS ADC NOS STA ( ADD 62 TO ZERO ) CS IF NOS 1+ INC THEN ( TOP ZONE TIMES, BUT ) DEY 0= UNTIL THEN ( ONLY IF TOP NOT ZERO ) NOS 2+ LDA A ASL A ASL ( PULL PRIORITY AND 4* IT) CLC NOS ADC NOS STA ( ADD IT TO ADDR IN NOS ) CS IF NOS 1+ INC THEN ( INC IF CARRY ) GNE0 >LO # LDA ( GET DL-TAB-START LOBYTE) CLC NOS ADC NOS STA ( ADD TO NOS & POP BACK ) GNE0 >HI # LDA ( GET DL-TAB-START HIBYTE) NOS 1+ ADC NOS 1+ STA ( ADD TO NOS 1+ & POPBACK) 1 # LDA CLC NOS ADC NOS STA ( ADD 3 TO ADDR IN NOS TO) CS IF NOS 1+ INC THEN ( BEGIN AT DL-HEADER XBYTE) ( DIRECT ERASE WORD P2 14:25 06/19/86 ) ( AA # LDA ( VALUE TO POKE INTO DL-HEADER) BEGIN 1F # LDA NOS X) STA CLC 2 # LDA NOS ADC NOS STA CS IF NOS 1+ INC THEN AA # LDA NOS X) STA ( PHA TO SAVE COPY OF VALUE ) CLC 3C # LDA NOS ADC NOS STA ( ADD 62 TO GET TO NEXT ) CS IF NOS 1+ INC THEN ( HIGHER DL-HEADER XBYTE ) TOS DEC 0= UNTIL ( PULL VALUE BACK TO REINIT A ) INX INX INX INX INX INX RTS END-CODE ( TOS=0 IF END ) CODE DIRECT-ERASE ' (DIRECT-ERASE) >BODY JSR NEXT JMP END-CODE ( DIRECT SCROLL WORD P1 14:25 06/19/86 ) CODE (DIRECT-SCROLL) ( PRIORITY/TOP ZONE/HOWMANY --- ) ( ASSUMES AMOUNT TO SCROLL IS IN "SCROLL" ) 0 # LDY NOS LDA NOS STY ( GET TOP ZONE, ZERO NOS ) TAY 0= NOT IF ( TOP=COUNT TO Y-REG ) BEGIN 3E # LDA CLC NOS ADC NOS STA ( ADD 62 TO ZERO ) CS IF NOS 1+ INC THEN ( TOP ZONE TIMES, BUT ) DEY 0= UNTIL THEN ( ONLY IF TOP NOT ZERO ) NOS 2+ LDA A ASL A ASL ( PULL PRIORITY AND 4* IT) CLC NOS ADC NOS STA ( ADD IT TO ADDR IN NOS ) CS IF NOS 1+ INC THEN ( INC IF NOS = 0 ) GNE0 >LO # LDA ( GET DL-TAB-START LOBYTE) CLC NOS ADC NOS STA ( ADD TO NOS & POP BACK ) GNE0 >HI # LDA ( GET DL-TAB-START HIBYTE) NOS 1+ ADC NOS 1+ STA ( ADD TO NOS 1+ & POPBACK) ( DIRECT SCROLL WORD P2 11:12 08/15/86 ) 3 # LDA CLC NOS ADC NOS STA ( ADD 3 TO ADDR IN NOS TO) CS IF NOS 1+ INC THEN ( BEGIN AT DL-HEADER XBYTE) SCROLL LDA ( VALUE TO ADD INTO DL-HEADER) BEGIN PHA CLC NOS X) ADC ( PHA, ADD VALUE TO DL-HEADER X) NOS X) STA ( STORE BACK ALTERED VALUE ) CLC 3E # LDA NOS ADC NOS STA ( ADD 62 TO GET TO NEXT ) CS IF NOS 1+ INC THEN ( HIGHER DL-HEADER XBYTE ) PLA TOS DEC 0= UNTIL ( PULL VALUE BACK TO REINIT A ) INX INX INX INX INX INX RTS END-CODE ( TOS =0 IF END ) CODE DIRECT-SCROLL ' (DIRECT-SCROLL) >BODY JSR NEXT JMP END-CODE ( BASIC IMAGE & ELEMENT TABLE DOCUMENTATION 10:14 05/28/86 ) ( ) ( ELEMENT TABLE ENTRY FORMAT: ELEMENTS CAN BE IN ANY ORDER ) ( SINCE DL ENTRY PLACEMENT IS DETERMINED IN ENTRY ITSELF ) ( | 7 6 5 4 3 2 1 0 | IMAGE TABLE | X | Y | ) ( | ALTER LAST PRIORITY/DL# | ENTRY # | COORD | COORD | ) ( IMAGE TABLE ENTRY FORMAT: IMAGE NUMBER BY TABLE POSITION ) ( | | 7 6 5 4 3 2 1 0 | | | ) ( | LO ADDR | PALETTE WIDTH | HI ADDR | #ZONES HIGH | ) ( PLAYERS ROM VERSION OF ETAB 16:22 11/24/86 ) 0A EQU BLUE-ALTER-BYTE 30 EQU BLUE-START-X 76 EQU BLUE-START-Y 0B EQU REDD-ALTER-BYTE 50 EQU REDD-START-X 76 EQU REDD-START-Y 0C EQU BGLY-ALTER-BYTE 09 EQU BGLY-START-X 60 EQU BGLY-START-Y 0D EQU RGLY-ALTER-BYTE 91 EQU RGLY-START-X 74 EQU RGLY-START-Y 0E EQU PUCK-ALTER-BYTE 40 EQU PUCK-START-X 76 EQU PUCK-START-Y HERE EQU PLAYERS-ETAB-ROM BLUE-ALTER-BYTE C, BPFE C, BLUE-START-X C, BLUE-START-Y C, REDD-ALTER-BYTE C, RPFW C, REDD-START-X C, REDD-START-Y C, BGLY-ALTER-BYTE C, BGFE C, BGLY-START-X C, BGLY-START-Y C, RGLY-ALTER-BYTE C, RGFW C, RGLY-START-X C, RGLY-START-Y C, PUCK-ALTER-BYTE C, PUCK C, PUCK-START-X C, PUCK-START-Y C, FF C, ( SCOREBOARD VERSION OF ETAB 16:22 11/24/86 ) 80 EQU SCOA-ALTER-BYTE 0D EQU SCOA-START-X 00 EQU SCOA-START-Y 81 EQU SCOB-ALTER-BYTE 6D EQU SCOB-START-X 00 EQU SCOB-START-Y 8D EQU VS-C-ALTER-BYTE 72 EQU VS-C-START-X 0E EQU VS-C-START-Y 0D EQU VS-R-ALTER-BYTE 7C EQU VS-R-START-X 0E EQU VS-R-START-Y HERE EQU SCOREBOARD-ETAB-ROM SCOA-ALTER-BYTE C, SCOREA C, SCOA-START-X C, SCOA-START-Y C, SCOB-ALTER-BYTE C, SCOREB C, SCOB-START-X C, SCOB-START-Y C, VS-C-ALTER-BYTE C, VS-CTR C, VS-C-START-X C, VS-C-START-Y C, VS-R-ALTER-BYTE C, VS-RED C, VS-R-START-X C, VS-R-START-Y C, FF C, ( NUMBERS TEST ELEMENT TABLE 16:22 11/24/86 ) 82 EQU NUM0-ALTER-BYTE 19 EQU NUM0-START-X 04 EQU NUM0-START-Y 83 EQU NUM1-ALTER-BYTE 20 EQU NUM1-START-X 04 EQU NUM1-START-Y 84 EQU NUM2-ALTER-BYTE 7C EQU NUM2-START-X 04 EQU NUM2-START-Y 85 EQU NUM3-ALTER-BYTE 83 EQU NUM3-START-X 04 EQU NUM3-START-Y 86 EQU NUM4-ALTER-BYTE 45 EQU NUM4-START-X 0A EQU NUM4-START-Y 87 EQU NUM5-ALTER-BYTE 50 EQU NUM5-START-X 0A EQU NUM5-START-Y 88 EQU NUM6-ALTER-BYTE 57 EQU NUM6-START-X 0A EQU NUM6-START-Y 89 EQU NUM7-ALTER-BYTE 2F EQU NUM7-START-X 08 EQU NUM7-START-Y 8A EQU NUM8-ALTER-BYTE 34 EQU NUM8-START-X 08 EQU NUM8-START-Y 8B EQU NUM9-ALTER-BYTE 68 EQU NUM9-START-X 08 EQU NUM9-START-Y 8C EQU NUMA-ALTER-BYTE 6D EQU NUMA-START-X 08 EQU NUMA-START-Y ( NUMBER SLOTS ETAB IN ROM 14:21 12/02/86 ) HERE EQU NUMBERS-ETAB-ROM NUM0-ALTER-BYTE C, Y0 C, NUM0-START-X C, NUM0-START-Y C, NUM1-ALTER-BYTE C, Y0 C, NUM1-START-X C, NUM1-START-Y C, NUM2-ALTER-BYTE C, Y0 C, NUM2-START-X C, NUM2-START-Y C, NUM3-ALTER-BYTE C, Y0 C, NUM3-START-X C, NUM3-START-Y C, NUM4-ALTER-BYTE C, Y0 C, NUM4-START-X C, NUM4-START-Y C, NUM5-ALTER-BYTE C, Y0 C, NUM5-START-X C, NUM5-START-Y C, NUM6-ALTER-BYTE C, Y0 C, NUM6-START-X C, NUM6-START-Y C, NUM7-ALTER-BYTE C, W0 C, NUM7-START-X C, NUM7-START-Y C, NUM8-ALTER-BYTE C, W0 C, NUM8-START-X C, NUM8-START-Y C, NUM9-ALTER-BYTE C, W0 C, NUM9-START-X C, NUM9-START-Y C, NUMA-ALTER-BYTE C, W0 C, NUMA-START-X C, NUMA-START-Y C, FF C, ( GOAL TWIRLERS NET ELEM TABLE EQUATES 11:46 12/03/86 ) 88 EQU BU-TWIRL-ALT 02 EQU BU-TWIRL-ST-X 50 EQU BU-TWIRL-ST-Y 88 EQU BL-TWIRL-ALT 02 EQU BL-TWIRL-ST-X 88 EQU BL-TWIRL-ST-Y 89 EQU RU-TWIRL-ALT 99 EQU RU-TWIRL-ST-X 50 EQU RU-TWIRL-ST-Y 89 EQU RL-TWIRL-ALT 99 EQU RL-TWIRL-ST-X 88 EQU RL-TWIRL-ST-Y ( 51 ORIGINAL BUT & RUT Y-VALUES ) 86 EQU BU-GOAL-ALT 08 EQU BU-GOAL-ST-X 58 EQU BU-GOAL-ST-Y 86 EQU BL-GOAL-ALT 08 EQU BL-GOAL-ST-X 70 EQU BL-GOAL-ST-Y 87 EQU RU-GOAL-ALT 8C EQU RU-GOAL-ST-X 58 EQU RU-GOAL-ST-Y 87 EQU RL-GOAL-ALT 8C EQU RL-GOAL-ST-X 70 EQU RL-GOAL-ST-Y 88 EQU BU-NETT-ALT 00 EQU BU-NETT-ST-X 58 EQU BU-NETT-ST-Y 88 EQU BL-NETT-ALT 00 EQU BL-NETT-ST-X 70 EQU BL-NETT-ST-Y 89 EQU RU-NETT-ALT 97 EQU RU-NETT-ST-X 58 EQU RU-NETT-ST-Y 89 EQU RL-NETT-ALT 97 EQU RL-NETT-ST-X 70 EQU RL-NETT-ST-Y ( GOAL TWIRLERS NET ETAB IN ROM 11:46 12/03/86 ) HERE EQU NETGOAL-ETAB-ROM BU-TWIRL-ALT C, B-TWIRLA C, BU-TWIRL-ST-X C, BU-TWIRL-ST-Y C, BL-TWIRL-ALT C, B-TWIRLA C, BL-TWIRL-ST-X C, BL-TWIRL-ST-Y C, RU-TWIRL-ALT C, R-TWIRLA C, RU-TWIRL-ST-X C, RU-TWIRL-ST-Y C, RL-TWIRL-ALT C, R-TWIRLA C, RL-TWIRL-ST-X C, RL-TWIRL-ST-Y C, BU-GOAL-ALT C, UPGOALB C, BU-GOAL-ST-X C, BU-GOAL-ST-Y C, BL-GOAL-ALT C, LOGOALB C, BL-GOAL-ST-X C, BL-GOAL-ST-Y C, RU-GOAL-ALT C, UPGOALR C, RU-GOAL-ST-X C, RU-GOAL-ST-Y C, RL-GOAL-ALT C, LOGOALR C, RL-GOAL-ST-X C, RL-GOAL-ST-Y C, BU-NETT-ALT C, UPNET C, BU-NETT-ST-X C, BU-NETT-ST-Y C, BL-NETT-ALT C, LONET C, BL-NETT-ST-X C, BL-NETT-ST-Y C, RU-NETT-ALT C, UPNET C, RU-NETT-ST-X C, RU-NETT-ST-Y C, RL-NETT-ALT C, LONET C, RL-NETT-ST-X C, RL-NETT-ST-Y C, FF C, ( CENTERLINES ELEM TABLE EQUATES 11:46 12/03/86 ) 85 EQU CLINES0-ALT 37 EQU CLINES0-ST-X 20 EQU CLINES0-ST-Y 85 EQU CLINES1-ALT 37 EQU CLINES1-ST-X 30 EQU CLINES1-ST-Y 85 EQU CLINES2-ALT 37 EQU CLINES2-ST-X 40 EQU CLINES2-ST-Y 85 EQU CLINES3-ALT 37 EQU CLINES3-ST-X 50 EQU CLINES3-ST-Y 85 EQU CLINES4-ALT 37 EQU CLINES4-ST-X 60 EQU CLINES4-ST-Y 85 EQU CLINES5-ALT 37 EQU CLINES5-ST-X 70 EQU CLINES5-ST-Y 85 EQU CLINES6-ALT 37 EQU CLINES6-ST-X 80 EQU CLINES6-ST-Y 85 EQU CLINES7-ALT 37 EQU CLINES7-ST-X 90 EQU CLINES7-ST-Y 85 EQU CLINES8-ALT 37 EQU CLINES8-ST-X A0 EQU CLINES8-ST-Y 85 EQU CLINES9-ALT 37 EQU CLINES9-ST-X B0 EQU CLINES9-ST-Y 84 EQU CIRTOP-ALT 3C EQU CIRTOP-ST-X 50 EQU CIRTOP-ST-Y 84 EQU CIRBOT-ALT 3C EQU CIRBOT-ST-X 70 EQU CIRBOT-ST-Y ( CENTERLINES ETAB IN ROM 11:46 12/03/86 ) HERE EQU CENTERLINES-ETAB-ROM CLINES0-ALT C, CLINES C, CLINES0-ST-X C, CLINES0-ST-Y C, CLINES1-ALT C, CLINES C, CLINES1-ST-X C, CLINES1-ST-Y C, CLINES2-ALT C, CLINES C, CLINES2-ST-X C, CLINES2-ST-Y C, CLINES3-ALT C, CLINES C, CLINES3-ST-X C, CLINES3-ST-Y C, CLINES4-ALT C, CLINES C, CLINES4-ST-X C, CLINES4-ST-Y C, CLINES5-ALT C, CLINES C, CLINES5-ST-X C, CLINES5-ST-Y C, CLINES6-ALT C, CLINES C, CLINES6-ST-X C, CLINES6-ST-Y C, CLINES7-ALT C, CLINES C, CLINES7-ST-X C, CLINES7-ST-Y C, CLINES8-ALT C, CLINES C, CLINES8-ST-X C, CLINES8-ST-Y C, CLINES9-ALT C, CLINES C, CLINES9-ST-X C, CLINES9-ST-Y C, CIRTOP-ALT C, CIRTOP C, CIRTOP-ST-X C, CIRTOP-ST-Y C, CIRBOT-ALT C, CIRBOT C, CIRBOT-ST-X C, CIRBOT-ST-Y C, FF C, ( BORDER ETAB EQU'S 10:55 12/04/86 ) 82 EQU BORDER0-ALT F9 EQU BORDER0-ST-X 20 EQU BORDER0-ST-Y 83 EQU BORDRR0-ALT 97 EQU BORDRR0-ST-X 20 EQU BORDRR0-ST-Y 82 EQU BORDER1-ALT F9 EQU BORDER1-ST-X 30 EQU BORDER1-ST-Y 83 EQU BORDRR1-ALT 97 EQU BORDRR1-ST-X 30 EQU BORDRR1-ST-Y 82 EQU BORDER2-ALT F9 EQU BORDER2-ST-X 40 EQU BORDER2-ST-Y 83 EQU BORDRR2-ALT 97 EQU BORDRR2-ST-X 40 EQU BORDRR2-ST-Y 82 EQU BORDER3-ALT F9 EQU BORDER3-ST-X 90 EQU BORDER3-ST-Y 83 EQU BORDRR3-ALT 97 EQU BORDRR3-ST-X 90 EQU BORDRR3-ST-Y 82 EQU BORDER4-ALT F9 EQU BORDER4-ST-X A0 EQU BORDER4-ST-Y 83 EQU BORDRR4-ALT 97 EQU BORDRR4-ST-X A0 EQU BORDRR4-ST-Y 82 EQU BORDER5-ALT F9 EQU BORDER5-ST-X B0 EQU BORDER5-ST-Y 83 EQU BORDRR5-ALT 97 EQU BORDRR5-ST-X B0 EQU BORDRR5-ST-Y ( 10:59 12/04/86 ) 82 EQU BORDERH-ALT F9 EQU BORDERH-ST-X 50 EQU BORDERH-ST-Y 83 EQU BORDRRH-ALT 97 EQU BORDRRH-ST-X 50 EQU BORDRRH-ST-Y 82 EQU BORDERL-ALT F9 EQU BORDERL-ST-X 88 EQU BORDERL-ST-Y 83 EQU BORDRRL-ALT 97 EQU BORDRRL-ST-X 88 EQU BORDRRL-ST-Y HERE EQU BORDER-ETAB-ROM BORDER0-ALT C, SBORDER C, BORDER0-ST-X C, BORDER0-ST-Y C, BORDRR0-ALT C, SBORDER C, BORDRR0-ST-X C, BORDRR0-ST-Y C, BORDER1-ALT C, SBORDER C, BORDER1-ST-X C, BORDER1-ST-Y C, BORDRR1-ALT C, SBORDER C, BORDRR1-ST-X C, BORDRR1-ST-Y C, BORDER2-ALT C, SBORDER C, BORDER2-ST-X C, BORDER2-ST-Y C, BORDRR2-ALT C, SBORDER C, BORDRR2-ST-X C, BORDRR2-ST-Y C, BORDER3-ALT C, SBORDER C, BORDER3-ST-X C, BORDER3-ST-Y C, BORDRR3-ALT C, SBORDER C, BORDRR3-ST-X C, BORDRR3-ST-Y C, ( 11:57 12/04/86 ) BORDER4-ALT C, SBORDER C, BORDER4-ST-X C, BORDER4-ST-Y C, BORDRR4-ALT C, SBORDER C, BORDRR4-ST-X C, BORDRR4-ST-Y C, BORDER5-ALT C, SBORDER C, BORDER5-ST-X C, BORDER5-ST-Y C, BORDRR5-ALT C, SBORDER C, BORDRR5-ST-X C, BORDRR5-ST-Y C, BORDERH-ALT C, GBORDER C, BORDERH-ST-X C, BORDERH-ST-Y C, BORDRRH-ALT C, GBORDER C, BORDRRH-ST-X C, BORDRRH-ST-Y C, BORDERL-ALT C, GBORDER C, BORDERL-ST-X C, BORDERL-ST-Y C, BORDRRL-ALT C, GBORDER C, BORDRRL-ST-X C, BORDRRL-ST-Y C, 86 C, TBORDER C, 6 C, 20 C, 87 C, TBORDER C, 7E C, 20 C, ( TOP) 86 C, BBORDER C, 6 C, B8 C, 87 C, BBORDER C, 7E C, B8 C, ( BOT) 88 C, ULCORN C, 1 C, 20 C, 89 C, URCORN C, 97 C, 20 C, 88 C, LLCORN C, 1 C, B8 C, 89 C, LRCORN C, 97 C, B8 C, 8C C, ULDOT C, 09 C, 28 C, 8D C, URDOT C, 95 C, 28 C, 8C C, LLDOT C, 09 C, B0 C, 8D C, LRDOT C, 95 C, B0 C, FF C, ( TITLE-SCREEN ROM-ETAB 12:03 04/15/87 ) HERE EQU TITLE-ETAB-ROM 82 C, 1PLAYERR C, 3E C, 60 C, 83 C, 2PLAYERB C, 3E C, 80 C, 84 C, EXPERTB C, 5B C, 70 C, 85 C, NOVICER C, 30 C, 70 C, 80 C, ATA87 C, 0F C, B0 C, 81 C, BALLF C, 42 C, B0 C, 82 C, BALLB C, 72 C, B0 C, 80 C, HAT C, 0D C, 10 C, 81 C, TRICK C, 31 C, 28 C, FF C, ( IMAGE TABLE FOR BLUE PLAYER - PAL0 -HATRICK 11:04 11/21/86 ) HERE EQU PLAYERS-ITAB 0000 C, 001C C, 00D4 C, 0003 C, 00 EQU BPFS 0004 C, 001C C, 00D4 C, 0003 C, 01 EQU BPFSR 0008 C, 001C C, 00D4 C, 0003 C, 02 EQU BPFSL 000C C, 001C C, 00D4 C, 0003 C, 03 EQU BPFN 0010 C, 001C C, 00D4 C, 0003 C, 04 EQU BPFNR 0014 C, 001C C, 00D4 C, 0003 C, 05 EQU BPFNL 0018 C, 001C C, 00D3 C, 0003 C, 06 EQU BPFE 001C C, 001C C, 00D3 C, 0003 C, 07 EQU BPFER 0020 C, 001C C, 00D3 C, 0003 C, 08 EQU BPFEL 0024 C, 001C C, 00D3 C, 0003 C, 09 EQU BPFW 0028 C, 001C C, 00D3 C, 0003 C, 0A EQU BPFWR 002C C, 001C C, 00D3 C, 0003 C, 0B EQU BPFWL ( IMAGE TABLE FOR BLUE PLAYER - PAL0 - CONT. 11:04 11/21/86 ) 0030 C, 001D C, 00D8 C, 0004 C, 0C EQU BPFNW 0033 C, 001D C, 00D8 C, 0004 C, 0D EQU BPFNWR 0036 C, 001D C, 00D8 C, 0004 C, 0E EQU BPFNWL 0039 C, 001D C, 00D8 C, 0004 C, 0F EQU BPFSE 003C C, 001D C, 00D8 C, 0004 C, 10 EQU BPFSER 003F C, 001D C, 00D8 C, 0004 C, 11 EQU BPFSEL 0042 C, 001B C, 00D1 C, 0003 C, 12 EQU BPFSW 0047 C, 001B C, 00D1 C, 0003 C, 13 EQU BPFSWR 004C C, 001B C, 00D1 C, 0003 C, 14 EQU BPFSWL 0051 C, 001B C, 00D1 C, 0003 C, 15 EQU BPFNE 0056 C, 001B C, 00D1 C, 0003 C, 16 EQU BPFNER 005B C, 001B C, 00D1 C, 0003 C, 17 EQU BPFNEL ( IMAGE TABLE FOR REDD PLAYER - PAL1 -HATRICK 11:04 11/21/86 ) 0000 C, 003C C, 00D4 C, 0003 C, 18 EQU RPFS 0004 C, 003C C, 00D4 C, 0003 C, 19 EQU RPFSR 0008 C, 003C C, 00D4 C, 0003 C, 1A EQU RPFSL 000C C, 003C C, 00D4 C, 0003 C, 1B EQU RPFN 0010 C, 003C C, 00D4 C, 0003 C, 1C EQU RPFNR 0014 C, 003C C, 00D4 C, 0003 C, 1D EQU RPFNL 0018 C, 003C C, 00D3 C, 0003 C, 1E EQU RPFE 001C C, 003C C, 00D3 C, 0003 C, 1F EQU RPFER 0020 C, 003C C, 00D3 C, 0003 C, 20 EQU RPFEL 0024 C, 003C C, 00D3 C, 0003 C, 21 EQU RPFW 0028 C, 003C C, 00D3 C, 0003 C, 22 EQU RPFWR 002C C, 003C C, 00D3 C, 0003 C, 23 EQU RPFWL ( IMAGE TABLE FOR REDD PLAYER - PAL1 - CONT. 11:04 11/21/86 ) 0030 C, 003D C, 00D8 C, 0004 C, 24 EQU RPFNW 0033 C, 003D C, 00D8 C, 0004 C, 25 EQU RPFNWR 0036 C, 003D C, 00D8 C, 0004 C, 26 EQU RPFNWL 0039 C, 003D C, 00D8 C, 0004 C, 27 EQU RPFSE 003C C, 003D C, 00D8 C, 0004 C, 28 EQU RPFSER 003F C, 003D C, 00D8 C, 0004 C, 29 EQU RPFSEL 0042 C, 003B C, 00D1 C, 0003 C, 2A EQU RPFSW 0047 C, 003B C, 00D1 C, 0003 C, 2B EQU RPFSWR 004C C, 003B C, 00D1 C, 0003 C, 2C EQU RPFSWL 0051 C, 003B C, 00D1 C, 0003 C, 2D EQU RPFNE 0056 C, 003B C, 00D1 C, 0003 C, 2E EQU RPFNER 005B C, 003B C, 00D1 C, 0003 C, 2F EQU RPFNEL ( IMAGE TABLE FOR GOALIES PAL0 PAL1 11:04 11/21/86 ) 0060 C, 001E C, 00CE C, 0002 C, 30 EQU BGFE 0062 C, 001E C, 00CE C, 0002 C, 31 EQU BGFNE 0064 C, 001E C, 00CE C, 0002 C, 32 EQU BGFSE 0066 C, 001E C, 00CE C, 0002 C, 33 EQU BGFW 0068 C, 001E C, 00CE C, 0002 C, 34 EQU BGFSW 006A C, 001E C, 00CE C, 0002 C, 35 EQU BGFNW 0060 C, 003E C, 00CE C, 0002 C, 36 EQU RGFE 0062 C, 003E C, 00CE C, 0002 C, 37 EQU RGFNE 0064 C, 003E C, 00CE C, 0002 C, 38 EQU RGFSE 0066 C, 003E C, 00CE C, 0002 C, 39 EQU RGFW 0068 C, 003E C, 00CE C, 0002 C, 3A EQU RGFSW 006A C, 003E C, 00CE C, 0002 C, 3B EQU RGFNW ( IMAGE TABLE FOR SCOREBOARD 16:21 11/26/86 ) 006C C, 0048 C, 00D0 C, 0003 C, 3C EQU SCOREA 0084 C, 0056 C, 00D0 C, 0003 C, 3D EQU SCOREB ( WHITE NUMBERS 0 - 9 PAL 2 P2C1=WHITE 13:25 12/02/86 ) 0000 C, 005F C, 00EE C, 0001 C, 3E EQU W0 0001 C, 005F C, 00EE C, 0001 C, 3F EQU W1 0002 C, 005F C, 00EE C, 0001 C, 40 EQU W2 0003 C, 005F C, 00EE C, 0001 C, 41 EQU W3 0004 C, 005F C, 00EE C, 0001 C, 42 EQU W4 0005 C, 005F C, 00EE C, 0001 C, 43 EQU W5 0006 C, 005F C, 00EE C, 0001 C, 44 EQU W6 0007 C, 005F C, 00EE C, 0001 C, 45 EQU W7 0008 C, 005F C, 00EE C, 0001 C, 46 EQU W8 0009 C, 005F C, 00EE C, 0001 C, 47 EQU W9 ( YELLOW NUMBERS 0 - 9 PAL 3 P3C1=YELLOW 13:25 12/02/86 ) 0000 C, 007F C, 00EE C, 0001 C, 48 EQU Y0 0001 C, 007F C, 00EE C, 0001 C, 49 EQU Y1 0002 C, 007F C, 00EE C, 0001 C, 4A EQU Y2 0003 C, 007F C, 00EE C, 0001 C, 4B EQU Y3 0004 C, 007F C, 00EE C, 0001 C, 4C EQU Y4 0005 C, 007F C, 00EE C, 0001 C, 4D EQU Y5 0006 C, 007F C, 00EE C, 0001 C, 4E EQU Y6 0007 C, 007F C, 00EE C, 0001 C, 4F EQU Y7 0008 C, 007F C, 00EE C, 0001 C, 50 EQU Y8 0009 C, 007F C, 00EE C, 0001 C, 51 EQU Y9 000A C, 0058 C, 00EC C, 0001 C, 52 EQU VS-CTR ( P2) 0012 C, 005D C, 00EC C, 0001 C, 53 EQU VS-RED ( P2) ( IMAGE TABLE ENTRIES FOR GOALS AND NET 11:35 12/03/86 ) 008F C, 001D C, 00D0 C, 0003 C, 54 EQU UPGOALB ( PAL0) 0093 C, 001D C, 00D0 C, 0003 C, 55 EQU LOGOALB 008E C, 003D C, 00D0 C, 0003 C, 56 EQU UPGOALR ( PAL1) 0092 C, 003D C, 00D0 C, 0003 C, 57 EQU LOGOALR 0096 C, 007D C, 00D0 C, 0003 C, 58 EQU UPNET ( PAL3) 0099 C, 007D C, 00D0 C, 0003 C, 59 EQU LONET 0015 C, 001E C, 00EE C, 0001 C, 5A EQU B-TWIRLA ( PAL0) 0017 C, 001E C, 00EE C, 0001 C, 5B EQU B-TWIRLB 0019 C, 001E C, 00EE C, 0001 C, 5C EQU B-TWIRLC 001B C, 001E C, 00EE C, 0001 C, 5D EQU B-TWIRLD 0015 C, 003E C, 00EE C, 0001 C, 5E EQU R-TWIRLA ( PAL1) 0017 C, 003E C, 00EE C, 0001 C, 5F EQU R-TWIRLB 0019 C, 003E C, 00EE C, 0001 C, 60 EQU R-TWIRLC 001B C, 003E C, 00EE C, 0001 C, 61 EQU R-TWIRLD ( CENTERLINES IMAGE TABLE ENTRY 14:47 12/03/86 ) 001D C, 0053 C, 00F0 C, 0002 C, 62 EQU CLINES ( PAL2) 009C C, 0076 C, 00D8 C, 0004 C, 63 EQU CIRTOP ( PAL3) 00A6 C, 0076 C, 00D8 C, 0004 C, 64 EQU CIRBOT 002A C, 009C C, 00F0 C, 0002 C, 65 EQU SBORDER ( PAL4) 002A C, 00BC C, 00F0 C, 0001 C, 66 EQU GBORDER ( PAL5) 002E C, 0082 C, 00E8 C, 0001 C, 67 EQU TBORDER ( PAL4) 004C C, 0082 C, 00E8 C, 0001 C, 68 EQU BBORDER ( PAL4) 006A C, 009E C, 00E8 C, 0001 C, 69 EQU ULCORN ( PAL4) 006C C, 009D C, 00E8 C, 0001 C, 6A EQU URCORN ( P4) 006F C, 009E C, 00E8 C, 0001 C, 6B EQU LLCORN ( P4) 0071 C, 009D C, 00E8 C, 0001 C, 6C EQU LRCORN ( P4) 0074 C, 009F C, 00E8 C, 0001 C, 6D EQU ULDOT ( P4) 0075 C, 009F C, 00E8 C, 0001 C, 6E EQU URDOT ( P4) 0076 C, 009F C, 00E8 C, 0001 C, 6F EQU LLDOT ( P4) 0077 C, 009F C, 00E8 C, 0001 C, 70 EQU LRDOT ( P4) ( MORE IMAGE - TABLE ENTRIES 14:47 12/03/86 ) 0078 C, 007F C, 00F0 C, 0001 C, 71 EQU PUCK ( P1) 00B0 C, 007D C, 00D7 C, 0003 C, 72 EQU ZAM1 ( P3) 00B3 C, 007D C, 00D7 C, 0003 C, 73 EQU ZAM2 ( P3) 00B6 C, 003E C, 00CB C, 0002 C, 74 EQU FELLA1 ( P0) 00B8 C, 003E C, 00CB C, 0002 C, 75 EQU FELLA2 ( P0) 00BA C, 003E C, 00CB C, 0002 C, 76 EQU FELLA3 ( P0) 00BC C, 003E C, 00CB C, 0002 C, 77 EQU FELLA4 ( P0) 00BE C, 003E C, 00CB C, 0002 C, 78 EQU FELLA5 ( P0) 0079 C, 0017 C, 00E8 C, 0001 C, 79 EQU GOVER ( P0) 0082 C, 0017 C, 00E8 C, 0001 C, 7A EQU OVERT ( P0) 00C0 C, 004F C, 00D8 C, 0004 C, 7B EQU HAT ( P2) 00D1 C, 0048 C, 00D8 C, 0004 C, 7C EQU TRICK ( P2) ( MORE IMAGE TABLE ENTRIES 11:33 04/16/87 ) 008B C, 0016 C, 00E8 C, 0001 C, 7D EQU 1PLAYERB ( P0) 008B C, 00B6 C, 00E8 C, 0001 C, 7E EQU 1PLAYERR ( P1) 0095 C, 0016 C, 00E8 C, 0001 C, 7F EQU 2PLAYERB ( P0) 0095 C, 00B6 C, 00E8 C, 0001 C, 80 EQU 2PLAYERR ( P1) 009F C, 001A C, 00E8 C, 0001 C, 81 EQU EXPERTB ( P0) 009F C, 00BA C, 00E8 C, 0001 C, 82 EQU EXPERTR ( P1) 00A5 C, 001A C, 00E8 C, 0001 C, 83 EQU NOVICEB ( P0) 00A5 C, 00BA C, 00E8 C, 0001 C, 84 EQU NOVICER ( P1) 00AB C, 0016 C, 00E8 C, 0001 C, 85 EQU ATA87 ( P0) 00B5 C, 0006 C, 00E8 C, 0001 C, 86 EQU BALLF ( P0) 00CF C, 0016 C, 00E8 C, 0001 C, 87 EQU BALLB ( P0) 002E C, 00E1 C, 00E8 C, 0001 C, 88 EQU LONG-ICE ( PAL7) 002E C, 00FB C, 00E8 C, 0001 C, 89 EQU SHORT-ICE ( PAL7) 002E C, 00DD C, 00E8 C, 0001 C, 8A EQU NET-ICE ( PAL6) ( PLAYER-FRAME-DISPLAY 11:00 04/01/87 ) CODE (PLAYER-FRAME-DISPLAY) ( --- ) DEX DL-TABLE-START >HI # LDA TOS STA DEX DL-TABLE-START >LO # LDA TOS STA DEX PLAYERS-ITAB >HI # LDA TOS STA DEX PLAYERS-ITAB >LO # LDA TOS STA DEX PLAYERS-ETAB >HI # LDA TOS STA DEX PLAYERS-ETAB >LO # LDA TOS STA ' (NEW-GRAPHICS) >BODY JMP ( N N N--) END-CODE CODE PLAYER-FRAME-DISPLAY ' (PLAYER-FRAME-DISPLAY) >BODY JSR NEXT JMP END-CODE ( PLAYER-FRAME RTNS 11:00 04/01/87 ) CODE BLUE-PLAYER-FRAME ( IMAGE DISPLACEMENT TABLE ENTRY ADDR ) ( BLUE-IMAGE# C, REDD-IMAGE# C, ) TOS X) LDA BLUE-IMAGE# STA 8A # LDA BLUE-ALTER STA 8C # LDA BLUE-GOALY-ALTER STA ' (PLAYER-FRAME-DISPLAY) >BODY JSR INX INX NEXT JMP END-CODE CODE REDD-PLAYER-FRAME ( IMAGE DISPLACEMENT TABLE ENTRY ADDR ) ( IMAGE ADDRESS ) TOS X) LDA REDD-IMAGE# STA 8B # LDA REDD-ALTER STA 8D # LDA REDD-GOALY-ALTER STA ' (PLAYER-FRAME-DISPLAY) >BODY JSR INX INX NEXT JMP END-CODE ( DIRECT-ERASE RTNS FOR PLAYERS 10:59 04/01/87 ) CODE BLUE-ERASE 0 # LDY DEX DEX 0A # LDA TOS STA TOS 1+ STY DEX DEX 03 # LDA TOS STA TOS 1+ STY DEX DEX 15 # LDA TOS STA TOS 1+ STY ' (DIRECT-ERASE) >BODY JSR NEXT JMP END-CODE CODE REDD-ERASE 0 # LDY DEX DEX 0B # LDA TOS STA TOS 1+ STY DEX DEX 03 # LDA TOS STA TOS 1+ STY DEX DEX 15 # LDA TOS STA TOS 1+ STY ' (DIRECT-ERASE) >BODY JSR NEXT JMP END-CODE ( JOYSTICK READER - BLUE 10:59 04/01/87 ) HERE EQU ATARI->IBM ( JOYSTICK CONVERSION TABLE ) 3 C, 4 C, 5 C, 2 C, 8 C, 6 C, 1 C, 0 C, 7 C, CODE (?BLUE-ACTION) ( ---N) DEX TOS STY DEX TOS STY DEX TOS STY CLC DX0 LDY INY TYA TOS STY A ASL TOS ADC DY0 LDY INY TOS STY TOS ADC INX TAY ATARI->IBM ,Y LDA TOS STA RTS END-CODE CODE ?BLUE-ACTION ' (?BLUE-ACTION) >BODY JSR NEXT JMP END-CODE ( 0 3 6 ) ( 1 4 7 ) ( 2 5 8 ) ( JOYSTICK READER - RED 10:59 04/01/87 ) CODE ?REDD-ACTION DEX TOS STY DEX TOS STY DEX TOS STY CLC DX1 LDY INY TYA TOS STY A ASL TOS ADC DY1 LDY INY TOS STY TOS ADC INX TAY ATARI->IBM ,Y LDA TOS STA NEXT JMP END-CODE ( 3 2 1 ) ( 4 8 0 ) ( 5 6 7 ) ( DIRECT ERASE RTNS FOR GOALIES 13:06 12/01/86 ) CODE REDD-GOALY-ERASE 0 # LDY DEX DEX 0D # LDA TOS STA TOS 1+ STY DEX DEX 06 # LDA TOS STA TOS 1+ STY DEX DEX 0F # LDA TOS STA TOS 1+ STY ' (DIRECT-ERASE) >BODY JSR NEXT JMP END-CODE CODE BLUE-GOALY-ERASE 0 # LDY DEX DEX 0C # LDA TOS STA TOS 1+ STY DEX DEX 06 # LDA TOS STA TOS 1+ STY DEX DEX 0F # LDA TOS STA TOS 1+ STY ' (DIRECT-ERASE) >BODY JSR NEXT JMP END-CODE ( PLAYERS-ETAB-INIT 11:01 04/01/87 ) CODE PLAYERS-ETAB-INIT ( ROM ELEMTAB/RAM ELEMTAB/LEN --- ) NOS LDA PHA NOS 1+ LDA PHA ( SAVE ELEM-TAB) 1$: TOS LDA TOS 1+ ORA 2$ BNE 3$ JMP ( ADDR) 2$: TOS 4 + X) LDA TOS 2 + X) STA TOS 4 + INC 0= IF TOS 5 + INC THEN TOS 2 + INC 0= IF TOS 3 + INC THEN TOS LDA 0= IF TOS 1+ DEC THEN TOS DEC 1$ JMP 3$: DEX DL-TABLE-START >HI # LDA TOS STA DEX DL-TABLE-START >LO # LDA TOS STA DEX PLAYERS-ITAB >HI # LDA TOS STA DEX PLAYERS-ITAB >LO # LDA TOS STA DEX DEX PLA TOS 1+ STA PLA TOS STA ' (NEW-GRAPHICS) >BODY JSR ( N N N--) POP3 JMP END-CODE ( PUCK DIRECT ERASE AND FRAME RTNS 11:01 04/01/87 ) CODE PUCK-FRAME PUCK # LDA PUCK-IMAGE# STA 8E # LDA PUCK-ALTER STA ( ' (PLAYER-FRAME-DISPLAY >BODY JSR ) NEXT JMP END-CODE CODE PUCK-ERASE 0 # LDY DEX DEX 0E # LDA TOS STA TOS 1+ STY DEX DEX 03 # LDA TOS STA TOS 1+ STY DEX DEX 15 # LDA TOS STA TOS 1+ STY ' (DIRECT-ERASE) >BODY JSR NEXT JMP END-CODE ( OBJECTS/GRAPHICS INIT RTNS 11:02 04/01/87 ) : K-CLS GNE0 18 F DL-INIT ; ( ZONE 0-23 15 HEADERS) : NULLY ; : PLAYERS-INIT PLAYERS-ETAB-ROM PLAYERS-ETAB 17 PLAYERS-ETAB-INIT ; : SCOREBOARD-INIT SCOREBOARD-ETAB-ROM SCOREBOARD-ETAB 1A PLAYERS-ETAB-INIT ; : NUMBERS-INIT NUMBERS-ETAB-ROM NUMBERS-ETAB 2F PLAYERS-ETAB-INIT ; : NETGOAL-INIT NETGOAL-ETAB-ROM NETGOAL-ETAB 33 PLAYERS-ETAB-INIT ; : CENTERLINES-INIT CENTERLINES-ETAB-ROM CENTERLINES-ETAB 33 PLAYERS-ETAB-INIT ; : BORDER-INIT BORDER-ETAB-ROM BORDER-ETAB 73 PLAYERS-ETAB-INIT ; ( BACKGROUND-INIT DLI-COLORS 18:21 05/11/87 ) CODE DLI-COLORS BG-SCOREAREA STY 0A # LDA BG-TOP-ICE STA NEXT JMP END-CODE : BACKGROUND-INIT DLI-COLORS K-CLS SCOREBOARD-INIT NUMBERS-INIT NETGOAL-INIT CENTERLINES-INIT BORDER-INIT PLAYERS-INIT ; HERE EQU main-loop 0 , : NEW-GAME S0 @ SP! R0 @ RP! main-loop PERFORM ; HERE EQU select-rtn 0 , : SELECT-RTN select-rtn PERFORM ; \ No newline at end of file
diff --git a/HOCKEY.SCR b/HOCKEY.SCR
new file mode 100644
index 0000000..3dc0dcd
--- /dev/null
+++ b/HOCKEY.SCR
@@ -0,0 +1 @@
+( HOCKEY HI-LEVEL MAF JDS KAL PMA JJT 16:09 08/27/87 ) ( Last change: Screen 027 MAF 10:09 04/09/87 ) .NOLIST -HEADERS ( SQUARE TABLE 1/2 12:41 02/12/87 ) DECIMAL L: SQUARE-TABLE 00000 , 00001 , 00004 , 00009 , 00016 , 00025 , 00036 , 00049 , 00064 , 00081 , 00100 , 00121 , 00144 , 00169 , 00196 , 00225 , 00256 , 00289 , 00324 , 00361 , 00400 , 00441 , 00484 , 00529 , 00576 , 00625 , 00676 , 00729 , 00784 , 00841 , 00900 , 00961 , 01024 , 01089 , 01156 , 01225 , 01296 , 01369 , 01444 , 01521 , 01600 , 01681 , 01764 , 01849 , 01936 , 02025 , 02116 , 02209 , 02304 , 02401 , 02500 , 02601 , 02704 , 02809 , 02916 , 03025 , 03136 , 03249 , 03364 , 03481 , 03600 , 03721 , 03844 , 03969 , 04096 , 04225 , 04356 , 04489 , 04624 , 04761 , 04900 , 05041 , 05184 , 05329 , 05476 , 05625 , 05776 , 05929 , 06084 , 06241 , 06400 , 06561 , 06724 , 06889 , 07056 , 07225 , 07396 , 07569 , 07744 , 07921 , 08100 , 08281 , 08464 , 08649 , 08836 , 09025 , 09216 , 09409 , ( SQUARE TABLE 2/2 12:41 02/12/87 ) 09604 , 09801 , 10000 , 10201 , 10404 , 10609 , 10816 , 11025 , 11236 , 11449 , 11664 , 11881 , 12100 , 12321 , 12544 , 12769 , 12996 , 13225 , 13456 , 13689 , 13924 , 14161 , 14400 , 14641 , 14884 , 15129 , 15376 , 15625 , 15876 , 16129 , 16384 , 16641 , 16900 , 17161 , 17424 , 17689 , 17956 , 18225 , 18496 , 18769 , 19044 , 19321 , 19600 , 19881 , 20164 , 20449 , 20736 , 21025 , 21316 , 21609 , 21904 , 22201 , 22500 , 22801 , 23104 , 23409 , 23716 , 24025 , 24336 , 24649 , 24964 , 25281 , 25600 , 25921 , 26244 , 26569 , 26896 , 27225 , 27556 , 27889 , 28224 , 28561 , 28900 , 29241 , 29584 , 29929 , 30276 , 30625 , 30976 , 31329 , 31684 , 32041 , 32400 , 32761 , 33124 , 33489 , 33856 , 34225 , 34596 , 34969 , 35344 , 35721 , 36100 , 36481 , 36864 , 37249 , 37636 , 38025 , 38416 , 38809 , 39204 , 39601 , 40000 , ( RAM LOCATIONS FOR GAME PLAY 11:18 02/05/87 ) : SQUARE 2* SQUARE-TABLE + @ ; END-TABLE-PLUG 3 + EQU PLAYER1 PLAYER1 15 + EQU PLAYER2 PLAYER2 15 + EQU puck puck 15 + EQU SCORE1 SCORE1 2 + EQU SCORE2 SCORE2 2 + EQU SAVES1 SAVES1 2 + EQU SAVES2 SAVES2 2+ EQU WHIZ-DONE WHIZ-DONE 2 + EQU WHIZ-COUNT ( 12:00 02/19/87 ) WHIZ-COUNT 2+ EQU DX DX 2+ EQU DY DY 2+ EQU SHOOTFLAG1 SHOOTFLAG1 2+ EQU SHOOTFLAG2 SHOOTFLAG2 2+ EQU OLDJOY1 OLDJOY1 1+ EQU OLDJOY2 OLDJOY2 1+ EQU SKILL SKILL 1+ EQU GOALIE1-Y GOALIE1-Y 2+ EQU GOALIE2-Y GOALIE2-Y 2+ EQU CYCLE# CYCLE# 2+ EQU OLD-XY OLD-XY 4 + EQU END-OF-RAM ( ANIMATION TABLES 13:03 02/12/87 ) ( ADDRESSED BY ORIENTATION * 4 + ANIMATION 3 AND + ) L: PLAYER2-IMAGES RPFE C, RPFER C, RPFE C, RPFEL C, RPFNE C, RPFNER C, RPFNE C, RPFNEL C, RPFN C, RPFNR C, RPFN C, RPFNL C, RPFNW C, RPFNWR C, RPFNW C, RPFNWL C, RPFW C, RPFWR C, RPFW C, RPFWL C, RPFSW C, RPFSWR C, RPFSW C, RPFSWL C, RPFS C, RPFSR C, RPFS C, RPFSL C, RPFSE C, RPFSER C, RPFSE C, RPFSEL C, ( ANIMATION TABLES 13:03 02/12/87 ) ( ADDRESSED BY ORIENTATION * 4 + ANIMATION 3 AND + ) L: PLAYER1-IMAGES BPFE C, BPFER C, BPFE C, BPFEL C, BPFNE C, BPFNER C, BPFNE C, BPFNEL C, BPFN C, BPFNR C, BPFN C, BPFNL C, BPFNW C, BPFNWR C, BPFNW C, BPFNWL C, BPFW C, BPFWR C, BPFW C, BPFWL C, BPFSW C, BPFSWR C, BPFSW C, BPFSWL C, BPFS C, BPFSR C, BPFS C, BPFSL C, BPFSE C, BPFSER C, BPFSE C, BPFSEL C, ( 256/ 256* 13:46 08/27/87 ) CODE 256/ ( note: ROUNDS & UNSIGNED! jjt) TOS 1+ LDY TOS LDA 0< IF INY THEN TOS STY 0 # LDA TOS 1+ STA NEXT JMP END-CODE CODE 256* TOS LDA TOS 1+ STA TOS STY NEXT JMP END-CODE ( HOCKEY LIMIT PARAMETERS/EQUATES 13:50 02/19/87 ) DECIMAL 4 EQU DIAM ( PUCK DIAMETER ) 33 EQU LOG(FAT) ( GIRTH OF PLAYER ) 30 ( 30 ) EQU PUCK-STICK-THRESHOLD 120 EQU PLAYER-PLAYER-THRESHOLD 08 256 * EQU LEFT-LINE 151 256 * EQU RIGHT-LINE 40 256 * EQU TOP-LINE 184 256 * EQU BOTTOM-LINE TOP-LINE 50 256 * + EQU GOAL-TOP BOTTOM-LINE 52 256 * - EQU GOAL-BOTTOM LEFT-LINE 5 256 * - EQU GOAL-LEFT RIGHT-LINE 5 256 * + EQU GOAL-RIGHT 12 256 * EQU GOAL-HEIGHT ( 24) 6 EQU GOAL-WIDTH LEFT-LINE GOAL-WIDTH 256 * + EQU GOAL1-X RIGHT-LINE GOAL-WIDTH 1 + 256 * - EQU GOAL2-X ( 18:20 05/11/87 ) 08 EQU LEFT-LINEH 151 EQU RIGHT-LINEH 40 EQU TOP-LINEH 184 EQU BOTTOM-LINEH TOP-LINEH 50 + EQU GOAL-TOPH BOTTOM-LINEH 52 - EQU GOAL-BOTTOMH LEFT-LINEH 5 - EQU GOAL-LEFTH RIGHT-LINEH 5 + EQU GOAL-RIGHTH 12 EQU GOAL-HEIGHTH ( 24) ( ANIMATOR 1/2 rev. jjt 09:03 08/27/87 ) : ANIMATOR PLAYER2 @XY V256/ REDD-Y C! REDD-X C! PLAYER2 @ORIENTATION 2* 2* PLAYER2-IMAGES + DX1 C@ DY1 C@ OR PLAYER2 @FLAG 2 AND OR IF PLAYER2-FEET C@ DUP 1+ PLAYER2-FEET C! 3 AND + DUP 3 AND 0= WHIZ-COUNT C@ 0= AND IF SKRITCH-SND THEN THEN ( no skritching while whizzing...) PLAYER1 @XY V256/ BLUE-Y C! BLUE-X C! PLAYER1 @ORIENTATION 2* 2* PLAYER1-IMAGES + DX0 C@ DY0 C@ OR PLAYER1 @FLAG 2 AND OR IF PLAYER1-FEET C@ DUP 1+ PLAYER1-FEET C! 3 AND + DUP 2+ 3 AND 0= WHIZ-COUNT C@ 0= AND IF SKRITCH-SND THEN THEN ( and less often at that! ) puck @XY V256/ PUCK-Y C! PUCK-X C! ( ANIMATOR 2/2 13:10 02/12/87 ) BEGIN ?VBLANK UNTIL BLUE-ERASE BLUE-GOALY-ERASE BLUE-PLAYER-FRAME BEGIN ?VBLANK 0= UNTIL BEGIN ?VBLANK UNTIL PUCK-ERASE PUCK-FRAME REDD-ERASE REDD-GOALY-ERASE REDD-PLAYER-FRAME ; ( GENERATE SQUARE TABLE 13:30 02/05/87 ) 0 .IF VARIABLE LINE# VARIABLE BLOCK# : MAKE-SQUARES 179 BLOCK# ! 2 LINE# ! 0 BEGIN DUP 7 MOD 0= IF 1 LINE# +! LINE# @ 15 > IF 1 LINE# ! 1 BLOCK# +! THEN THEN DUP DUP * 0 <# # # # # # #> ( N ADDR COUNT ) BLOCK# @ BLOCK UPDATE LINE# @ 64 * + ( N ADDR COUNT ADDR ) 3 PICK 7 MOD 8 * + DUP >R SWAP CMOVE ASCII , R> 6 + C! 1+ DUP 200 > UNTIL DROP FLUSH ; .THEN ( ANGLE 11:08 02/05/87 ) L: ANGLE-TAB 0 C, 6 C, 0 C, 2 C, 4 C, 6 C, 4 C, 2 C, 7 C, 7 C, 1 C, 1 C, 5 C, 5 C, 3 C, 3 C, 0 .IF : ANGLE ( X1 Y1 X2 Y2 ---- a ) ( algorithm courtesy Lee Actor) ( Bally Sente ) ROT - DY ! SWAP - DX ! ( Calculate deltax, deltay ) 0 DX @ DUP 0< IF NEGATE DX ! 4 OR ELSE DROP THEN DY @ DUP 0< IF NEGATE DY ! 2 OR ELSE DROP THEN DY @ DX @ > IF 1 OR DY @ DX @ 2* < IF 8 OR THEN ELSE DX @ DY @ 2* < IF 8 OR THEN THEN ANGLE-TAB + C@ ; .THEN ( ANGLE JDS 11:10 03/23/87 ) CODE (ANGLE) ( X1 Y1 X2 Y2 ---- a ) SEC TOS LDA TOS 4 + SBC DY STA TOS 1+ LDA TOS 5 + SBC DY 1+ STA ( DELTA Y FOUND ) SEC TOS 2+ LDA TOS 6 + SBC DX STA TOS 3 + LDA TOS 7 + SBC DX 1+ STA ( DELTA X FOUND ) TXA CLC 6 # ADC TAX TYA PHA ( PTR BYTE & XTRA STK) DX 1+ LDA 0< IF SEC TYA DX SBC DX STA TYA DX 1+ SBC DX 1+ STA PLA 4 # ORA PHA THEN ( IF LESS THAN 0 , TURN POSITIVE ) DY 1+ LDA 0< IF SEC TYA DY SBC DY STA TYA DY 1+ SBC DY 1+ STA PLA 2 # ORA PHA THEN ( IF LESS THAN 0 , TURN POSITIVE ) SEC DX LDA DY SBC DX 1+ LDA DY 1+ SBC ( CS: X >= Y ELSE Y > X ) CS NOT IF PLA 1 # ORA PHA DX 1+ LDA TOS 1+ STA DX LDA TOS STA TOS ASL TOS 1+ ROL ( DX 2*) SEC DY LDA TOS SBC DY 1+ LDA TOS 1+ SBC CS NOT IF ( DY<DX2*) PLA 8 # ORA PHA THEN ELSE ( ANGLE JDS 2/2 11:10 03/23/87 ) DY 1+ LDA TOS 1+ STA DY LDA TOS STA TOS ASL TOS 1+ ROL ( DY 2*) SEC DX LDA TOS SBC DX 1+ LDA TOS 1+ SBC CS NOT IF ( DX<DY2*) PLA 8 # ORA PHA THEN THEN ANGLE-TAB >HI # LDA TOS 1+ STA ANGLE-TAB >LO # LDA TOS STA PLA CLC TOS ADC TOS STA CS IF TOS 1+ INC THEN TOS X) LDA TOS STA TOS 1+ STY RTS END-CODE CODE ANGLE ' (ANGLE) >BODY JSR NEXT JMP END-CODE ( structures for players and puck 11:13 02/05/87 ) ( 2 = COMPUTER CONTROL ) : @TIMER 10 + C@ ; : !TIMER 10 + C! ; : @SHOOT-COUNT 12 + C@ ; : !SHOOT-COUNT 12 + C! ; : @POSSESSION 13 + C@ ; : !POSSESSION 13 + C! ; : @ANIMATION 14 + C@ ; : !ANIMATION 14 + C! ; ( 13:28 02/20/87 ) PROC X2@ ( ADDR -- D ) TOS LDA N STA TOS 1+ LDA N 1+ STA 0 # LDY DEX DEX N )Y LDA TOS STA INY N )Y LDA TOS 1+ STA INY N )Y LDA TOS 2+ STA INY N )Y LDA TOS 3 + STA NEXT JMP END-PROC PROC X2! ( D ADDR -- ) TOS LDA N STA TOS 1+ LDA N 1+ STA 0 # LDY INX INX TOS LDA N )Y STA INX INY TOS LDA N )Y STA INX INY TOS LDA N )Y STA INX INY TOS LDA N )Y STA INX NEXT JMP END-PROC ( @XY !XY @VELOCITY !VELOCITY 13:51 02/20/87 ) CODE @XY ( : @XY 4 + 2@ ; ( PLAYER --- X Y ) CLC 4 # LDA TOS ADC TOS STA TYA TOS 1+ ADC TOS 1+ STA X2@ JMP END-CODE CODE !XY ( : !XY 4 + 2! ; ( X Y PLAYER ---- ) CLC 4 # LDA TOS ADC TOS STA TYA TOS 1+ ADC TOS 1+ STA X2! JMP END-CODE CODE @VELOCITY X2@ JMP END-CODE CODE !VELOCITY X2! JMP END-CODE ( XC@ XC! @OREINTATION !ORIENTATION 14:00 02/20/87 ) PROC XC@ TOS X) LDA TOS STA TOS 1+ STY NEXT JMP END-PROC PROC XC! NOS LDA TOS X) STA POP2 JMP END-PROC CODE @ORIENTATION CLC 8 # LDA TOS ADC TOS STA CS IF TOS 1+ INC THEN XC@ JMP END-CODE CODE !ORIENTATION CLC 8 # LDA TOS ADC TOS STA CS IF TOS 1+ INC THEN XC! JMP END-CODE ( @FLAG !FLAG THUMP DECIMAL-INC 12:24 04/06/87 ) CODE @FLAG CLC 9 # LDA TOS ADC TOS STA CS IF TOS 1+ INC THEN XC@ JMP END-CODE CODE !FLAG CLC 9 # LDA TOS ADC TOS STA CS IF TOS 1+ INC THEN XC! JMP END-CODE CODE DECIMAL-INC TOS X) LDA SED CLC 1 # ADC CLD TOS X) STA INX INX NEXT JMP END-CODE ( RIGHT-LINE-CHECK MAF 10:05 04/09/87 ) 0 .IF : RIGHT-LINE-CHECK ( X Y --- RX TRUE/ FALSE ) OVER RIGHT-LINE U< IF 2DROP 0 EXIT THEN puck @VELOCITY SWAP NEGATE SWAP puck !VELOCITY DUP GOAL-TOP U< IF 2DROP [ RIGHT-LINE DIAM 256 * - ] LITERAL -1 EXIT THEN DUP GOAL-BOTTOM U> IF 2DROP [ RIGHT-LINE DIAM 256 * - ] LITERAL -1 EXIT THEN DROP ( X ) GOAL-RIGHT > IF 0. puck !VELOCITY [ GOAL-RIGHT DIAM 256 * - ] LITERAL -1 ELSE 0 THEN ; ( LEFT-LINE-CHECK 22:13 02/09/87 ) : LEFT-LINE-CHECK ( X Y --- LX TRUE/ FALSE ) OVER LEFT-LINE U> IF 2DROP 0 EXIT THEN puck @VELOCITY SWAP NEGATE SWAP puck !VELOCITY DUP GOAL-TOP U< IF 2DROP LEFT-LINE -1 EXIT THEN DUP GOAL-BOTTOM U> IF 2DROP LEFT-LINE -1 EXIT THEN DROP ( X ) GOAL-LEFT > IF 0. puck !VELOCITY GOAL-LEFT -1 ELSE 0 THEN ; ( CHECK-PUCK-COLLISION MAF 10:05 04/09/87 ) : CHECK-PUCK-COLLISION puck @XY DUP TOP-LINE U< IF DROP TOP-LINE 512 + puck !XY puck @VELOCITY NEGATE puck !VELOCITY BOUNCE-SND ELSE DUP BOTTOM-LINE DIAM 256* - U> IF DROP BOTTOM-LINE DIAM 256* - puck !XY puck @VELOCITY NEGATE puck !VELOCITY BOUNCE-SND ELSE 2DUP RIGHT-LINE-CHECK IF ROT DROP SWAP puck !XY BOUNCE-SND ELSE 2DUP LEFT-LINE-CHECK IF ROT DROP SWAP puck !XY BOUNCE-SND ELSE 2DROP THEN THEN THEN THEN ; .THEN ( SOUNDS ENTRANT FROM ASSEMBLY 14:48 05/13/87 ) PROC (PL/EDGE-SND) L-PL/EDGE # LDA ' START-SOUND >BODY JSR RTS END-PROC PROC (BOUNCE-SND) L-BOUNCE # LDA ' START-SOUND >BODY JSR RTS END-PROC ( PUCK COLLISION MAF 10:05 04/09/87 ) PROC NEGATE-YVELOCITY 0 # LDY 0 # LDA SEC OBJECT )Y SBC OBJECT )Y STA INY 0 # LDA OBJECT )Y SBC OBJECT )Y STA RTS END-PROC PROC NEGATE-XVELOCITY 2 # LDY 0 # LDA SEC OBJECT )Y SBC OBJECT )Y STA INY 0 # LDA OBJECT )Y SBC OBJECT )Y STA RTS END-PROC CODE (NEGATE-YVELOCITY) NEGATE-YVELOCITY JSR NEXT JMP END-CODE CODE (NEGATE-XVELOCITY) NEGATE-XVELOCITY JSR NEXT JMP END-CODE ( PUCK COLLISIONS CONTINUED 11:32 04/08/87 ) -1 .IF CODE CHECK-PUCK-COLLISION puck >HI # LDA OBJECT 1+ STA puck >LO # LDA OBJECT STA puck 5 + LDA ( Y ) TOP-LINEH # CMP CS NOT IF TOP-LINEH # LDA puck 5 + STA (BOUNCE-SND) JSR NEGATE-YVELOCITY JSR 0 # LDY OBJECT )Y LDA SEC 1 # SBC OBJECT )Y STA NEXT JMP THEN BOTTOM-LINEH DIAM - # CMP CS IF BOTTOM-LINEH DIAM - # LDA puck 5 + STA (BOUNCE-SND) JSR NEGATE-YVELOCITY JSR 0 # LDY OBJECT )Y LDA CLC 1 # ADC OBJECT )Y STA NEXT JMP THEN ( PUCK COLLISION RIGHT SIDE 11:35 04/08/87 ) puck 7 + LDA ( X ) RIGHT-LINEH # CMP CS IF puck 5 + LDA GOAL-TOPH # CMP ( IN THE GOAL?) ( NO ) CS NOT IF NEGATE-XVELOCITY JSR (BOUNCE-SND) JSR RIGHT-LINEH DIAM - DIAM - # LDA puck 7 + STA NEXT JMP THEN GOAL-BOTTOMH # CMP CS IF NEGATE-XVELOCITY JSR (BOUNCE-SND) JSR RIGHT-LINEH DIAM - DIAM - # LDA puck 7 + STA NEXT JMP THEN ( puck 7 + LDA ( X ) ( GOAL-RIGHTH # CMP ) ( 0< NOT IF ) 0 # LDA puck STA puck 1+ STA puck 2+ STA puck 3 + STA ( 0 VELOCITY) RIGHT-LINEH DIAM + # LDA puck 7 + STA ( THEN ) THEN ( PUCK COLLISION LEFT SIDE MAF 10:09 04/09/87 ) puck 7 + LDA ( X ) LEFT-LINEH # CMP CS NOT IF puck 5 + LDA GOAL-TOPH # CMP ( IN THE GOAL?) ( NO ) CS NOT IF NEGATE-XVELOCITY JSR (BOUNCE-SND) JSR LEFT-LINEH # LDA puck 7 + STA NEXT JMP THEN GOAL-BOTTOMH # CMP CS IF NEGATE-XVELOCITY JSR (BOUNCE-SND) JSR LEFT-LINEH # LDA puck 7 + STA NEXT JMP THEN ( GOAL!) ( puck 7 + LDA ( X ) ( GOAL-LEFTH # CMP ) ( CS IF ) 0 # LDA puck STA puck 1+ STA puck 2+ STA puck 3 + STA ( 0 VELOCITY) GOAL-LEFTH # LDA puck 7 + STA ( THEN ) THEN NEXT JMP END-CODE .THEN ( CHECK-PUCK-GOALIE 21:36 02/22/87 ) : CHECK-PUCK-GOALIE puck @XY DUP GOALIE1-Y @ 1+ U> OVER GOALIE1-Y @ GOAL-HEIGHT + U< AND 2 PICK GOAL1-X U< AND IF 2DROP puck @VELOCITY SWAP NEGATE SWAP puck !VELOCITY SAVES1 DECIMAL-INC UPDATE-SCORE SAVE-SND puck @XY SWAP DROP GOAL1-X SWAP puck !XY ELSE DUP GOALIE2-Y @ 1+ U> SWAP GOALIE2-Y @ GOAL-HEIGHT + U< AND SWAP GOAL2-X U> AND IF puck @VELOCITY SWAP NEGATE SWAP puck !VELOCITY SAVES2 DECIMAL-INC UPDATE-SCORE SAVE-SND puck @XY SWAP DROP GOAL2-X SWAP puck !XY THEN THEN ; ( 11:06 04/09/87 ) ( : V- ROT SWAP - >R - R> ; ) ( : V+ ROT + >R + R> ; ) CODE V+ ( V1 V2 ---- V1+V2 ) CLC TOS LDA NOS 2+ ADC NOS 2+ STA TOS 1+ LDA NOS 3 + ADC NOS 3 + STA CLC NOS LDA NOS 4 + ADC NOS 4 + STA NOS 1+ LDA NOS 5 + ADC NOS 5 + STA POP2 JMP END-CODE CODE V- ( V1 V2 ---- V1-V2 ) SEC NOS 2+ LDA TOS SBC NOS 2+ STA NOS 3 + LDA TOS 1+ SBC NOS 3 + STA SEC NOS 4 + LDA NOS SBC NOS 4 + STA NOS 5 + LDA NOS 1+ SBC NOS 5 + STA POP2 JMP END-CODE ( NORM-SQ as PROC 11:59 04/09/87 ) ( : NORM-SQ ABS SQUISH SQUARE SWAP ABS SQUISH SQUARE + ; ) PROC (NORM-SQ) TOS 1+ LDA 0< IF ( ABS ) SEC TYA TOS SBC TOS STA TYA TOS 1+ SBC TOS 1+ STA THEN 6 # LDY ( SQUISH- 7 0 DO 2/ LOOP 2* SQUARE + ) 1$: TOS 1+ LSR TOS ROR DEY 1$ BNE TOS LDA 254 # AND TOS STA CLC SQUARE-TABLE >LO # LDA TOS ADC N STA SQUARE-TABLE >HI # LDA TOS 1+ ADC N 1+ STA N )Y LDA TOS STA INY N )Y LDA TOS 1+ STA ( 14:32 04/09/87 ) NOS 1+ LDA 0< IF SEC 0 # LDY TYA NOS SBC NOS STA TYA NOS 1+ SBC NOS 1+ STA THEN 6 # LDY ( SQUISH-1 TO GO TO SQUARE ) 2$: NOS 1+ LSR NOS ROR DEY 2$ BNE NOS LDA 254 # AND NOS STA CLC SQUARE-TABLE >LO # LDA NOS ADC N STA SQUARE-TABLE >HI # LDA NOS 1+ ADC N 1+ STA CLC N )Y LDA TOS ADC NOS STA INY N )Y LDA TOS 1+ ADC NOS 1+ STA INX INX RTS ( POP JMP ) END-PROC CODE NORM-SQ (NORM-SQ) JSR NEXT JMP END-CODE ( NORM-SQ2 14:33 04/09/87 ) ( : NORM-SQ2 ABS 256/ SQUARE SWAP ABS 256/ SQUARE + ; ) CODE NORM-SQ2 TOS 1+ LDA 0< IF ( ABS ) SEC TYA TOS SBC TOS STA TYA TOS 1+ SBC TOS 1+ STA THEN 7 # LDY ( SQUISH- 7 0 DO 2/ LOOP 2* SQUARE + ) 1$: TOS 1+ LSR TOS ROR DEY 1$ BNE TOS LDA 254 # AND TOS STA CLC SQUARE-TABLE >LO # LDA TOS ADC N STA SQUARE-TABLE >HI # LDA TOS 1+ ADC N 1+ STA N )Y LDA TOS STA INY N )Y LDA TOS 1+ STA ( 14:32 04/09/87 ) NOS 1+ LDA 0< IF SEC 0 # LDY TYA NOS SBC NOS STA TYA NOS 1+ SBC NOS 1+ STA THEN 7 # LDY ( SQUISH-1 TO GO TO SQUARE ) 2$: NOS 1+ LSR NOS ROR DEY 2$ BNE NOS LDA 254 # AND NOS STA CLC SQUARE-TABLE >LO # LDA NOS ADC N STA SQUARE-TABLE >HI # LDA NOS 1+ ADC N 1+ STA CLC N )Y LDA TOS ADC NOS STA INY N )Y LDA TOS 1+ ADC NOS 1+ STA POP JMP END-CODE ( DECAY1 puck decelleration 15:03 04/09/87 ) ( : DECAY1 DUP 0< SWAP ABS DUP -4 SHIFT - SWAP IF NEGATE THEN ;)CODE DECAY1 TOS 1+ LDA 0< IF ( ABS ) 255 # LDA N 3 + STA SEC TYA TOS SBC TOS STA TYA TOS 1+ SBC TOS 1+ STA ELSE 00 # LDA N 3 + STA THEN TOS LDA N STA TOS 1+ LDA N 1+ STA 5 # LDY 1$: N 1+ LSR N ROR DEY 1$ BNE SEC TOS LDA N SBC TOS STA TOS 1+ LDA N 1+ SBC TOS 1+ STA N 3 + LDA 0< IF ( FIX SIGN UP ) SEC TYA TOS SBC TOS STA TYA TOS 1+ SBC TOS 1+ STA THEN NEXT JMP END-CODE ( DECAY2 player decelleration as CODE 15:14 04/09/87 ) ( : XDECAY2 DUP 0< SWAP ABS DUP 5 SHIFT SWAP 2* - -5 SHIFT SWAP IF NEGATE THEN ; ) CODE DECAY2 (DECAY2) JSR NEXT JMP END-CODE ( SLOW-DOWN-PUCK DECAY2 11:10 02/09/87 ) : SLOW-DOWN-PUCK puck @VELOCITY 2DUP NORM-SQ 25 > IF DECAY1 SWAP DECAY1 SWAP puck !VELOCITY ELSE 2DROP THEN ; ( DECAY2 player decelleration as PROC 15:14 04/09/87 ) ( : DECAY2 DUP 0< SWAP ABS DUP 5 SHIFT SWAP 2* - -5 SHIFT SWAP IF NEGATE THEN ; ) PROC (DECAY2) TOS 1+ LDA 0< IF ( ABS ) 255 # LDA N 3 + STA SEC TYA TOS SBC TOS STA TYA TOS 1+ SBC TOS 1+ STA ELSE 00 # LDA N 3 + STA THEN TOS LDA N STA TOS 1+ LDA N 1+ STA 4 # LDY 1$: N ASL N 1+ ROL DEY 1$ BNE TOS ASL TOS 1+ ROL ( 2* ) SEC N LDA TOS SBC TOS STA N 1+ LDA TOS 1+ SBC TOS 1+ STA 4 # LDY 2$: TOS 1+ LSR TOS ROR DEY 2$ BNE ( -5 SHIFT ) N 3 + LDA 0< IF ( FIX SIGN UP ) SEC TYA TOS SBC TOS STA TYA TOS 1+ SBC TOS 1+ STA THEN RTS END-PROC ( THUMP V256/ rounds it! JJT 09:27 08/27/87 ) ( : SQUISH 7 0 DO 2/ LOOP ; : UNSQUISH 7 SHIFT ; ) : RANDOM-SOUNDS CYCLE# C@ 63 AND 0= IF (RANDOM-SOUND) THEN ; : (RANDOM-SOUND) SYSTIMER C@ 3 AND CASE 0 OF BUGLE-SND ENDOF 1 OF HIWOLF-SND ENDOF 2 OF LOWOLF-SND ENDOF 3 OF UPWHIS-SND ENDOF UPWHIS-SND ENDCASE ; CODE V256/ ( N1 N2 --- N1/256 N2/256 modified--rounded) TOS 1+ LDY TOS LDA 0< IF INY THEN TOS STY NOS 1+ LDY NOS LDA 0< IF INY THEN NOS STY 0 # LDA TOS 1+ STA NOS 1+ STA NEXT JMP END-CODE ( SCALE VSCALE V* RESOLVE forget this!! 09:27 08/27/87 ) 0 .IF : <IP> ROT * >R * R> + ; : SCALE ( A B-- A ) 0 DO 2/ LOOP ; : VSCALE ( A B C-- A B ) ROT ( B C A ) OVER ( B C A C ) SCALE ( B C A ) ROT ( C A B ) ROT ( A B C ) SCALE ; ( A B ) : V* ROT OVER * ROT ROT * ; : RESOLVE ( EXPANDED IN LINE...SEE NEXT SCREEN ) 2OVER ROT * >R * R> + LOG(FAT) 0 DO 2/ LOOP ROT OVER * ROT ROT * LOG(FAT) ROT OVER 0 DO 2/ LOOP ROT ROT 0 DO 2/ LOOP ; .THEN ( resolve 17:15 08/24/87 ) 0 .IF /| v / | / | / | / | /----->-----------------------> <a,v>a a : RESOLVE ( a v--<a,v>a) 2OVER <IP> LOG(FAT) SCALE V* LOG(FAT) VSCALE ; ( This calculation assumes that the norm or length of ) ( a = ball diameter. Accuracy of the calculation varies ) ( to the degree that this assumption is true. ) .THEN ( COLLIDE 17:16 08/24/87 ) ( calculate and store new velocities for PLAYER1 AND PLAYER2 when they collide. Assumed they are currently touching ) 0 .IF : COLLIDE ( -- ) PLAYER1 @VELOCITY PLAYER2 @VELOCITY PLAYER2 @XY PLAYER1 @XY V- ( vx1 vy1 vx2 vy2 Dx Dy--) 2DUP NEGATE 2SWAP ( 90-ROT ) >R >R 2SWAP RESOLVE 2SWAP ( v1 v2 b1 ) R> R> 2SWAP RESOLVE V+ ( <v2,b1>b1 b2 v1 ) PLAYER1 @VELOCITY PLAYER2 @VELOCITY V+ 2OVER V- PLAYER1 !VELOCITY PLAYER2 !VELOCITY ; .THEN 0 .IF : COLLIDE PLAYER1 @VELOCITY PLAYER2 @VELOCITY 2OVER 2/ SWAP 2/ SWAP 2OVER V+ PLAYER2 !VELOCITY 2/ SWAP 2/ SWAP V+ PLAYER1 !VELOCITY ; .THEN ( COLLIDE new improved and simplified--jjt 09:11 08/27/87 ) -1 .IF : COLLIDE PLAYER1 @VELOCITY 2* PLAYER2 @VELOCITY 2* PLAYER1 !VELOCITY PLAYER2 !VELOCITY ; .THEN ( ORIENTATION TABLES RECTANGLES1 18:48 02/08/87 ) L: RECTANGLES1 ( collision detection tables NO puck ) ( ulx uly lrx lry puckx pucky ) 2 C, 0 C, 15 C, 19 C, 15 , 16 , ( ORIENTATION 0 ) 3 C, 2 C, 19 C, 15 C, 19 , 4 , ( 1 ) 3 C, 0 C, 13 C, 18 C, 13 , -2 , ( 2 ) 1 C, 0 C, 9 C, 24 C, 2 , 0 , ( 3 ) 0 C, 0 C, 13 C, 19 C, -2 , 2 , ( 4 ) 0 C, 2 C, 16 C, 15 C, -2 , 11 , ( 5 ) 0 C, 2 C, 12 C, 20 C, 1 , 21 , ( 6 ) 0 C, 2 C, 10 C, 24 C, 8 , 23 , ( 7 ) ( ORIENTATION TABLES RECTANGLES2 18:48 02/08/87 ) L: RECTANGLES2 ( collision detection tables WITH puck ) ( ulx `E10 lrx lry puckx pucky ) 2 C, 0 C, 15 DIAM + C, 19 C, 15 , 16 , ( ORIENTATION 0 ) 3 C, 2 C, 19 C, 15 C, 19 , 4 , ( 1 ) 3 C, 0 DIAM - C, 13 C, 18 C, 13 , -2 , ( 2 ) 1 C, 0 C, 9 C, 24 C, 2 , 0 , ( 3 ) 0 DIAM - C, 0 C, 13 C, 19 C, -2 , 2 , ( 4 ) -2 C, 2 C, 16 C, 15 C, -2 , 11 , ( 5 ) 0 C, 2 C, 12 C, 20 DIAM + C, 1 , 21 , ( 6 ) 0 C, 2 C, 10 C, 24 C, 8 , 23 , ( 7 ) ( CALC-RTAB as CODE 17:06 04/09/87 ) CODE CALC-RTAB ( PLAYER ---- ) CLC 8 # LDA TOS ADC N STA TYA TOS 1+ ADC N 1+ STA N )Y LDA N STA N 1+ STY N ASL N 1+ ROL N ASL N 1+ ROL N ASL N 1+ ROL CLC 13 # LDA TOS ADC TOS STA CS IF TOS 1+ INC THEN TOS X) LDA 0= IF RECTANGLES1 >LO # LDA RTAB STA RECTANGLES1 >HI # LDA RTAB 1+ STA ELSE RECTANGLES2 >LO # LDA RTAB STA RECTANGLES2 >HI # LDA RTAB 1+ STA THEN CLC RTAB LDA N ADC RTAB STA RTAB 1+ LDA N 1+ ADC RTAB 1+ STA POP JMP END-CODE ( CALC-RTAB px py 19:41 02/08/87 ) 0 .IF : CALC-RTAB ( PLAYER ---- ) DUP >R @ORIENTATION 2* 2* 2* R> @POSSESSION IF RECTANGLES2 ELSE RECTANGLES1 THEN + RTAB ! ; : px ( --- px ) RTAB @ 4 + @ 256* ; : py ( --- py ) RTAB @ 6 + @ 256* ; .THEN ( lrx lry 12:21 03/31/87 ) CODE lrx DEX DEX TOS STY 2 # LDY RTAB )Y LDA TOS 1+ STA NEXT JMP END-CODE CODE lry DEX DEX TOS STY 3 # LDY RTAB )Y LDA TOS 1+ STA NEXT JMP END-CODE CODE px DEX DEX TOS STY 4 # LDY RTAB )Y LDA TOS 1+ STA NEXT JMP END-CODE CODE py DEX DEX TOS STY 6 # LDY RTAB )Y LDA TOS 1+ STA NEXT JMP END-CODE ( ulx uly 14:48 02/20/87 ) CODE ulx DEX DEX TOS STY RTAB )Y LDA TOS 1+ STA NEXT JMP END-CODE CODE uly DEX DEX TOS STY INY RTAB )Y LDA TOS 1+ STA NEXT JMP END-CODE CODE !OBJECT puck >HI # LDA OBJECT 1+ STA puck >LO # LDA OBJECT STA NEXT JMP END-CODE ( CHECK-PUCK-PLAYER orig 21:37 02/08/87 ) 0 .IF : CHECK-PUCK-PLAYER DUP >R @POSSESSION ?DUP IF 1- ?DUP IF R> !POSSESSION ELSE R> DROP THEN ELSE PLAYER1 @POSSESSION PLAYER2 @POSSESSION + 2 < IF R@ @SHOOT-COUNT 0= IF R@ CALC-RTAB puck @XY R@ @XY px py V+ V- NORM-SQ2 PUCK-STICK-THRESHOLD U< IF R@ @XY px py V+ puck !XY 0 PLAYER1 !POSSESSION 0 PLAYER2 !POSSESSION 20 R@ !POSSESSION 0. puck !VELOCITY puck @FLAG 1 OR puck !FLAG PICKUP-SND THEN THEN THEN R> DROP THEN ; .THEN : CHECK-PUCK-PLAYER DUP >R @POSSESSION ?DUP IF 1- ?DUP IF R> !POSSESSION ELSE R> DROP THEN ELSE PLAYER1 @POSSESSION PLAYER2 @POSSESSION + 2 < IF R@ @SHOOT-COUNT 0= IF R@ CALC-RTAB puck @XY R@ @XY px py V+ V- NORM-SQ2 PUCK-STICK-THRESHOLD U< IF R@ @XY px py V+ puck !XY (RANDOM-SOUND) 0 PLAYER1 !POSSESSION 0 PLAYER2 !POSSESSION 10 R@ !POSSESSION 0. puck !VELOCITY puck @FLAG 1 OR puck !FLAG PICKUP-SND ELSE !OBJECT ( PUCK-PLAYER-THRESHOLD= ) ulx lrx + 2/ uly lry + 2/ R@ @XY V+ puck @XY V- NORM-SQ2 050 U< IF BOUNCE-SND (NEGATE-YVELOCITY) (NEGATE-XVELOCITY) THEN THEN THEN THEN R> DROP THEN ; ( MOVE-PUCK 13:31 02/05/87 ) : MOVE-PUCK WHIZ-COUNT C@ 0= IF puck @FLAG 1 AND IF PLAYER1 @POSSESSION IF PLAYER1 DUP CALC-RTAB @XY px py V+ puck !XY ELSE PLAYER2 DUP CALC-RTAB @XY px py V+ puck !XY THEN ELSE puck @VELOCITY puck @XY ( DX DY X Y ) V+ OVER [ 200 256 * ] LITERAL U> IF SWAP DROP 3 SWAP THEN puck !XY CHECK-PUCK-GOALIE CHECK-PUCK-COLLISION SLOW-DOWN-PUCK THEN PLAYER1 CHECK-PUCK-PLAYER PLAYER2 CHECK-PUCK-PLAYER THEN ; ( CHECK-PLAYER-PLAYER 10:49 02/11/87 ) -1 .IF : CHECK-PLAYER-PLAYER PLAYER1 @XY PLAYER2 @XY V- ( DX DY ) NORM-SQ2 PLAYER-PLAYER-THRESHOLD U< IF PL/PLYR-SND COLLIDE THEN ; .THEN 0 .IF ( DO NOT USE YET ) : CHECK-PLAYER-PLAYER PLAYER1 @XY PLAYER2 @XY V- ( DX DY ) NORM-SQ2 PLAYER-PLAYER-THRESHOLD U< IF PL/PLYR-SND PLAYER1 @VELOCITY PLAYER2 @VELOCITY PLAYER1 @XY PLAYER2 @XY ( v1 v2 c1 c2 ) 8 0 DO 7 PICK LOOP COLLIDE1 COLLIDE2 THEN ; .THEN ( PLAYER-COLLISION WITH WALLS 00:29 02/05/87 ) 0 .IF : CHECK-PLAYER-COLLISION >R R@ @XY DUP uly + TOP-LINE U< IF DROP TOP-LINE uly - 2DUP R@ !XY PL/EDGE-SND R@ SLOW-DOWN-PLAYER R@ SLOW-DOWN-PLAYER R@ @VELOCITY NEGATE R@ !VELOCITY THEN DUP lry + BOTTOM-LINE U> IF DROP BOTTOM-LINE lry - 2DUP R@ !XY PL/EDGE-SND R@ SLOW-DOWN-PLAYER R@ SLOW-DOWN-PLAYER R@ @VELOCITY NEGATE R@ !VELOCITY THEN SWAP DUP lrx + RIGHT-LINE U> IF DROP RIGHT-LINE lrx - SWAP 2DUP R@ !XY PL/EDGE-SND R@ SLOW-DOWN-PLAYER R@ SLOW-DOWN-PLAYER R@ @VELOCITY SWAP NEGATE SWAP R@ !VELOCITY THEN DUP ulx + LEFT-LINE U< IF DROP LEFT-LINE ulx - SWAP 2DUP R@ !XY PL/EDGE-SND R@ SLOW-DOWN-PLAYER R@ SLOW-DOWN-PLAYER R@ @VELOCITY SWAP NEGATE SWAP R@ !VELOCITY THEN R> DROP 2DROP ; .THEN ( CHECK-PLAYER-COLLISION 6502 REMAKE MAF/JDS 1/2 04/13/87 ) CODE CHECK-PLAYER-COLLISION ( PLAYER --- ) TOS LDA OBJECT STA TOS 1+ LDA OBJECT 1+ STA 5 # LDY OBJECT )Y LDA CLC 1 # LDY RTAB )Y ADC TOP-LINEH # CMP CS NOT IF SEC TOP-LINEH # LDA RTAB )Y SBC 5 # LDY OBJECT )Y STA NEGATE-YVELOCITY JSR (PL/EDGE-SND) JSR THEN 5 # LDY OBJECT )Y LDA CLC 3 # LDY RTAB )Y ADC BOTTOM-LINEH # CMP CS IF SEC BOTTOM-LINEH # LDA RTAB )Y SBC 5 # LDY OBJECT )Y STA NEGATE-YVELOCITY JSR (PL/EDGE-SND) JSR THEN ( CHECK-PLAYER-COLLISION 6502 CONT. 2/2 10:22 04/13/87 ) 7 # LDY OBJECT )Y LDA CLC 2 # LDY RTAB )Y ADC RIGHT-LINEH # CMP CS IF SEC RIGHT-LINEH # LDA RTAB )Y SBC 7 # LDY OBJECT )Y STA NEGATE-XVELOCITY JSR (PL/EDGE-SND) JSR THEN 7 # LDY OBJECT )Y LDA CLC 0 # LDY RTAB )Y ADC LEFT-LINEH # CMP CS NOT IF SEC LEFT-LINEH # LDA RTAB )Y SBC 7 # LDY OBJECT )Y STA NEGATE-XVELOCITY JSR (PL/EDGE-SND) JSR THEN POP JMP END-CODE ( CHECK-PLAYER-GOALIE CODE ... MAF 11:57 04/13/87 ) 0 .IF CODE (CHECK-PLAYER-GOALIE) ( PLAYER---) ( misng CALC-RTAB ) TOS LDA OBJECT STA TOS 1+ LDA OBJECT 1+ STA 7 # LDY CLC OBJECT )Y LDA 0 # LDY RTAB )Y ADC LEFT-LINEH GOAL-WIDTH + # CMP ( X:LEFTLINE) CS IF 5 # LDY OBJECT )Y LDA CLC 3 # LDY RTAB )Y ADC ( LY ) GOALIE1-Y 1+ CMP CS NOT IF 5 # LDY OBJECT )Y LDA CLC 1 # LDY RTAB )Y ADC ( UY ) N STA CLC GOALIE1-Y 1+ LDA GOAL-HEIGHTH # ADC N CMP CS NOT IF (PL-GO-BOUNCE) JSR THEN THEN POP JMP THEN ( CHECK-PLAYER-GOALIE called by hi-level 11:57 04/13/87 ) 7 # LDY CLC OBJECT )Y LDA 2 # LDY RTAB )Y ADC RIGHT-LINEH GOAL-WIDTH 1+ - # CMP CS NOT IF 5 # LDY OBJECT )Y LDA CLC 3 # LDY RTAB )Y ADC GOALIE2-Y 1+ CMP CS NOT IF 5 # LDY OBJECT )Y LDA CLC 1 # LDY RTAB )Y ADC N STA CLC GOALIE2-Y 1+ LDA GOAL-HEIGHTH # ADC N CMP CS NOT IF (PL-GO-BOUNCE) JSR THEN THEN POP JMP THEN POP JMP END-CODE : CHECK-PLAYER-GOALIE ( PLAYER -- ) DUP >R CALC-RTAB (CHECK-PLAYER-GOALIE) R> DROP ; .THEN : CHECK-PLAYER-GOALIE ( PLAYER ) DUP >R CALC-RTAB R@ @XY DROP ulx + [ LEFT-LINE GOAL-WIDTH 256 * + ] LITERAL U< IF GOALIE1-Y @ GOAL-HEIGHT + uly R@ @XY SWAP DROP + U> GOALIE1-Y @ lry R@ @XY SWAP DROP + U< AND IF OLD-XY 2@ R@ !XY R@ @VELOCITY SWAP NEGATE SWAP NEGATE R@ !VELOCITY THEN ELSE R@ @XY DROP lrx + [ RIGHT-LINE GOAL-WIDTH 256 * - ] LITERAL U> IF uly R@ @XY SWAP DROP + GOALIE2-Y @ GOAL-HEIGHT + U< lry R@ @XY SWAP DROP + GOALIE2-Y @ U> AND IF OLD-XY 2@ R@ !XY R@ @VELOCITY SWAP NEGATE SWAP NEGATE R@ !VELOCITY THEN THEN THEN R> DROP ; ( CHECK-PLAYER-GOALIE in hi_level MAF 11:57 04/13/87 ) 0 .IF PROC (PL-GO-BOUNCE) OLD-XY 1+ LDA 5 # LDY OBJECT )Y STA OLD-XY 3 + LDA 7 # LDY OBJECT )Y STA NEGATE-XVELOCITY JSR RTS END-PROC CODE PL-GO-BOUNCE (PL-GO-BOUNCE) JSR NEXT JMP END-CODE : CHECK-PLAYER-GOALIE ( PLAYER ) DUP >R CALC-RTAB R@ @XY DROP ulx + [ LEFT-LINE GOAL-WIDTH 256 * + ] LITERAL U< IF GOALIE1-Y @ GOAL-HEIGHT + uly R@ @XY SWAP DROP + U> GOALIE1-Y @ lry R@ @XY SWAP DROP + U< AND IF PL-GO-BOUNCE THEN ( CHECK-PLAYER-GOALIE in 4TH MAF 11:57 04/13/87 ) ELSE R@ @XY DROP lrx + [ RIGHT-LINE GOAL-WIDTH 256 * - ] LITERAL U> IF uly R@ @XY SWAP DROP + GOALIE2-Y @ GOAL-HEIGHT + U< lry R@ @XY SWAP DROP + GOALIE2-Y @ U> AND IF PL-GO-BOUNCE THEN THEN THEN R> DROP ; .THEN ( SLOW-DOWN-PLAYER as PROC MAF 14:01 07/14/87 ) 0 .IF CODE (SLOW-DOWN-PLAYER) ( PLAYER -- ) TOS LDA OBJECT STA ( PLAYER to OBJECT ) TOS 1+ LDA OBJECT 1+ STA DEX DEX OBJECT )Y LDA TOS STA ( @VELOCITY ) INY OBJECT )Y LDA TOS 1+ STA INY OBJECT )Y LDA TOS 2+ STA INY OBJECT )Y LDA TOS 3 + STA (DECAY2) JSR INX INX (DECAY2) JSR DEX DEX ( decayed velocity ) 0 # LDY TOS LDA OBJECT )Y STA ( !VELOCITY ) INY TOS 1+ LDA OBJECT )Y STA INY TOS 2+ LDA OBJECT )Y STA INY TOS 3 + LDA OBJECT )Y STA (NORM-SQ) JSR ( SLOW-DOWN-PLAYER as COLON 00:27 02/05/87 ) TOS LDA TOS 1+ ORA 0= IF 0 # LDY OBJECT )Y STA INY OBJECT )Y STA INY OBJECT )Y STA INY OBJECT )Y STA THEN INX INX NEXT JMP END-CODE .THEN : SLOW-DOWN-PLAYER ( PLAYER --- ) DUP @VELOCITY DECAY2 SWAP DECAY2 SWAP ( 2DUP NORM-SQ 0= IF 2DROP 0. THEN ) ROT !VELOCITY ; ( NEAREST VELOCITY-TABLE 15:45 02/06/87 ) : NEAREST ( START POS GOAL POS ---- NEXT ANGLE ) ( Calculates the nearest way to get to a position ) 2DUP = IF DROP ELSE 2DUP - 5 > ( COUNTERCLOCKWISE ) IF DROP 2+ ELSE ( 1 ) 2DUP - 3 > ( COUNTERCLOCKWISE ) IF DROP 1+ ELSE 2DUP - -5 < ( CLOCKWISE ) IF DROP 2- ELSE ( 1 ) 2DUP - -3 < ( CLOCKWISE ) IF DROP 1- ELSE 2DUP > ( TOO FAR ) IF DROP 1- ELSE DROP 1+ THEN THEN THEN THEN THEN THEN 7 AND ; L: VELOCITY-TABLE ( Y X PER DIRECTION ) 0 , 330 , -290 , 290 , -420 , 0 , ( 0 1 2 ) -290 , -290 , 0 , -330 , 290 , -290 , ( 3 4 5 ) 420 , 0 , 290 , 290 , 0 , 0 , ( 6 7 8 ) ( was 320 400 640 ) ( 09:42 08/27/87 ) L: SHOOT-TABLE ( shoot orientation, idx'd by count) -1 , 1 , 1 , -1 , ( : ZOOM 2* DUP 2* + ; ( velocity multiplier for shooting ) : ZOOM 2* 2* 2* ; ( SHOOT SEQUENCE 09:36 02/09/87 ) : SHOOT-SEQUENCE ( PLAYER --- ) ( DUP ) >R ( @SHOOT-COUNT 1 AND 0= IF ) R@ @SHOOT-COUNT 1- 2* SHOOT-TABLE + @ R@ @ORIENTATION + 7 AND R@ !ORIENTATION R@ @SHOOT-COUNT 3 = R@ @POSSESSION AND IF ( KICK puck IN ASS ) ( player shoot-count --- ) WHACK-SND 0 R@ !POSSESSION ( CLEAR PLAYER FLAG ) R@ @ORIENTATION 2* 2* VELOCITY-TABLE + 2@ ZOOM SWAP ZOOM SWAP ( R@ @VELOCITY V+ ) puck !VELOCITY puck @FLAG 254 AND puck !FLAG THEN ( THEN ) R@ @SHOOT-COUNT 1- R> !SHOOT-COUNT ; ( APPLY-JOYSTICK MOVE-PLAYER 00:46 02/05/87 ) ( 32) 2700 EQU PLAYER-SPEED-LIMIT-Y ( 16) 2000 EQU PLAYER-SPEED-LIMIT-X -2700 EQU -PLAYER-SPEED-LIMIT-Y -2000 EQU -PLAYER-SPEED-LIMIT-X : APPLY-JOYSTICK ( DIRECTION PLAYER ---- ) >R 2* 2* VELOCITY-TABLE + 2@ R@ @VELOCITY D+ DUP 0< IF -PLAYER-SPEED-LIMIT-Y MAX ELSE PLAYER-SPEED-LIMIT-Y MIN THEN SWAP DUP 0< IF -PLAYER-SPEED-LIMIT-X MAX ELSE PLAYER-SPEED-LIMIT-X MIN THEN SWAP R> !VELOCITY ; ( 12:47 08/29/87 ) : MOVE-PLAYER ( PLAYER ---- ) DUP >R @VELOCITY R@ @XY ( DX DY X Y ) 2DUP OLD-XY 2! V+ OVER [ 200 256 * ] LITERAL U> IF SWAP DROP 3 SWAP THEN R@ !XY R@ CALC-RTAB R@ CHECK-PLAYER-COLLISION R@ CHECK-PLAYER-GOALIE R> SLOW-DOWN-PLAYER ; ( READ-JOY1 JDS OPTIMIZED INLINE FORTH 17:04 03/24/87 ) : READ-JOY1 ( --- ORIENTATION ) PLAYER1 @FLAG 2 AND IF [ PLAYER1 10 + ] LITERAL ( TIMER ) C@ 0= IF SKILL C@ SCORE2 @ SCORE1 @ - - 0 MAX 2 ( 32) MIN [ PLAYER1 10 + ] LITERAL C! [ PLAYER1 13 + ] LITERAL C@ IF [ PLAYER1 4 + ] LITERAL 2@ ( XY) OVER 256/ 120 > IF 2DROP SHOOTFLAG1 ON 8 ELSE 156 111 2SWAP V256/ ANGLE 4 - 7 AND THEN ELSE [ PLAYER1 4 + ] LITERAL 2@ V256/ [ puck 4 + ] LITERAL 2@ V256/ ANGLE THEN ELSE [ PLAYER1 10 + ] LITERAL C@ 1- [ PLAYER1 10 + ] LITERAL C! OLDJOY1 C@ THEN ELSE FB0 C@ IF SHOOTFLAG1 ON THEN ?BLUE-ACTION THEN DUP OLDJOY1 C! ; ( READ-JOY2 JDS OPTIMIZED INLINE FORTH 17:04 03/24/87 ) : READ-JOY2 ( --- ORIENTATION ) PLAYER2 @FLAG 2 AND IF [ PLAYER2 10 + ] LITERAL ( TIMER ) C@ 0= IF SKILL C@ SCORE1 @ SCORE2 @ - - 0 MAX 2 ( 32) MIN [ PLAYER2 10 + ] LITERAL C! [ PLAYER2 13 + ] LITERAL C@ IF [ PLAYER2 4 + ] LITERAL 2@ ( XY) OVER 256/ 35 < IF 2DROP SHOOTFLAG2 ON 8 ( SHOOT PUCK ) ELSE 05 111 2SWAP V256/ ANGLE 4 - 7 AND THEN ELSE [ PLAYER2 4 + ] LITERAL 2@ V256/ [ puck 4 + ] LITERAL 2@ V256/ ANGLE THEN ELSE [ PLAYER2 10 + ] LITERAL C@ 1- [ PLAYER2 10 + ] LITERAL C! OLDJOY2 C@ THEN ELSE FB1 C@ IF SHOOTFLAG2 ON THEN ?REDD-ACTION THEN DUP OLDJOY2 C! ; ( UPDATE SCORE JDS 1/2 11:37 03/24/87 ) HEX CODE (UPDATE-SCORE) SCORE1 LDA PHA 0F # AND CLC 48 # ADC NUM1-N STA 83 # LDA NUM1-A STA PLA A LSR A LSR A LSR A LSR CLC 48 # ADC NUM0-N STA 82 # LDA NUM0-A STA SCORE2 LDA PHA 0F # AND CLC 48 # ADC NUM3-N STA 85 # LDA NUM3-A STA PLA A LSR A LSR A LSR A LSR CLC 48 # ADC NUM2-N STA 84 # LDA NUM2-A STA SAVES1 LDA PHA 0F # AND CLC 3E # ADC NUM8-N STA 8A # LDA NUM8-A STA PLA A LSR A LSR A LSR A LSR CLC 3E # ADC NUM7-N STA 89 # LDA NUM7-A STA ( UPDATE SCORE JDS 2/2 11:37 03/24/87 ) SAVES2 LDA PHA 0F # AND CLC 3E # ADC NUMA-N STA 8C # LDA NUMA-A STA PLA A LSR A LSR A LSR A LSR CLC 3E # ADC NUM9-N STA 8B # LDA NUM9-A STA DEX DL-TABLE-START >HI # LDA TOS STA DEX DL-TABLE-START >LO # LDA TOS STA DEX PLAYERS-ITAB >HI # LDA TOS STA DEX PLAYERS-ITAB >LO # LDA TOS STA DEX NUMBERS-ETAB >HI # LDA TOS STA DEX NUMBERS-ETAB >LO # LDA TOS STA BEGIN MSTAT BIT 0< UNTIL ( THEN WAIT FOR VBLANK ) ' (NEW-GRAPHICS) >BODY JMP ( N N N--) END-CODE CODE UPDATE-SCORE ' (UPDATE-SCORE) >BODY JSR NEXT JMP END-CODE DECIMAL ( WHIZZING LIGHTS 1/3 11:15 03/25/87 ) HEX CODE (WHIZ) WHIZ-COUNT LDA 0= IF RTS THEN 0< IF WHIZ-COUNT INC WHIZ-COUNT 1+ LDA 0= IF R-TWIRLB # LDA RUT-I STA RLT-I STA WHIZ-COUNT 1+ INC ELSE 1 # CMP 0= IF R-TWIRLD # LDA RUT-I STA RLT-I STA WHIZ-COUNT 1+ INC ELSE 2 # CMP 0= IF R-TWIRLC # LDA RUT-I STA RLT-I STA WHIZ-COUNT 1+ INC ELSE WHIZ-COUNT 1+ STY R-TWIRLA # LDA RUT-I STA RLT-I STA THEN THEN THEN 89 # LDA RUT-A STA RLT-A STA ( WHIZZING LIGHTS 2/3 12:04 03/25/87 ) ELSE WHIZ-COUNT DEC WHIZ-COUNT 1+ LDA 0= IF B-TWIRLB # LDA BUT-I STA BLT-I STA WHIZ-COUNT 1+ INC ELSE 1 # CMP 0= IF B-TWIRLD # LDA BUT-I STA BLT-I STA WHIZ-COUNT 1+ INC ELSE 2 # CMP 0= IF B-TWIRLC # LDA BUT-I STA BLT-I STA WHIZ-COUNT 1+ INC ELSE WHIZ-COUNT 1+ STY B-TWIRLA # LDA BUT-I STA BLT-I STA THEN THEN THEN 88 # LDA BUT-A STA BLT-A STA THEN FF # LDA NETPLUG STA ( WHIZZING LIGHTS 3/3 11:15 03/25/87 ) WHIZ-COUNT LDA 0= IF WHIZ-COUNT 1+ STY WHIZ-DONE DEC THEN DEX DL-TABLE-START >HI # LDA TOS STA DEX DL-TABLE-START >LO # LDA TOS STA DEX PLAYERS-ITAB >HI # LDA TOS STA DEX PLAYERS-ITAB >LO # LDA TOS STA DEX NETGOAL-ETAB >HI # LDA TOS STA DEX NETGOAL-ETAB >LO # LDA TOS STA BEGIN MSTAT BIT 0< UNTIL ( THEN WAIT FOR VBLANK ) ' (NEW-GRAPHICS) >BODY JMP ( N N N--) END-CODE CODE WHIZ ' (WHIZ) >BODY JSR NEXT JMP END-CODE DECIMAL ( TWIRLS - WHIZZING DURING ZAMBONI 1/2 11:24 04/14/87 ) HEX CODE (TWIRL) WHIZ-COUNT 1+ LDA 0= IF B-TWIRLB # LDA BUT-I STA BLT-I STA R-TWIRLB # LDA RUT-I STA RLT-I STA WHIZ-COUNT 1+ INC ELSE 1 # CMP 0= IF B-TWIRLD # LDA BUT-I STA BLT-I STA R-TWIRLD # LDA RUT-I STA RLT-I STA WHIZ-COUNT 1+ INC ELSE 2 # CMP 0= IF B-TWIRLC # LDA BUT-I STA BLT-I STA R-TWIRLC # LDA RUT-I STA RLT-I STA WHIZ-COUNT 1+ INC ELSE WHIZ-COUNT 1+ STY B-TWIRLA # LDA BUT-I STA BLT-I STA R-TWIRLA # LDA RUT-I STA RLT-I STA THEN THEN THEN 88 # LDA BUT-A STA BLT-A STA 89 # LDA RUT-A STA RLT-A STA FF # LDA NETPLUG STA ( TWIRLS - WHIZZING DURING ZAMBONI 2/2 11:24 04/14/87 ) DEX DL-TABLE-START >HI # LDA TOS STA DEX DL-TABLE-START >LO # LDA TOS STA DEX PLAYERS-ITAB >HI # LDA TOS STA DEX PLAYERS-ITAB >LO # LDA TOS STA DEX NETGOAL-ETAB >HI # LDA TOS STA DEX NETGOAL-ETAB >LO # LDA TOS STA BEGIN MSTAT BIT 0< UNTIL ( THEN WAIT FOR VBLANK ) ' (NEW-GRAPHICS) >BODY JMP ( N N N--) END-CODE CODE TWIRL ' (TWIRL) >BODY JSR NEXT JMP END-CODE DECIMAL DECIMAL ( CHECK-FOR-GOAL 23:12 02/09/87 ) : CHECK-FOR-GOAL puck @XY DUP GOAL-TOP U> IF GOAL-BOTTOM U< IF DUP RIGHT-LINE U> IF DROP -40 WHIZ-COUNT C! SCORE1 DECIMAL-INC GOAL-SND ELSE LEFT-LINE U< IF 40 WHIZ-COUNT C! SCORE2 DECIMAL-INC GOAL-SND THEN THEN WHIZ-COUNT C@ IF puck @FLAG 254 AND puck !FLAG 0 PLAYER1 !POSSESSION 0 PLAYER2 !POSSESSION UPDATE-SCORE WHIZ THEN ELSE DROP ( X---) THEN ELSE 2DROP ( X/Y) THEN ; ( SERVE fixed per memo. jjt 09:43 08/27/87 ) : SERVE 0 puck !FLAG 0 PLAYER1 !SHOOT-COUNT 0 PLAYER2 !SHOOT-COUNT 0 PLAYER1 !ORIENTATION 4 PLAYER2 !ORIENTATION 0 PLAYER1 !POSSESSION 0 PLAYER2 !POSSESSION 0 PLAYER1 !TIMER 0 PLAYER2 !TIMER 0 0 PLAYER1 !VELOCITY 57 256* 104 256* PLAYER1 !XY 0 0 PLAYER2 !VELOCITY 86 256* 102 256* PLAYER2 !XY 8 OLDJOY1 C! 8 OLDJOY2 C! 0 SHOOTFLAG1 ! 0 SHOOTFLAG2 ! [ RIGHT-LINE LEFT-LINE - -1 SHIFT 384 - LEFT-LINE + ] LITERAL [ 200 256 * ] LITERAL 0 puck !XY INIT-SOUND ANIMATOR 9000 0 DO LOOP SERVE-SND SYSTIMER C@ 4 AND 0= IF TOP-LINE 512 - puck !XY 0 2048 ELSE BOTTOM-LINE 512 + puck !XY 0 -2048 THEN puck !VELOCITY ANIMATOR ; ( PLAYER1-PROCESS 00:38 02/05/87 ) : PLAYER1-PROCESS SHOOTFLAG1 C@ IF 4 PLAYER1 !SHOOT-COUNT SHOOTFLAG1 OFF THEN PLAYER1 @SHOOT-COUNT IF PLAYER1 SHOOT-SEQUENCE ELSE READ-JOY1 DUP 8 = IF 150 111 PLAYER1 @XY ( 156 ) V256/ ANGLE 4 - 7 AND ELSE DUP THEN PLAYER1 @ORIENTATION SWAP NEAREST PLAYER1 !ORIENTATION PLAYER1 APPLY-JOYSTICK THEN PLAYER1 MOVE-PLAYER ; ( PLAYER2-PROCESS 10:43 02/11/87 ) : PLAYER2-PROCESS SHOOTFLAG2 C@ IF 4 PLAYER2 !SHOOT-COUNT SHOOTFLAG2 OFF THEN PLAYER2 @SHOOT-COUNT IF PLAYER2 SHOOT-SEQUENCE ELSE READ-JOY2 DUP 8 = IF 05 111 PLAYER2 @XY V256/ ANGLE 4 - 7 AND ELSE DUP THEN PLAYER2 @ORIENTATION SWAP NEAREST PLAYER2 !ORIENTATION PLAYER2 APPLY-JOYSTICK THEN PLAYER2 MOVE-PLAYER ; ( UMIN UMAX DRAW-GOALIE1 DRAW-GOALIE2 16:39 02/22/87 ) : UMIN 2DUP U> IF SWAP THEN DROP ; : UMAX 2DUP U< IF SWAP THEN DROP ; CODE DRAW-GOALIE1 TOS 1+ LDA BLUE-GOALY-Y STA INX INX NEXT JMP END-CODE CODE DRAW-GOALIE2 TOS 1+ LDA REDD-GOALY-Y STA INX INX NEXT JMP END-CODE ( GOALIEN-PROCESS 15:51 02/22/87 ) L: GOALIE-MOVES ( JOYSTICK -> Y CHANGE ) 0 , -2048 , -2048 , -2048 , 0 , 2048 , 2048 , 2048 , 0 , : GOALIE1-PROCESS GOALIE1-Y @ OLDJOY1 C@ 2* GOALIE-MOVES + @ + GOAL-TOP UMAX [ GOAL-BOTTOM GOAL-HEIGHT - ] LITERAL UMIN DUP GOALIE1-Y ! ( GOAL1-X SWAP V256/) ( ---Y256*) DRAW-GOALIE1 ; : GOALIE2-PROCESS GOALIE2-Y @ OLDJOY2 C@ 2* GOALIE-MOVES + @ + GOAL-TOP UMAX [ GOAL-BOTTOM GOAL-HEIGHT - ] LITERAL UMIN DUP GOALIE2-Y ! ( GOAL2-X SWAP V256/ ) ( ---Y256*) DRAW-GOALIE2 ; ( LIGHTEN-ICE DARKEN-ICE 13:26 04/09/87 ) CODE (LIGHTEN-ICE) BG-TOP-ICE LDY INY BG-TOP-ICE STY RTS END-CODE CODE LIGHTEN-ICE ' (LIGHTEN-ICE) >BODY JSR NEXT JMP END-CODE CODE (DARKEN-ICE) BG-TOP-ICE LDY DEY BG-TOP-ICE STY RTS END-CODE CODE DARKEN-ICE ' (DARKEN-ICE) >BODY JSR NEXT JMP END-CODE HEX ( TIMER-INIT UPDATE-TIMER SUBROUTINE 1/2 09:04 04/07/87 ) CODE TIMER-INIT TIMER STY SECONDS STY SAVES1 STY SAVES2 STY SCORE1 STY SCORE2 STY BONUS STY 2 # LDY MINUTES STY (INIT-TIMER) JSR NEXT JMP END-CODE CODE BONUS-INIT TIMER STY MINUTES STY 20 # LDY SECONDS STY BONUS STY (INIT-TIMER) JSR NEXT JMP END-CODE CODE DEMO-TIMER TIMER STY MINUTES STY SAVES1 STY SAVES2 STY SCORE1 STY SCORE2 STY BONUS STY 20 # LDY SECONDS STY NEXT JMP END-CODE CODE (UPDATE-TIMER) TIMER LDA 3C # CMP CS IF SECONDS LDA SED SEC 1 # SBC CLD SECONDS STA TIMER STY THEN SECONDS LDA 0< IF MINUTES LDA SED SEC 1 # SBC CLD MINUTES STA 59 # LDA SECONDS STA MINUTES LDA 1 # CMP 0= NOT IF ' (LIGHTEN-ICE) >BODY JSR THEN THEN ( UPDATE-TIMER SUBROUTINE CONT. 2/2 10:15 04/06/87 ) L: (INIT-TIMER) SECONDS LDA PHA 0F # AND CLC 48 # ADC NUM6-N STA 88 # LDA NUM6-A STA PLA A LSR A LSR A LSR A LSR CLC 48 # ADC NUM5-N STA 87 # LDA NUM5-A STA MINUTES LDA CLC 48 # ADC NUM4-N STA 86 # LDA NUM4-A STA DEX DL-TABLE-START >HI # LDA TOS STA DEX DL-TABLE-START >LO # LDA TOS STA DEX PLAYERS-ITAB >HI # LDA TOS STA DEX PLAYERS-ITAB >LO # LDA TOS STA DEX NUMBERS-ETAB >HI # LDA TOS STA DEX NUMBERS-ETAB >LO # LDA TOS STA BEGIN MSTAT BIT 0< UNTIL ( THEN WAIT FOR VBLANK ) ' (NEW-GRAPHICS) >BODY JMP ( N N N--) END-CODE ( UPDATE-TIMER MIN-SEC-CHECK 09:03 04/07/87 ) CODE UPDATE-TIMER ' (UPDATE-TIMER) >BODY JSR NEXT JMP END-CODE CODE MIN-SEC-CHECK DEX TOS STY DEX TOS STY MINUTES LDA 0= IF SECONDS LDA 0= IF DEY TOS STY THEN THEN NEXT JMP END-CODE CODE OVERTIME-SIGN-ON BEGIN MSTAT BIT 0< UNTIL ( THEN WAIT FOR VBLANK ) OVERT # LDA BLUE-IMAGE# STA 3E # LDA BLUE-X STA B8 # LDA BLUE-Y STA 8A # LDA BLUE-ALTER STA ' (PLAYER-FRAME-DISPLAY) >BODY JSR NEXT JMP END-CODE ( GAMEOVER-SIGN-ON 14:50 04/08/87 ) CODE GAMEOVER-SIGN-ON BEGIN MSTAT BIT 0< UNTIL ( THEN WAIT FOR VBLANK ) GOVER # LDA BLUE-IMAGE# STA 3E # LDA BLUE-X STA B8 # LDA BLUE-Y STA 8A # LDA BLUE-ALTER STA ' (PLAYER-FRAME-DISPLAY) >BODY JSR NEXT JMP END-CODE CODE GAMEOVER-SIGN-OFF BEGIN MSTAT BIT 0< UNTIL ( THEN WAIT FOR VBLANK ) PUCK # LDA BLUE-IMAGE# STA AA # LDA BLUE-X STA B8 # LDA BLUE-Y STA 8A # LDA BLUE-ALTER STA ' (PLAYER-FRAME-DISPLAY) >BODY JSR NEXT JMP END-CODE ( ZAMBONI-MOVE 1/2 INCLUDES DIRECT-RTN 15:55 04/07/87 ) CODE ZAMBONI-MOVE ( FELLA-IMAGE#/DX/DY --- ) ' (TWIRL) >BODY JSR BEGIN MSTAT BIT 0< UNTIL ( THEN WAIT FOR VBLANK ) 0 # LDY DEX DEX 0A # LDA TOS STA TOS 1+ STY DEX DEX 03 # LDA TOS STA TOS 1+ STY DEX DEX 14 # LDA TOS STA TOS 1+ STY ' (DIRECT-ERASE) >BODY JSR 0 # LDY DEX DEX 0B # LDA TOS STA TOS 1+ STY DEX DEX 03 # LDA TOS STA TOS 1+ STY DEX DEX 15 # LDA TOS STA TOS 1+ STY ' (DIRECT-ERASE) >BODY JSR ( ZAMBONI-MOVE 2/3 11:34 04/07/87 ) BLUE-IMAGE# LDA 1 # EOR BLUE-IMAGE# STA BLUE-X LDA CLC NOS ADC BLUE-X STA BLUE-Y LDA CLC TOS ADC BLUE-Y STA 8A # LDA BLUE-ALTER STA NOS 2+ LDA REDD-IMAGE# STA REDD-X LDA CLC NOS ADC REDD-X STA REDD-Y LDA CLC TOS ADC REDD-Y STA 8B # LDA REDD-ALTER STA ' (PLAYER-FRAME-DISPLAY) >BODY JSR ' (TWIRL) >BODY JSR INX INX INX INX INX INX NEXT JMP END-CODE ( ICE>LEFT 11:34 04/07/87 ) CODE ZL ( ICE>LEFT) BLUE-X LDA BLUE-GOALY-X STA REDD-GOALY-X STA PUCK-X STA BLUE-Y LDA BLUE-GOALY-Y STA CLC 8 # ADC REDD-GOALY-Y STA CLC 8 # ADC PUCK-Y STA BLUE-X LDA 1A # CMP CS IF 80 # LDA LONG-ICE # LDY ELSE 81 # LDA SHORT-ICE # LDY THEN BLUE-GOALY-ALTER STA REDD-GOALY-ALTER STA PUCK-ALTER STA BLUE-GOALY-IMAGE# STY REDD-GOALY-IMAGE# STY PUCK-IMAGE# STY ' (PLAYER-FRAME-DISPLAY) >BODY JSR NEXT JMP END-CODE ( ICE>RIGHT 11:34 04/07/87 ) CODE ZR ( ICE>RIGHT) BLUE-Y LDA BLUE-GOALY-Y STA CLC 8 # ADC REDD-GOALY-Y STA CLC 8 # ADC PUCK-Y STA BLUE-X LDA 7F # CMP CS NOT IF 80 # LDA LONG-ICE # LDY BLUE-GOALY-ALTER STA REDD-GOALY-ALTER STA PUCK-ALTER STA BLUE-GOALY-IMAGE# STY REDD-GOALY-IMAGE# STY PUCK-IMAGE# STY BLUE-X LDA SEC 74 # SBC BLUE-GOALY-X STA REDD-GOALY-X STA PUCK-X STA ELSE 81 # LDA SHORT-ICE # LDY BLUE-GOALY-ALTER STA REDD-GOALY-ALTER STA PUCK-ALTER STA BLUE-GOALY-IMAGE# STY REDD-GOALY-IMAGE# STY PUCK-IMAGE# STY ( 83) BLUE-X LDA SEC 8 # SBC BLUE-GOALY-X STA REDD-GOALY-X STA PUCK-X STA THEN ' (PLAYER-FRAME-DISPLAY) >BODY JSR NEXT JMP END-CODE ( SETUP-NET-ICE-RIGHT 14:11 05/12/87 ) CODE SNIR ( SETUP-NET-ICE-RIGHT) BG-TOP-ICE LDA P6C1 STA P6C2 STA P6C3 STA ( PAL 6) 98 # LDA BLUE-GOALY-X STA REDD-GOALY-X STA PUCK-X STA 70 # LDA BLUE-GOALY-Y STA CLC 8 # ADC REDD-GOALY-Y STA CLC 8 # ADC PUCK-Y STA 81 # LDA BLUE-GOALY-ALTER STA REDD-GOALY-ALTER STA PUCK-ALTER STA NET-ICE # LDA BLUE-GOALY-IMAGE# STA REDD-GOALY-IMAGE# STA PUCK-IMAGE# STA ' (PLAYER-FRAME-DISPLAY) >BODY JSR NEXT JMP END-CODE ( SETUP-NET-ICE-LEFT 14:11 05/12/87 ) CODE SNIL ( SETUP-NET-ICE-LEFT) BG-TOP-ICE LDA P6C1 STA P6C2 STA P6C3 STA ( PAL 6) FC # LDA BLUE-GOALY-X STA REDD-GOALY-X STA PUCK-X STA 58 # LDA BLUE-GOALY-Y STA CLC 8 # ADC REDD-GOALY-Y STA CLC 8 # ADC PUCK-Y STA 81 # LDA BLUE-GOALY-ALTER STA REDD-GOALY-ALTER STA PUCK-ALTER STA NET-ICE # LDA BLUE-GOALY-IMAGE# STA REDD-GOALY-IMAGE# STA PUCK-IMAGE# STA ' (PLAYER-FRAME-DISPLAY) >BODY JSR NEXT JMP END-CODE ( ZAMBONI-INIT 11:36 04/07/87 ) CODE ZAMBONI-INIT ( ZAMBONI-X/ZAMBONI-Y --- ) ZAM1 # LDA BLUE-IMAGE# STA NOS LDA BLUE-X STA TOS LDA BLUE-Y STA 8A # LDA BLUE-ALTER STA FELLA1 # LDA REDD-IMAGE# STA NOS LDA CLC 3 # ADC REDD-X STA TOS LDA CLC 6 # ADC REDD-Y STA 8B # LDA REDD-ALTER STA ' (PLAYER-FRAME-DISPLAY) >BODY JSR INX INX INX INX NEXT JMP END-CODE ( SCOREFLASH-PREP 08:44 04/20/87 ) : WAIT 50 0 DO 0 DROP LOOP SCOREFLASH-RTN ; CODE SCOREFLASH-PREP SCOREFLASH STY ( DELAY COUNTER ) SCORE1 1+ STY ( PHASE FLAG VIZ. ERASE OR DISPLAY) SCORE1 LDA SEC SCORE2 SBC SCORE1 STA ( WHO WON FLAG) 0= IF NEXT JMP THEN 0< IF NUM2-N 1+ LDA SCORE2 STA NUM3-N 1+ LDA SCORE2 1+ STA ELSE NUM0-N 1+ LDA SCORE2 STA NUM1-N 1+ LDA SCORE2 1+ STA THEN NEXT JMP END-CODE ( SCOREFLASH-RTN 1/2 09:27 04/20/87 ) CODE (SCOREFLASH-RTN) SCORE1 LDA 0= IF RTS THEN SCOREFLASH LDA 04 # CMP CS IF SCOREFLASH STY ELSE SCOREFLASH INC RTS THEN SCORE1 1+ LDA 0= NOT IF SCORE1 1+ STY SCORE1 LDA 0< IF SCORE2 LDA NUM2-N 1+ STA SCORE2 1+ LDA NUM3-N 1+ STA 84 # LDY NUM2-A STY INY NUM3-A STY ELSE SCORE2 LDA NUM0-N 1+ STA SCORE2 1+ LDA NUM1-N 1+ STA 82 # LDY NUM0-A STY INY NUM1-A STY THEN ELSE DEY SCORE1 1+ STY SCORE1 LDA 0< IF AA # LDA NUM2-N 1+ STA NUM3-N 1+ STA 84 # LDY NUM2-A STY INY NUM3-A STY ELSE AA # LDA NUM0-N 1+ STA NUM1-N 1+ STA 82 # LDY NUM0-A STY INY NUM1-A STY THEN THEN ( SCOREFLASH-RTN 2/2 09:32 04/20/87 ) DEX DL-TABLE-START >HI # LDA TOS STA DEX DL-TABLE-START >LO # LDA TOS STA DEX PLAYERS-ITAB >HI # LDA TOS STA DEX PLAYERS-ITAB >LO # LDA TOS STA DEX NUMBERS-ETAB >HI # LDA TOS STA DEX NUMBERS-ETAB >LO # LDA TOS STA BEGIN MSTAT BIT 0< UNTIL ( THEN WAIT FOR VBLANK ) ' (NEW-GRAPHICS) >BODY JMP ( N N N--) END-CODE CODE SCOREFLASH-RTN ' (SCOREFLASH-RTN) >BODY JSR NEXT JMP END-CODE DECIMAL ( REDO - ZAMBONI LOOP EXIT TO NEW GAME 1/2 15:25 06/09/87 ) : WARM-RESET S0 @ SP! R0 @ RP! 0 SND?-FLAG C! INIT-SOUND 0 SCORE1 ! 0 SCORE2 ! 0 SAVES1 ! 0 SAVES2 ! 0 PLAYER1 !FLAG ( SKILL AND AUTOMATION STATE ) ( REMAIN UNCHANGED) BACKGROUND-INIT RED-CHECK MAIN-LOOP ; ( 19:22 08/29/87 ) : ?REDO FB0 C@ FB1 C@ OR IF WARM-RESET THEN ; : CONSOLE-CHECK GETRAW ?RESET IF WARM-RESET THEN ?SELECT IF BEGIN GETRAW ?SELECT 0= UNTIL TITLE-UP WARM-RESET THEN GETRAW ?PAUSE IF BEGIN GETRAW ?PAUSE 0= UNTIL ( DEBOUNCE ) WORKAREA0 C@ -1 WORKAREA0 C! 0 AUDV0 C! ( AREA0 OFF) WORKAREA1 C@ -1 WORKAREA1 C! 0 AUDV1 C! ( AREA1 OFF) BEGIN GETRAW ?SELECT IF BEGIN GETRAW ?SELECT 0= UNTIL TITLE-UP WARM-RESET THEN ?RESET IF WARM-RESET ( BYE) THEN ?PAUSE UNTIL ( PAUSE ) BEGIN GETRAW ?PAUSE 0= UNTIL WORKAREA1 C! WORKAREA0 C! THEN ( DEBOUNCE ) ; ( ZAMBONI-LOOP 1/2 16:00 04/07/87 ) : ZAMBONI-LOOP SCOREFLASH-PREP PUCK-ERASE BLUE-GOALY-ERASE REDD-GOALY-ERASE BLUE-ERASE REDD-ERASE GAMEOVER-SIGN-ON 4000 0 DO 0 DROP LOOP 09 40 ZAMBONI-INIT SNIR SNIL TURK-SND 2 0 DO 65 0 DO FELLA1 2 0 ZAMBONI-MOVE ZR WAIT CONSOLE-CHECK ( NEXT-JOYS ) ?REDO LOOP ( I 0= IF TURK-SND THEN ) FELLA2 0 0 ZAMBONI-MOVE WAIT WAIT 24 0 DO FELLA3 0 1 ZAMBONI-MOVE WAIT CONSOLE-CHECK ( NEXT-JOYS) ?REDO LOOP FELLA4 0 0 ZAMBONI-MOVE WAIT WAIT 65 0 DO FELLA5 -2 0 ZAMBONI-MOVE ZL WAIT CONSOLE-CHECK ( NEXT-JOYS ) ?REDO LOOP FELLA4 0 0 ZAMBONI-MOVE WAIT WAIT TURK-SND 24 0 DO FELLA3 0 1 ZAMBONI-MOVE WAIT CONSOLE-CHECK ( NEXT-JOYS) ?REDO LOOP FELLA2 0 0 ZAMBONI-MOVE WAIT WAIT LOOP ( ZAMBONI-LOOP 2/2 16:00 04/07/87 ) 65 0 DO FELLA1 2 0 ZAMBONI-MOVE ZR WAIT CONSOLE-CHECK ( NEXT-JOYS) ?REDO LOOP FELLA2 0 0 ZAMBONI-MOVE WAIT WAIT 24 0 DO FELLA3 0 1 ZAMBONI-MOVE WAIT CONSOLE-CHECK ( NEXT-JOYS) ?REDO LOOP FELLA4 0 0 ZAMBONI-MOVE WAIT WAIT 65 0 DO FELLA5 -2 0 ZAMBONI-MOVE ZL WAIT CONSOLE-CHECK ( NEXT-JOYS) ?REDO LOOP ; CODE ?BONUS DEX TOS STY DEX TOS STY BONUS LDA 0= IF ( BONUS HASN'T BEEN GIVEN YET) SCORE1 LDA SCORE2 CMP 0= IF DEY TOS STY THEN ELSE BONUS STY THEN NEXT JMP END-CODE ( USER-CHOICE no exp/nov for 2-plr...jjt 09:57 08/27/87 ) HEX CODE USER-CHOICE BG-FREE2 LDA ( DY0 LDA DY1 ORA ) 1 # CMP 0= IF 1PLAYERB # LDA BLUE-IMAGE# STA ( two player ) 2PLAYERR # LDA REDD-IMAGE# STA EXPERTB # LDA BLUE-GOALY-IMAGE# STA ( turn off ) NOVICEB # LDA REDD-GOALY-IMAGE# STA ( exp/novice) 0 # LDA PLAYER2 9 + STA 01 # LDA BG-FREE2 STA ELSE FF # CMP 0= IF 1PLAYERR # LDA BLUE-IMAGE# STA ( one player) 2PLAYERB # LDA REDD-IMAGE# STA 2 # LDA PLAYER2 9 + STA FF # LDA BG-FREE2 STA EXP-NOV JSR THEN ( DY=0) PLAYER2 9 + LDA 2 # CMP 0= IF EXP-NOV JSR THEN THEN ( USER-CHOICE CONT. REV. jjt 09:58 08/27/87 ) 82 # LDA BLUE-ALTER STA 83 # LDA REDD-ALTER STA 85 # LDA BLUE-GOALY-ALTER STA 84 # LDA REDD-GOALY-ALTER STA ' (PLAYER-FRAME-DISPLAY) >BODY JSR NEXT JMP L: EXP-NOV BG-FREE3 LDA ( DX0 LDA DX1 ORA ) L: LBL2 1 # CMP 0= IF NOVICEB # LDA REDD-GOALY-IMAGE# STA EXPERTR # LDA BLUE-GOALY-IMAGE# STA ( 3) 0 # LDA SKILL STA 01 # LDA BG-FREE3 STA LBL1 JMP THEN FF # CMP 0= IF NOVICER # LDA REDD-GOALY-IMAGE# STA EXPERTB # LDA BLUE-GOALY-IMAGE# STA ( 6) 1 # LDA SKILL STA FF # LDA BG-FREE3 STA LBL1 JMP THEN SKILL LDA 0= IF 1 # LDA ELSE FF # LDA THEN LBL2 JMP L: LBL1 RTS END-CODE ( DEMO-LOOP ATARI 00:38 02/05/87 ) : DEMO-LOOP 1 SND?-FLAG C! DEMO-TIMER UPDATE-SCORE 200 0 DO 0 DROP LOOP BEGIN SERVE WHIZ-DONE OFF WHIZ-COUNT OFF BEGIN 1 CYCLE# +! WHIZ-COUNT @ 0= IF ( NEXT-JOYS ) PLAYER1-PROCESS GOALIE1-PROCESS PLAYER2-PROCESS GOALIE2-PROCESS RANDOM-SOUNDS CHECK-PLAYER-PLAYER MOVE-PUCK THEN WHIZ-COUNT C@ IF WHIZ ELSE CHECK-FOR-GOAL ANIMATOR UPDATE-TIMER UPDATE-SCORE THEN CONSOLE-CHECK WHIZ-DONE @ MIN-SEC-CHECK OR FB0 C@ FB1 C@ OR OR UNTIL MIN-SEC-CHECK FB0 C@ FB1 C@ OR OR UNTIL 0 SND?-FLAG C! INIT-SOUND ; ( DECIDE-SELECT 09:55 06/10/87 ) ( PLAYER2 9+ = 2->ONE-PLAYER 0->TWO-PLAYER ) ( SKILL = 1->NOVICE 0->EXPERT ) CODE DECIDE-SELECT PLAYER2 9 + LDA 0= IF SKILL LDA 0= IF ( 2PLAYER/EXPERT>1PLAYER/NOVICE) DEY DX0 STY DY0 STY ELSE ( 2PLAYER/NOVICE>2PLAYER/EXPERT) INY DX0 STY DY0 STY THEN ELSE SKILL LDA 0= IF ( 1PLAYER/EXPERT>2PLAYER/NOVICE) INY DY0 STY DEY DEY DX0 STY ELSE ( 1PLAYER/NOVICE>1PLAYER/EXPERT) DEY DY0 STY INY INY DX0 STY THEN THEN NEXT JMP END-CODE ( TITLE-SELECT-BUTTON-RTN LIMITED-CONSOLE- 09:20 06/10/87 ) : LIMITED-CONSOLE-CHECK GETRAW ?PAUSE IF BEGIN GETRAW ?PAUSE 0= UNTIL ( DEBOUNCE ) WORKAREA0 C@ 0FF WORKAREA0 C! 0 AUDV0 C! ( AREA0 OFF) WORKAREA1 C@ 0FF WORKAREA1 C! 0 AUDV1 C! ( AREA1 OFF) BEGIN GETRAW ?RESET IF -1 FB0 C! WORKAREA1 C! WORKAREA0 C! EXIT THEN ?PAUSE UNTIL ( PAUSE ) BEGIN GETRAW ?PAUSE 0= UNTIL WORKAREA1 C! WORKAREA0 C! THEN ( DEBOUNCE ) ?RESET FB0 C! ; : TITLE-SELECT-BUTTON-RTN GETRAW ?SELECT IF BEGIN GETRAW ?SELECT 0= UNTIL ( DEBOUNCE ) DECIDE-SELECT THEN ; ( TITLE/DEMO-LOOP 13:48 05/11/87 ) : TITLE-RTN USER-CHOICE DY1 C@ DY0 C@ OR ?DUP IF BG-FREE2 C! THEN DX1 C@ DX0 C@ OR ?DUP IF BG-FREE3 C! THEN 0 BEGIN ( NEXT-JOYS ) ( TITLE-SELECT-BTN AFTER N-JOYS SINCE MODIFIES DX0/DY0) LIMITED-CONSOLE-CHECK USER-CHOICE 1+ TITLE-SELECT-BUTTON-RTN DY1 C@ DY0 C@ OR ?DUP IF BG-FREE2 C! THEN DX1 C@ DX0 C@ OR ?DUP IF BG-FREE3 C! THEN DX0 C@ DY0 C@ OR DX1 C@ OR DY1 C@ OR IF DROP 0 THEN DUP 750 = FB0 C@ OR FB1 C@ OR ?RESET OR UNTIL DROP ; ( TITLE SCREEN MANAGEMENT RTNS 14:49 04/17/87 ) : DEMO-RTN FB0 C@ FB1 C@ OR ?RESET OR IF -1 EXIT THEN 0 SCORE1 ! 0 SCORE2 ! 0 SAVES1 ! 0 SAVES2 ! 2 PLAYER1 !FLAG 2 PLAYER2 !FLAG BACKGROUND-INIT RED-CHECK DEMO-LOOP 0 400 0 DO 0 DROP LOOP ; : TITLE-INIT 7B DUP BG-SCOREAREA C! BG-TOP-ICE C! GNE0 18 0F DL-INIT GNE17 2 4 DL-INIT TITLE-ETAB-ROM PLAYERS-ETAB 30 PLAYERS-ETAB-INIT ; CODE FIRST-TITLE FF # LDA DY0 STA DX0 STA BG-FREE2 STA BG-FREE3 STA NEXT JMP END-CODE CODE REPEAT-TITLE BG-FREE2 LDA DY0 STA BG-FREE3 LDA DX0 STA NEXT JMP END-CODE ( RED-CHECK - DETERMINES RED/COMPUTER DISPLAY 12:23 04/17/87 ) CODE RED-CHECK PLAYER2 9 + LDA 0= IF BEGIN MSTAT BIT 0< UNTIL ( THEN WAIT FOR VBLANK ) VS-RED # LDA BLUE-IMAGE# STA 7C # LDA BLUE-X STA 0E # LDA BLUE-Y STA 8D # LDA BLUE-ALTER STA ' (PLAYER-FRAME-DISPLAY) >BODY JSR THEN NEXT JMP END-CODE DECIMAL ( MAIN-LOOP ATARI rev. JJT 17:08 08/27/87 ) : MAIN-LOOP TIMER-INIT BEGIN UPDATE-SCORE 200 0 DO 0 DROP LOOP BEGIN WHIZ-DONE OFF WHIZ-COUNT OFF SERVE BEGIN CONSOLE-CHECK 1 CYCLE# +! WHIZ-COUNT C@ IF WHIZ ELSE PLAYER1-PROCESS GOALIE1-PROCESS PLAYER2-PROCESS GOALIE2-PROCESS CHECK-PLAYER-PLAYER MOVE-PUCK CHECK-FOR-GOAL ANIMATOR THEN UPDATE-TIMER UPDATE-SCORE RANDOM-SOUNDS WHIZ-DONE @ MIN-SEC-CHECK OR UNTIL BONUS C@ ( =20H IF OVERTIME) MIN-SEC-CHECK OR UNTIL ?BONUS IF OVERTIME-SIGN-ON OVERTIME-SND 30000 0 DO LOOP BONUS-INIT ELSE ENDGAME-SND ZAMBONI-LOOP TITLE-UP TIMER-INIT THEN AGAIN ; ( HOCKEY 22:45 02/07/87 ) : FOREGRND-TASK 0 SND?-FLAG C! GRAPHICS-MODE INIT-SOUND TITLE-INIT FIRST-TITLE TITLE-RTN DEMO-RTN IF NEW-GAME ELSE TITLE-UP THEN ; : TITLE-UP 0 SND?-FLAG C! BEGIN INIT-SOUND TITLE-INIT REPEAT-TITLE TITLE-RTN DEMO-RTN UNTIL NEW-GAME ; : HOCKEY 0 SND?-FLAG C! INIT-SOUND FANFARE-SND BEGIN GETRAW ?RESET 0= UNTIL 0 SCORE1 ! 0 SCORE2 ! 0 SAVES1 ! 0 SAVES2 ! 0 PLAYER1 !FLAG BEGIN CONSOLE-CHECK WORKAREA1 C@ WORKAREA0 C@ AND 255 = UNTIL BACKGROUND-INIT RED-CHECK ( BEGIN-SNDS ) MAIN-LOOP ; ' HOCKEY main-loop ! ' TITLE-UP select-rtn ! ( ?DIFFR IF 0 ELSE 2 THEN PLAYER2 !FLAG ) ( ?DIFFL IF 3 ELSE 6 THEN SKILL C! HIGHER IS MORE STUPID) ( LAST SCREEN--END OF MC ATARI 7800 23:52 05/22/86 ) ' FOREGRND-TASK ' ABVAR >BODY ! ( set the constant ABVAR ) HEX ( reset bootup literals ) ( NMI RESET IRQ ) FFF9 HERE - ALLOT 47 C, NMI , ( VIDEO-INT-RTN ) RESET , ( ORIGIN ) IRQ , ( an RTI ) FF80 79 -1 FILL FORTH DEFINITIONS LATEST INIT-FORTH ! THERE INIT-DP ! ( X=14 SCOREBOARDA X=110 SCOREBOARDB ) \ No newline at end of file
diff --git a/HOCKEY.SML b/HOCKEY.SML
new file mode 100644
index 0000000..9c58899
--- /dev/null
+++ b/HOCKEY.SML
@@ -0,0 +1,1516 @@
+( HOCKEY HI-LEVEL MAF JDS KAL PMA JJT 16:09 08/27/87 )
+( Last change: Screen 027 MAF 10:09 04/09/87 )
+.NOLIST
+-HEADERS
+
+( SQUARE TABLE 1/212:41 02/12/87 )
+DECIMAL L: SQUARE-TABLE
+00000 , 00001 , 00004 , 00009 , 00016 , 00025 , 00036 ,
+00049 , 00064 , 00081 , 00100 , 00121 , 00144 , 00169 ,
+00196 , 00225 , 00256 , 00289 , 00324 , 00361 , 00400 ,
+00441 , 00484 , 00529 , 00576 , 00625 , 00676 , 00729 ,
+00784 , 00841 , 00900 , 00961 , 01024 , 01089 , 01156 ,
+01225 , 01296 , 01369 , 01444 , 01521 , 01600 , 01681 ,
+01764 , 01849 , 01936 , 02025 , 02116 , 02209 , 02304 ,
+02401 , 02500 , 02601 , 02704 , 02809 , 02916 , 03025 ,
+03136 , 03249 , 03364 , 03481 , 03600 , 03721 , 03844 ,
+03969 , 04096 , 04225 , 04356 , 04489 , 04624 , 04761 ,
+04900 , 05041 , 05184 , 05329 , 05476 , 05625 , 05776 ,
+05929 , 06084 , 06241 , 06400 , 06561 , 06724 , 06889 ,
+07056 , 07225 , 07396 , 07569 , 07744 , 07921 , 08100 ,
+08281 , 08464 , 08649 , 08836 , 09025 , 09216 , 09409 ,
+
+( SQUARE TABLE 2/2 12:41 02/12/87 )
+09604 , 09801 , 10000 , 10201 , 10404 , 10609 , 10816 ,
+11025 , 11236 , 11449 , 11664 , 11881 , 12100 , 12321 ,
+12544 , 12769 , 12996 , 13225 , 13456 , 13689 , 13924 ,
+14161 , 14400 , 14641 , 14884 , 15129 , 15376 , 15625 ,
+15876 , 16129 , 16384 , 16641 , 16900 , 17161 , 17424 ,
+17689 , 17956 , 18225 , 18496 , 18769 , 19044 , 19321 ,
+19600 , 19881 , 20164 , 20449 , 20736 , 21025 , 21316 ,
+21609 , 21904 , 22201 , 22500 , 22801 , 23104 , 23409 ,
+23716 , 24025 , 24336 , 24649 , 24964 , 25281 , 25600 ,
+25921 , 26244 , 26569 , 26896 , 27225 , 27556 , 27889 ,
+28224 , 28561 , 28900 , 29241 , 29584 , 29929 , 30276 ,
+30625 , 30976 , 31329 , 31684 , 32041 , 32400 , 32761 ,
+33124 , 33489 , 33856 , 34225 , 34596 , 34969 , 35344 ,
+35721 , 36100 , 36481 , 36864 , 37249 , 37636 , 38025 ,
+38416 , 38809 , 39204 , 39601 , 40000 ,
+
+( RAM LOCATIONS FOR GAME PLAY 11:18 02/05/87 )
+: SQUARE 2* SQUARE-TABLE + @ ;
+END-TABLE-PLUG 3 + EQU PLAYER1
+PLAYER1 15 + EQU PLAYER2
+PLAYER2 15 + EQU puck puck15 + EQU SCORE1
+SCORE1 2 + EQU SCORE2 SCORE2 2 + EQU SAVES1
+SAVES1 2 + EQU SAVES2 SAVES2 2+ EQU WHIZ-DONE
+WHIZ-DONE 2 + EQU WHIZ-COUNT
+
+( 12:00 02/19/87 )
+WHIZ-COUNT 2+ EQU DX DX 2+ EQU DY DY 2+ EQU SHOOTFLAG1
+SHOOTFLAG1 2+ EQU SHOOTFLAG2 SHOOTFLAG2 2+ EQU OLDJOY1
+OLDJOY1 1+ EQU OLDJOY2 OLDJOY2 1+ EQU SKILL
+SKILL 1+ EQU GOALIE1-Y
+GOALIE1-Y 2+ EQU GOALIE2-Y
+GOALIE2-Y 2+ EQU CYCLE#
+CYCLE# 2+ EQU OLD-XY
+OLD-XY 4 + EQU END-OF-RAM
+
+( ANIMATION TABLES 13:03 02/12/87 )
+( ADDRESSED BY ORIENTATION * 4 + ANIMATION 3 AND + )
+L: PLAYER2-IMAGES
+RPFE C, RPFER C, RPFE C, RPFEL C,
+RPFNE C, RPFNER C, RPFNE C, RPFNEL C,
+RPFN C, RPFNR C, RPFN C, RPFNL C,
+RPFNW C, RPFNWR C, RPFNW C, RPFNWL C,
+RPFW C, RPFWR C, RPFW C, RPFWL C,
+RPFSW C, RPFSWR C, RPFSW C, RPFSWL C,
+RPFS C, RPFSR C, RPFS C, RPFSL C,
+RPFSE C, RPFSER C, RPFSE C, RPFSEL C,
+
+( ANIMATION TABLES 13:03 02/12/87 )
+( ADDRESSED BY ORIENTATION * 4 + ANIMATION 3 AND + )
+L: PLAYER1-IMAGES
+BPFE C, BPFER C, BPFE C, BPFEL C,
+BPFNE C, BPFNER C, BPFNE C, BPFNEL C,
+BPFN C, BPFNR C, BPFN C, BPFNL C,
+BPFNW C, BPFNWR C, BPFNW C, BPFNWL C,
+BPFW C, BPFWR C, BPFW C, BPFWL C,
+BPFSW C, BPFSWR C, BPFSW C, BPFSWL C,
+BPFS C, BPFSR C, BPFS C, BPFSL C,
+BPFSE C, BPFSER C, BPFSE C, BPFSEL C,
+
+( 256/ 256*13:46 08/27/87 )
+CODE 256/( note: ROUNDS & UNSIGNED! jjt)
+TOS 1+ LDY TOS LDA 0< IF INY THEN
+TOS STY 0 # LDA TOS 1+ STA
+NEXT JMP END-CODE
+
+CODE 256*TOSLDA TOS 1+ STA
+TOS STY NEXT JMP
+END-CODE
+
+( HOCKEY LIMIT PARAMETERS/EQUATES 13:50 02/19/87 )
+DECIMAL 4 EQU DIAM ( PUCK DIAMETER )
+33 EQU LOG(FAT) ( GIRTH OF PLAYER )
+30 ( 30 ) EQU PUCK-STICK-THRESHOLD
+120 EQU PLAYER-PLAYER-THRESHOLD
+08 256 * EQU LEFT-LINE151 256 * EQU RIGHT-LINE
+40 256 * EQU TOP-LINE 184 256 * EQU BOTTOM-LINE
+TOP-LINE 50 256 * + EQU GOAL-TOP
+BOTTOM-LINE 52 256 * - EQU GOAL-BOTTOM
+LEFT-LINE 5 256 * - EQU GOAL-LEFT
+RIGHT-LINE 5 256 * +EQU GOAL-RIGHT
+12 256 * EQU GOAL-HEIGHT ( 24)
+6 EQU GOAL-WIDTH
+LEFT-LINE GOAL-WIDTH 256 * + EQU GOAL1-X
+RIGHT-LINE GOAL-WIDTH 1 + 256 * - EQU GOAL2-X
+
+(18:20 05/11/87 )
+08 EQU LEFT-LINEH151 EQU RIGHT-LINEH
+40 EQU TOP-LINEH 184 EQU BOTTOM-LINEH
+TOP-LINEH 50 + EQU GOAL-TOPH
+BOTTOM-LINEH 52 - EQU GOAL-BOTTOMH
+LEFT-LINEH 5 - EQU GOAL-LEFTH
+RIGHT-LINEH 5 + EQU GOAL-RIGHTH
+oops deleted a word here - tas 11/2/87
+EQU GOAL-HEIGHTH ( 24)
+
+( ANIMATOR1/2 rev. jjt 09:03 08/27/87 )
+: ANIMATOR
+PLAYER2 @XY V256/ REDD-Y C! REDD-X C!
+PLAYER2 @ORIENTATION 2* 2* PLAYER2-IMAGES +
+DX1 C@ DY1 C@ OR PLAYER2 @FLAG 2 AND OR IF
+PLAYER2-FEET C@ DUP 1+
+PLAYER2-FEET C! 3 AND +
+DUP3 AND 0= WHIZ-COUNT C@ 0= AND IF SKRITCH-SND THEN
+THEN ( no skritching while whizzing...)
+PLAYER1 @XY V256/ BLUE-Y C! BLUE-X C!
+PLAYER1 @ORIENTATION 2* 2* PLAYER1-IMAGES +
+DX0 C@ DY0 C@ OR PLAYER1
+@FLAG 2 AND OR IF
+PLAYER1-FEET C@ DUP 1+ PLAYER1-FEET C! 3 AND +
+DUP 2+ 3 AND 0= WHIZ-COUNT C@ 0= AND IF SKRITCH-SND THEN
+THEN ( and less often at that! )
+puck @XY V256/ PUCK-Y C! PUCK-X C!
+
+( ANIMATOR 2/2 13:10 02/12/87 )
+BEGIN ?VBLANK UNTIL BLUE-ERASE BLUE-GOALY-ERASE BLUE-PLAYER-FRAME
+BEGIN ?VBLANK 0= UNTIL
+BEGIN ?VBLANK UNTIL
+PUCK-ERASE PUCK-FRAME
+REDD-ERASE REDD-GOALY-ERASE REDD-PLAYER-FRAME ;
+
+( GENERATE SQUARE TABLE 13:30 02/05/87 )
+0 .IF
+VARIABLE LINE# VARIABLE BLOCK#
+: MAKE-SQUARES 179 BLOCK# ! 2 LINE# !
+0 BEGINDUP 7 MOD 0= IF 1 LINE# +!
+LINE# @ 15 > IF 1 LINE# ! 1 BLOCK# +! THEN THEN
+DUP DUP * 0 <# # # # # # #> ( N ADDR COUNT )
+BLOCK# @ BLOCK UPDATE
+LINE# @ 64 * + ( N ADDR COUNT ADDR )
+3 PICK 7 MOD 8 * + DUP >R SWAP
+CMOVE ASCII , R> 6 + C!
+1+ DUP 200 > UNTIL DROP FLUSH ;
+.THEN
+
+( ANGLE 11:08 02/05/87 )
+L: ANGLE-TAB 0 C, 6 C, 0 C, 2 C, 4 C, 6 C, 4 C, 2 C,
+7 C, 7 C, 1 C, 1 C, 5 C, 5 C, 3 C, 3 C,
+0 .IF
+: ANGLE ( X1 Y1 X2 Y2 ---- a )
+( algorithm courtesy Lee Actor) ( Bally Sente )
+ROT - DY ! SWAP - DX ! ( Calculate deltax, deltay )
+0 DX @ DUP 0< IF NEGATE DX ! 4 OR ELSE DROP THEN
+DY @ DUP 0< IF NEGATE DY ! 2 OR ELSE DROP THEN
+DY @ DX @ > IF 1 OR DY @ DX @ 2* < IF 8 OR THEN
+ELSE DX @ DY @ 2* < IF 8 OR THEN
+THEN ANGLE-TAB + C@ ;
+.THEN
+
+( ANGLE JDS 11:10 03/23/87 )
+CODE (ANGLE) ( X1 Y1 X2 Y2 ---- a )
+SEC TOS LDA TOS 4 + SBC DY STA
+TOS 1+ LDA TOS 5 + SBC DY 1+
+STA ( DELTA Y FOUND )
+SEC TOS 2+ LDA TOS 6 + SBC DX STA
+TOS 3 +LDA TOS 7 + SBC DX 1+ STA ( DELTA X FOUND )
+TXA CLC 6 # ADC TAX TYA PHA ( PTR BYTE & XTRA STK)
+DX 1+ LDA 0< IF SEC TYA DX SBC DX STA TYA DX 1+ SBC DX 1+ STA
+PLA 4 # ORA PHA THEN
+( IF LESS THAN 0 , TURN POSITIVE )
+DY 1+ LDA 0< IF SEC TYA DY SBC DY STA TYA DY 1+ SBC DY 1+ STA
+PLA 2 # ORA PHA THEN ( IF LESS THAN 0 , TURN POSITIVE )
+SEC DX LDA DY SBC DX 1+ LDA DY 1+ SBC ( CS: X >= Y ELSE Y > X )
+CS NOT IF PLA 1 # ORA PHA
+DX 1+ LDA TOS 1+ STA DX LD
+A TOS STA TOS ASL TOS 1+ ROL ( DX 2*)
+SEC DY LDA TOS SBC DY 1+ LDA TOS 1+ SBC CS NOT IF ( DY<DX2*)
+PLA 8 # ORA PHA THEN ELSE
+
+( ANGLE JDS 2/2 11:10 03/23/87 )
+DY 1+ LDA TOS 1+ STA DY LDA TOS STA TOS ASL TOS 1+ ROL ( DY 2*)
+SEC DX LDA TOS SBC DX
+1+ LDA TOS 1+ SBC CS NOT IF ( DX<DY2*)
+PLA 8 # ORA PHA THEN THEN
+ANGLE-TAB >HI # LDA TOS 1+ STA
+ANGLE-TAB >LO # LDA TOSSTA
+PLA CLC TOS ADC TOS
+STA CS IF TOS 1+ INC THEN
+TOS X) LDA TOS STA TOS 1+ STY RTS END-CODE
+
+CODE ANGLE ' (ANGLE) >BODY JSR NEXT JMP END-CODE
+
+( structures for players and puck 11:13 02/05/87 )
+(2 = COMPUTER CONTROL )
+: @TIMER 10 + C@ ;
+: !TIMER 10 + C! ;
+: @SHOOT-COUNT 12 + C@ ;
+: !SHOOT-COUNT 12 + C! ;
+: @POSSESSION 13 + C@ ;
+: !POSSESSION 13 + C! ;
+: @ANIMATION 14 + C@ ;
+: !ANIMATION 14 + C! ;
+
+13:28 02/20/87 )
+PROC X2@ ( ADDR -- D )TOS LDA N STA TOS 1+ LDA N 1+ STA 0 # LD
+Y DEX DEX N )Y LDA TOS STA INY N )Y LDA TOS 1+ STA
+INY N )Y LDA TOS 2+ STA
+INY N )Y LDA TOS 3 + STA
+NEXT JMP END-PROC
+
+PROC X2! ( D ADDR -- ) TOS L
+DA N STA TOS 1+ LDA N 1+ STA 0 # LDY
+INX INX TOS LDA N )Y STA
+INX INY TOS LDA N )Y STA
+INX INY TOS LDA N )Y STA
+INX INY TOS LDA N )Y STA INX
+NEXT JMP END-PROC
+
+( @XY !XY @VELOCITY !VELOCITY 13:51 02/20/87 )
+CODE @XY ( : @XY 4 + 2@;
+( PLAYER --- X Y )
+CLC 4 # LDA TOS ADC TOS STA
+TYA TOS 1+ ADC TOS 1+ STA
+X2@ JMP END-CODE
+
+CODE !XY ( : !XY 4 + 2!; ( X Y PLAYER ---- )
+CLC 4 # LDA TOS ADC TOS STA
+TYA TOS 1+ ADC TOS 1+ STA
+X2! JMP END-CODE
+
+CODE @VELOCITY X2@ JMP END-CODE
+CODE !VELOCITY X2! JMP END-CODE
+
+( XC@ XC! @OREINTATION !ORIENTATION14:00 02/20/87 )
+PROC XC@TOS X) LDA TOS STATOS 1+ STY NEXT JMP END-PROC
+PROC XC!NOS LDA TOS X) STAPOP2 JMP END-PROC
+
+CODE @ORIENTATION
+CLC 8 # LDA TOS ADC TOS STA
+CS IF TOS 1+ INC THEN
+XC@ JMP END-CODE
+
+CODE !ORIENTATION
+CLC 8 # LDA TOS ADC TOS STA
+CS IF TOS 1+ INC THEN
+XC! JMP END-CODE
+
+( @FLAG !FLAG THUMP DECIMAL-INC 12:24 04/06/87 )
+CODE @FLAG
+CLC 9 # LDA TOS ADC TOS STA
+CS IF TOS 1+ INC THEN
+XC@ JMP END-CODE
+
+CODE !FLAG
+CLC 9 # LDA TOS ADC TOS STA
+CS IF TOS 1+ INC THEN
+XC! JMP END-CODE
+
+oops may have deleted something here tas 11/2/87
+X) STA
+INX INX NEXT JMP END-CODE
+
+( RIGHT-LINE-CHECK MAF 10:05 04/09/87 )
+0 .IF
+: RIGHT-LINE-CHECK ( X Y --- RX TRUE/ FALSE )
+OVER RIGHT-LINE
+U< IF 2DROP 0 EXIT THEN
+puck @VELOCITY SWAP NEGATE SWAP puck !VELOCITY
+DUP GOAL-TOP U< IF 2DROP
+[ RIGHT-LINE DIAM 256 * - ] LITERAL -1 EXIT THEN
+DUP GOAL-BOTTOM U> IF 2DROP
+[ RIGHT-LI
+NE DIAM 256 * - ] LITERAL -1 EXIT THEN
+DROP ( X ) GOAL-RIGHT > IF 0. puck !VELOCITY
+[ GOAL-RIGHT DIAM 256 * - ] LITERAL -1 ELSE 0 THEN ;
+
+( LEFT-LINE-CHECK 22:13 02/09/87 )
+: LEFT-LINE-CHECK ( X Y --- LX TRUE/ FALSE )
+OVER LEFT-LINE U> IF 2DROP 0 EXIT THEN
+puck @VELOCITY SWAP NEGATE SWAP puck !VELOCITY
+DUP GOAL-TOP U< IF 2DROP LEFT-LINE -1 EXIT THEN
+DUP GOAL-BOTTOM U> IF 2DROP LEFT-LINE -1 EXIT THEN
+DROP ( X ) GOAL-LEFT > IF 0. puck !VELOCITY
+GOAL-LEFT -1 ELSE 0 THEN ;
+
+( CHECK-PUCK-COLLISION MAF 10:05 04/09/87 )
+: CHECK-PUCK-COLLISION
+puck @XY DUP TOP-LINE U<
+IF DROP TOP-LINE 512 + puck !XY
+puck @VELOCITY NEGATE puck !VELOCITY BOUNCE-SND ELSE
+DUP BOTTOM-LINE DIAM 256* - U>
+IF DROP BOTTOM-LINE DIAM 256* - puck !XY
+puck @VELOCITY NEGATE puck
+!VELOCITY BOUNCE-SND ELSE 2DUP RIGHT-LINE-CHECK
+IF ROT DROP SWAP puck !XY
+BOUNCE-SND ELSE 2DUP LEFT-LINE-CHECK
+IF ROT DROP SWAP puck !XY
+BOUNCE-SND ELSE 2DROP THEN THEN THEN THEN ;
+.THEN
+
+( SOUNDS ENTRANT FROM ASSEMBLY 14:48 05/13/87 )
+PROC (PL/EDGE-SND)
+L-PL/EDGE # LDA ' START-SO
+UND >BODY JSR RTS END-PROC
+
+PROC (BOUNCE-SND)
+L-BOUNCE # LDA ' START-SOUND >BODY JSR RTS END-PROC
+
+( PUCK COLLISION MAF 10:05 04/09/87 )
+PROC NEGATE-YVELOCITY 0 # LDY
+0 # LDA SEC OBJECT )Y SBC OBJECT )YSTA IN
+Y 0 # LDA OBJECT )Y SBC OBJECT )Y
+STA RTS END-PROC
+
+PROC NEGATE-XVELOCITY 2 # LDY
+0 # LDA SEC OBJECT )Y SBC OBJECT )Y STA
+INY0 # LDA OBJECT )Y SBC OBJECT )Y STA
+RTS END-PROC
+
+CODE (NEGATE-YVELOCITY) NEGATE-YVELOCITY JSR NEXT JMP END-CODE
+CODE (NEGATE-XVELOCITY) NEGATE-XVELOCITY JSR NEXT JMP END-CODE
+
+( PUCK COLLISIONS CONTINUED 11:32 04/08/87 )
+ -1 .IF
+CODE CHECK-PUCK-COLLISION
+puck >HI # LDA OBJECT 1+ STA
+puck >LO # LDA OBJECTSTA
+puck 5 + LDA ( Y ) TOP-LINEH # CMP
+CS NOT IF TOP-LINEH # LDA puck 5 + STA
+(BOUNCE-SND) JSR NEGATE-YVELOCITY JSR
+0 # LDY OBJECT )Y LDA SEC 1 # SBC OBJECT )Y STA NEXT JMP THEN
+BOTTOM-LINEH DIAM - # CMP
+CS IF BOTTOM-LINEH DIAM - # LDA puck 5 + STA
+(BOUNCE-SND) JSR NEGATE-YVELOCITY JSR
+0 # LDY OBJECT )Y LDA CLC 1 # ADC OBJECT
+ )Y STA NEXT JMP THEN
+
+( PUCK COLLISION RIGHT SIDE11:35 04/08/87 )
+puck 7 + LDA ( X ) RIGHT-LINEH # CMP
+CS IF puck 5 + LDA GOAL-TOPH # CMP ( IN THE GOAL?)
+( NO ) CS NOT IF NEGATE-XVELOCITY JSR
+(BOUNCE-SND) JSRRIGHT-LINEH DIAM - DIAM - # LDA
+puck 7 + STA NEXT JMP THEN
+GOAL-BOTTOMH # CMP CS IF NEGATE-XVELOCITY JSR (BOUNCE-SND) JSR
+RIGHT-LINEH DIAM - DIAM - # LDA puck 7 + STA NEXT JMP THEN
+( puck 7 + LDA ( X ) ( GOAL-RIGHTH # CMP )
+( 0< NOT IF ) 0 # LDA puck STA puck 1+ STA puck 2+ STA
+puck 3 + STA ( 0 VELOCITY) RIGHT-LINEH DIAM + # LDA
+puck 7 + STA ( THEN ) THEN
+
+( PUCK COLLISION LEFT SIDE MAF 10:09 04/09/87 )
+puck 7 + LDA ( X ) LEFT-LINEH # CMP
+CS NOT IF puck 5 + LDA GOAL-TOPH # CMP ( IN THE GOAL?)
+( NO ) CS NOT IF NEGATE-XVELOCITY JSR
+(BOUNCE-SND) JSRLEFT-LINEH # LDA puck 7 + STA
+NEXT JMP THEN GOAL-BOTTOMH # CMP
+CS IF NEGATE-XVELOCITY JSR (BOUNCE-SND) JSR
+LEFT-LINEH # LDA puck 7 + STA NEXT JMP THEN ( GOAL!)
+( puck 7 + LDA ( X ) ( GOAL-LEFTH # CMP )
+( CS IF ) 0 # LDA puck STA puck 1+ STA puck 2+ STA
+puck 3 + STA ( 0 VELOCITY)
+GOAL-LEFTH # LDA puck 7 + STA ( THEN ) THEN NEXT JMP END-CODE
+.THEN
+
+( CHECK-PUCK-GOALIE21:36 02/22/87 )
+: CHECK-PUCK-GOALIE puck @XY
+DUP GOALIE1-Y @ 1+ U> OVER GOALIE1-Y @ GOAL-HEIGHT + U< AND
+2 PICK GOAL1-X U< AND IF 2DROP puck @VELOCITY SWAP NEGATE SWAP
+puck !VELOCITY SAVES1 DECIMAL-INC UPDATE-SCORE SAVE-SND
+puck @XY SWAP DROP GOAL1-X SWAP puck !XY ELSE
+DUP GOALIE2-Y @ 1+ U> SWAP GOALIE2-Y @ GOAL-HEIGHT + U< AND
+SWAP GOAL2-X U> AND IF puck @VELOCITY SWAP NEGATE SWAP
+puck !VELOCITY SAVES2 DECIMAL-INC UPDATE-SCORE SAVE-SND
+puck @XY SWAP DROP GOAL2-X SWAP puck !XY
+THEN THEN ;
+
+(11:06 04/09/87 )
+( : V- ROT SWAP - >R - R> ; )
+( : V+ ROT + >R + R> ; )
+CODE V+ ( V1 V2 ---- V1+V2 )
+CLC TOS LDA NOS 2+ ADC NOS 2+ STA
+TOS 1+ LDA NOS 3 + ADC NOS 3 + STA
+CLC NOS LDA NOS 4 + ADC NOS 4 + STA
+NOS 1+ LDA NOS 5 + ADC NOS 5 + STA
+POP2 JMP END-CODE
+
+CODE V- ( V1 V2 ---- V1-V2 )
+SEC NOS 2+ LDA TOS SBC NOS 2+ STA
+NOS 3 + LDA TOS 1+ SBC NOS 3 + STA
+SEC NOS 4 + LDA NOS SBC NOS 4 + STA
+NOS 5 + LDA NOS 1+ SBC NOS 5 + STA
+POP2 JMP END-CODE
+
+( NORM-SQ as PROC 11:59 04/09/87 )
+( : NORM-SQ ABS SQUISH SQUARE SWAP ABS SQUISH SQUARE + ; )
+PROC (NORM-SQ) TOS 1+ LDA 0< IF ( ABS )
+SEC TYA TOS SBC TOS STA TYA TOS 1+ SBC TOS 1+ STA THEN
+6 # LDY ( SQUISH- 7 0 DO 2/ LOOP 2* SQUARE + )
+1$: TOS 1+ LSR TOS ROR DEY 1$ BNE
+TOS LDA 254 # AND TOS STA
+CLC SQUARE-TABLE >LO # LDA TOS ADC N STA
+SQUARE-TABLE >HI # LDA TOS 1+ ADC N 1+ STA
+N )Y LDA TOS STA INY N )Y LDA TOS 1+ STA
+
+(14:32 04/09/87 )
+NOS 1+
+LDA 0< IF SEC 0 # LDY
+TYA NOS SBC NOS STA TYA NOS 1+ SBC
+NOS 1+ STA THEN 6 # LDY ( SQUISH-1 TO GO TO SQUARE )
+2$: NOS 1+ LSR NOS ROR DEY 2$ BNE
+NOS LDA 254 # AND NOS STA
+CLC SQUARE-TABLE >LO # LDA NOSADC NSTA
+SQUARE-TABLE >HI # LDA NOS 1+ ADC N 1+ STA
+CLC N )Y LDA TOS ADC NOS STA
+INY N )Y LDA TOS 1+ ADC NOS 1+ STA
+INX INX RTS ( POP JMP ) END-PROC
+
+CODE NORM-SQ (NORM-SQ) JSR NEXT JMP END-CODE
+
+( NORM-SQ2 14:33 04/09/87 )
+( : NORM-SQ2 ABS 256/ SQUARE SWAP ABS 256/ SQUARE + ; )
+CODE NORM-SQ2 TOS 1+ LDA 0< IF ( ABS )
+SEC TYA TOS SBC TOS STA TYA TOS 1+ SBC TOS 1+ STA THEN
+7 # LDY ( SQUISH- 7 0 DO 2/ LOOP 2* SQUARE + )
+1$: TOS 1+ LSR TOS ROR DEY 1$ BNE
+TOS LDA 254 # AND TOS STA CLC SQUARE-TABLE >LO # LDA TOSADC NSTA
+SQUARE-TABLE >HI # LDA TOS 1+ ADC N 1+ STA
+N )Y LDA TOS STA INY N )Y LDA TOS 1+ STA
+
+( 14:32 04/09/87 )
+NOS 1+ LDA 0< IF SEC 0 #
+LDY TYA NOS SBC NOS STA TYA NOS 1+ SBC
+NOS 1+ STA THEN
+7 # LDY ( SQUISH-1 TO GO TO SQUARE )
+2$: NOS 1+ LSR NOS ROR DEY 2$ BNE
+NOS LDA 254 # AND NOS STA
+CLC SQUARE-TABLE >LO # LDA NOSADC NSTA
+SQUARE-TABLE >HI # LDA NOS 1+ ADC N 1+ STA
+CLC N )Y LDA TOS ADC NOS STA
+INY N )Y LDA TOS 1+ ADC NOS 1+ STA
+POP JMP END-CODE
+
+( DECAY1 puck decelleration 15:03 04/09/87 )
+( : DECAY1 DUP 0< SWAP ABS DUP -4 SHIFT - SWAP IF NEGATE THEN ;)
+CODE DECAY1 TOS 1+ LDA 0< IF ( ABS ) 255 # LDA N 3 + STA
+SEC TYA TOS SBC TOS STA TYA TOS 1+ SBC TOS 1+ STA
+ELSE 00 # LDA N 3 + STA THEN
+TOS LDA N STA TOS 1+ LDA N 1+ STA
+5 # LDY 1$: N 1+ LSR N ROR DEY 1$ BNE
+SEC TOS LDA N SBC TOS STA
+TOS 1+ LDA N 1+ SBC TOS 1+ STA
+N 3 + LDA 0< IF ( FIX SIGN UP )
+SEC TYA TOS SBC TOS STA
+TYA TOS 1+ SBC TOS 1+ STA THEN
+NEXT JMP END-CODE
+
+( DECAY2 player decelleration as CODE 15:14 04/09/87 )
+( : XDECAY2 DUP 0< SWAP ABS DUP 5 SHIFT SWAP 2*
+- -5 SHIFT SWAP IF NEGATE THEN ; )
+CODE DECAY2 (DECAY2) JSR NEXT JMP END-CODE
+
+( SLOW-DOWN-PUCK DECAY2 11:10 02/09/87 )
+: SLOW-DOWN-PUCK puck @VELOCITY 2DUP NORM-SQ 25 >
+IF DECAY1 SWAP DECAY1 SWAP
+puck !VELOCITY ELSE 2DROP THEN ;
+
+( DECAY2 player decelleration as PROC 15:14 04/09/87 )
+( : DECAY2 DUP 0< SWAP ABS DUP 5 SHIFT
+SWAP 2* - -5 SHIFT SWAP IF NEGATE THEN ; )
+PROC (DECAY2) TOS 1+ LDA 0< IF ( ABS ) 255 # LDA N 3 + STA
+SEC TYA TOS SBC TOS STA TYA TOS 1
++ SBC TOS 1+ STAELSE 00 # LDA N 3 + STA THEN
+TOS LDA N STA TOS 1+ LDA N 1+ STA
+4 # LDY 1$: N ASL N 1+ ROL DEY 1$ BNE
+TOS ASL TOS 1+ ROL ( 2* )
+SEC N LDA TOS SBC TOS STA
+N 1+ LDA TOS 1+ SBC TOS 1+ STA
+4 # LDY 2$: TOS 1+ LSR TOS ROR DEY 2$ BNE ( -5 SHIFT )
+N 3 + LDA 0< IF ( FIX SIGN UP )
+SEC TYA TOS SBC TOS STA
+TYA TOS 1+ SBC TOS 1+ STA THEN RTS END-PROC
+
+( THUMP V256/ rounds it! JJT 09:27 08/27/87 )
+( : SQUISH 7 0 DO 2/ LOOP ; : UNSQUISH 7 SHIFT ; )
+: RANDOM-SOUNDS CYCLE# C@ 63 AND 0= IF (RANDOM-SOUND) THEN ;
+: (RANDOM-SOUND)SYSTIMER C@ 3 AND CASE
+0 OF BUGLE-SND ENDOF 1 OF HIWOLF-SND ENDOF
+2 OF LOWOLF-SND ENDOF 3 OF UPWHIS-SND ENDOF UPWHIS-SND ENDCASE ;
+
+CODE V256/( N1 N2 --- N1/256 N2/256 modified--rounded)
+TOS 1+ LDY TOS LDA 0< IF INY THEN TOS STY
+NOS 1+ LDY NOS LDA 0< IF INY THEN NOS STY
+0 # LDA TOS 1+ STA NOS 1+ STA NEXT JMP END-CODE
+
+( SCALE VSCALE V* RESOLVE forget this!! 09:27 08/27/87 )
+0 .IF
+: <IP> ROT * >R * R> + ;
+: SCALE ( A B-- A ) 0 DO 2/ LOOP ;
+: VSCALE ( A B C-- A B ) ROT ( B C A )
+OVER ( B C A C ) SCALE ( B C A ) ROT ( C A B )ROT ( A B C )
+SCALE ; ( A B ) : V* ROT OVER * ROT ROT * ;
+: RESOLVE ( EXPANDED IN LINE...SEE NEXT SCREEN )
+2OVER ROT * >R * R> +
+LOG(FAT) 0 DO 2/ LOOP
+ROT OVER * ROT ROT * LOG(FAT)
+ROT OVER 0 DO 2/ LOOP
+ROT ROT 0 DO 2/ LOOP ;
+.THEN
+
+( resolve 17:15 08/24/87 )
+0 .IF
+/| v / | / | / |/|/----->----------------------->
+<a,v>a a
+: RESOLVE ( a v--<a,v>a) 2OVER <IP> LOG(FAT) SCALE
+V* LOG(FAT) VSCALE ;
+( This calculation assumes that the norm or length of )
+( a = ball diameter. Accuracy of the calculation varies )
+( to the degree that this assumption is true. )
+.THEN
+
+( COLLIDE 17:16 08/24/87 )
+( calculate and store new velocities for PLAYER1 AND PLAYER2
+when they collide. Assumed they are currently touching )
+0 .IF
+: COLLIDE ( -- )
+PLAYER1 @VELOCITY PLAYER2 @VELOCITY PLAYER2 @XY PLAYER1 @XY
+V- ( vx1 vy1 vx2 vy2 Dx Dy--) 2DUP NEGATE 2
+SWAP ( 90-ROT ) >R >R 2SWAP RESOLVE 2SWAP
+( v1 v2 b1 ) R> R> 2SWAP RESOLVE V+
+( <v2,b1>b1 b2 v1 )PLAYER1 @VELOCITY PLAYER2 @VELOCITY V+
+2OVER V- PLAYER1 !VELOCITY PLAYER2 !VELOCITY ;
+.THEN
+
+0 .IF
+: COLLIDE PLAYER1 @VELOCITY PLAYER2 @VELOCITY
+2OVER 2/ SWAP 2/ SWAP 2OVER V+ PLAYER2 !VELOCITY
+2/ SWAP 2/ SWAP V+ PLAYER1 !VELOCITY ;
+.THEN
+
+( COLLIDE new improved and simplified--jjt 09:11 08/27/87 )
+-1 .IF
+: COLLIDE PLAYER1 @VELOCITY 2*
+PLAYER2 @VELOCITY 2*
+PLAYER1 !VELOCITY
+PLAYER2 !VELOCITY ;
+.THEN
+
+( ORIENTATION TABLES RECTANGLES1 18:48 02/08/87 )
+L: RECTANGLES1 ( collision detection tables NO puck )
+( ulx uly lrx lry puckx pucky )
+2 C, 0 C, 15 C, 19 C, 15 , 16 , ( ORIENTATION 0 )
+3 C, 2 C, 19 C, 15 C, 19 , 4 , ( 1 )
+3 C, 0 C, 13 C, 18 C, 13 , -2 , ( 2 )
+1 C, 0 C, 9 C, 24 C, 2 , 0 , ( 3 )
+0 C, 0 C, 13 C, 19 C, -2 , 2 , ( 4 )
+0 C, 2 C, 16 C, 15 C, -2 , 11 , ( 5 )
+0 C, 2 C, 12 C, 20 C, 1 , 21 , ( 6 )
+0 C, 2 C, 10 C, 24 C, 8 , 23 , ( 7 )
+
+( ORIENTATION TABLES RECTANGLES2 18:48 02/08/87 )
+L: RECTANGLES2 ( collision detection tables WITH puck )
+( ulx `E10 lrx lry puckx pucky )
+2 C, 0 C, 15 DIAM + C, 19 C, 15 , 16 , ( ORIENTATION 0 )
+3 C, 2 C, 19 C, 15 C, 19 , 4 , ( 1 )
+3 C, 0 DIAM - C, 13 C, 18C, 13 , -2 , ( 2 )
+1 C, 0 C, 9 C, 24 C, 2 , 0 , ( 3 )
+0 DIAM - C, 0 C, 13 C, 19 C, -2 , 2 , ( 4 )
+-2 C, 2 C, 16 C, 15 C, -2 , 11 , ( 5 )
+0 C, 2 C, 12 C, 20 DIAM + C, 1 , 21 , ( 6 )
+0 C, 2 C, 10 C, 24 C, 8 , 23 , ( 7 )
+
+( CALC-RTAB as CODE17:06 04/09/87 )
+CODE CALC-RTAB ( PLAYER ---- )
+CLC 8 # LDA TOS ADC N STA TYA TOS 1+ ADC N 1+ STA
+N )Y LDA N STAN 1+ STY N
+ASL N 1+ ROL N ASL N 1+ ROL
+N ASL N 1+ ROL
+CLC 13 # LDA TOS ADC TOS STA
+CS IF TOS 1+ INC THEN
+TOS X) LDA 0= IF RECTANGLES1 >LO # LDA RTABSTA
+RECTANGLES1 >HI # LDA RTAB 1+ STA
+ELSE RECTANGLES2 >LO # LDA RTAB
+STA RECTANGLES2 >HI # LDA RTAB 1+ STA
+THEN CLC RTAB LDA
+N ADC RTAB STA RTAB 1+ LDA N 1+ ADC RTAB 1+
+STA POP JMP END-CODE
+
+( CALC-RTAB px py 19:41 02/08/87 )
+0 .IF
+: CALC-RTAB ( PLAYER ---- ) DUP >R @ORIENTATION 2 * 2* 2*
+R> @POSSESSION IF RECTANGLES2 ELSE RECTANGLES1 THEN + RTAB !;
+: px ( --- px ) RTAB @ 4 + @ 256* ;
+: py ( --- py ) RTAB @ 6 + @ 256* ;
+.THEN
+
+( lrx lry 12:21 03/31/87 )
+CODE lrx DEX DEX TOS STY 2 # LDY
+RTAB )Y LDA TOS 1+ STA NEXT JMP END-CODE
+
+CODE lry DEX DEX TOS STY 3 # LDY
+RTAB )Y LDA TOS 1+ STA NEXT JMP END-CODE
+
+CODE px DEX DEX TOS STY 4 # LDY
+RTAB )Y LDA TOS 1+ STA NEXT JMP END-CODE
+
+CODE py DEX DEX TOS STY 6 # LDY
+RTAB )Y LDA TOS 1+ STA NEXT JMP END-CODE
+
+( ulx uly 14:48 02/20/87 )
+CODE ulx DEX DEX TOS STY
+RTAB )Y LDA TOS 1+ STA NEXT JMP END-CODE
+
+CODE uly DEX DEX TOS STY
+INY RTAB )Y LDA TOS 1+ STA NEXT JMP END-CODE
+
+CODE !OBJECT puck >HI # LDA OBJECT 1+ STA
+puck >LO # LDA OBJECTSTA NEXT JMP END-CODE
+
+( CHECK-PUCK-PLAYER orig 21:37 02/08/87 )
+0 .IF
+: CHECK-PUCK-PLAYER DUP >R @POSSESSION ?DUP
+IF 1- ?DUP IF R> !POSSESSION ELSE R> DROP THEN
+ELSE PLAYER1 @POSSESSION PLAYER2 @POSSESSION + 2 <
+IF R@ @SHOOT-COUNT 0= IF R@ CALC-RTAB puck @XY R@
+@XY px py V+ V- NORM-SQ2
+PUCK-STICK-THRESHOLD U<
+IF R@ @XY px py V+ puck !XY
+0 PLAYER1 !POSSESSION 0 PLAYER2 !POSSESSION
+20 R@!POSSESSION 0. puck !VELOCITY
+puck @FLAG 1 OR puck !FLAG PICKUP-SND
+THEN THEN THEN R> DROP THEN ;
+.THEN
+
+: CHECK-PUCK-PLAYER DUP >R @POSSESSION ?DUP
+IF 1- ?DUP IF R> !POSSESSION ELSE R> DROP THEN
+ELSE PLAYER1 @POSSESSION PLAYER2 @POSSESSION + 2 <
+IF R@ @SHOOT-COUNT 0= IF R@ CALC-RTAB puck @XY R@
+@XY px py V+ V- NORM-SQ2 PUCK-STICK-THRESHOLD U<
+IF R@ @XY px py V+ puck !XY (RANDOM-SOUND)
+0 PLAYER1 !POSSESSION 0 PLAYER2 !POSSESSION
+10 R@!POSSESSION 0. puck !VELOCITY
+puck @FLAG 1 OR puck !FLAG PICKUP-SND
+ELSE !OBJECT ( PUCK-PLAYER-THRESHOLD= )
+ulx lrx + 2/ uly lry + 2/ R@ @XY
+V+ puck @XY V- NORM-SQ2 050 U<
+IF BOUNCE-SND (NEGATE-YVELOCITY)
+(NEGATE-XVELOCITY) THEN
+THEN THEN THEN R> DROP THEN ;
+
+( MOVE-PUCK 13:31 02/05/87 )
+: MOVE-PUCK WHIZ-COUNT C@ 0= IF
+puck @FLAG 1 AND IF PLAYER1 @POSSESSION IF PLAYER1 DUP CALC-RTAB
+@XY px py V+ puck !XY
+ELSE PLAYER2 DUP CALC-RTAB
+@XY px py V+ puck !XY THEN
+ELSE puck @VELOCITY puck @XY ( DX DY X Y )
+V+ OVER [ 200 256 * ] LITERAL U> IF
+SWAP DROP 3 SWAP THEN
+puck !XY CHECK-PUCK-GOALIE CHECK-PUCK-COLLISION
+SLOW-DOWN-PUCK THEN PLAYER1 CHECK-PUCK-PLAYER
+PLAYER2 CHECK-PUCK-PLAYER
+THEN ;
+
+( CHECK-PLAYER-PLAYER 10:49 02/11/87 )
+-1 .IF
+: CHECK-PLAYER-PLAYER PLAYER1 @XY PLAYER2 @XY V- ( DX DY ) NORM-SQ2
+PLAYER-PLAYER-THRESHOLD U< IF PL/PLYR-SND COLLIDE THEN ;
+.THEN
+
+0 .IF ( DO NOT USE YET )
+: CHECK-PLAYER-PLAYER
+PLAYER1 @XY PLAYER2 @XY V- ( DX DY ) NORM-SQ2
+PLAYER-PLAYER-THRESHOLD U< IF PL/PLYR-SND
+PLAYER1 @VELOCITY PLAYER2 @VELOCITY
+PLAYER1 @XY PLAYER2 @XY
+( v1 v2 c1 c2 ) 8 0 DO 7 PICK LOOP
+COLLIDE1 COLLIDE2 THEN ;
+.THEN
+
+( PLAYER-COLLISION WITH WALLS 00:29 02/05/87 )
+0 .IF
+: CHECK-PLAYER-COLLISION >R R@ @XY DUP
+uly + TOP-LINEU< IF DROP TOP-LINE uly - 2DUP
+R@ !XY PL/EDGE-SND R@ SLOW-DOWN-PLAYER R@ SLOW-DOWN-PLAYER
+R@ @VELOCITY NEGATE R@ !VELOCITY THEN DUP
+lry + BOTTOM-LINE U> IF DROP BOTTOM-LINE lry - 2DUP
+R@ !XY PL/EDGE-SND R@ SLOW-DOWN-PLAYER R@ SLOW-DOWN-PLAYER
+R@ @VELOCITY NEGATE R@ !VELOCITY THEN SWAP DUP
+lrx + RIGHT-LINE U> IF DROP RIGHT-LINE lrx - SWAP 2DUP
+R@ !XY PL/EDGE-SND R@ SLOW-DOWN-PLAYER R@ SLOW-DOWN-PLAYER
+R@ @VELOCITY SWAP NEGATE SWAP R@ !VELOCITY THEN
+DUP ulx + LEFT-LINE U< IF DROP LEFT-LINE ulx - SWAP 2DUP
+R@ !XY PL/EDGE-SND R@ SLOW-DOWN-PLAYER R@ SLOW-DOWN-PLAYER
+R@ @VELOCITY SWAP NEGATE SWAP R@ !VELOCITY THEN
+R> DROP 2DROP ;
+.THEN
+
+( CHECK-PLAYER-COLLISION 6502 REMAKE MAF/JDS 1/2 04/13/87 )
+CODE CHECK-PLAYER-COLLISION ( PLAYER --- )
+TOS LDA OBJECT STA TOS 1+ LDA OBJECT 1+ STA
+5 # LDY OBJECT )Y LDA CLC 1 # LDY RTAB )Y ADC
+TOP-LINEH # CMP CS NOTIF SEC TOP-LINEH #
+LDA RTAB )Y SBC 5 # LDY OBJECT )Y STA NEGATE-YVELOCITY JSR
+(PL/EDGE-SND) JSR THEN 5 # LDY OBJECT )Y LDA CL
+C 3 # LDY RTAB )Y ADC BOTTOM-LINEH # CMP CS
+IF SEC BOTTOM-LINEH # LDA RTAB )Y SBC 5 # LDY OBJECT )
+Y STA NEGATE-YVELOCITY JSR (PL/EDGE-SND) JSR
+THEN
+
+( CHECK-PLAYER-COLLISION 6502 CONT. 2/210:22 04/13/87 )
+7 # LDY OBJECT )Y LDA CLC 2 # LDY RTAB )Y ADC
+RIGHT-LINEH # CMP CS
+IF SEC RIGHT-LINEH # LDA RTAB )Y SBC 7 # LDY OBJECT )Y STA
+NEGATE-XVELOCITY JSR (PL/EDGE-SND) JSR
+THEN 7 # LDY OBJECT )Y LDA CLC 0 # LDY RTAB )Y ADC
+LEFT-LINEH # CMP CS NOT
+IF SEC LEFT-LINEH # LDA RTAB )Y SBC 7 # LDY OBJECT )Y STA
+NEGATE-XVELOCITY JSR (PL/EDGE-SND) JSR
+THEN POP JMP END-CODE
+
+( CHECK-PLAYER-GOALIE CODE ... MAF11:57 04/13/87 )
+0 .IF
+CODE (CHECK-PLAYER-GOALIE) ( PLAYER---)( misng CALC-RTAB )
+TOS LDA OBJECT STA TOS 1+ LDA OBJECT 1+ STA
+7 # LDY CLC OBJECT )Y LDA 0 # LDY RTAB )Y ADC
+LEFT-LINEH GOAL-WIDTH + # CMP ( X:LEFTLINE) CS
+IF 5 # LDY OBJECT )Y LDA CLC 3 # LDY RTAB )Y ADC ( LY )
+GOALIE1-Y 1+ CMP CS NOT IF 5 # LDY OBJECT )Y LDA
+CLC 1 # LDY RTAB )Y ADC ( UY )
+N STA CLC GOALIE1-Y 1+ LDA GOAL-HEIGHTH # ADC
+N CMP CS NOT IF (PL-GO-BOUNCE) JSR THEN
+THEN POP JMP THEN
+
+( CHECK-PLAYER-GOALIE called by hi-level 11:57 04/13/87 )
+7 # LDY CLC OBJECT )Y LDA 2 # LDY RTAB )Y ADC
+RIGHT-LINEH GOAL-WIDTH 1+ - # CMP CS NOT
+IF 5 # LDY OBJECT )Y LDA CLC 3 # LDY RTAB )Y ADC
+GOALIE2-Y 1+ CMP CS NOT IF
+5 # LDY OBJECT )Y LDA CLC 1 # LDY RTAB )Y ADC
+N STA CLC GOALIE2-Y 1+ LDA GOAL-HEIGHTH # ADC
+N CMP CS NOT IF (PL-GO-BOUNCE) JSR THEN
+THEN POP JMP THEN POP JMP END-CODE
+
+: CHECK-PLAYER-GOALIE ( PLAYER -- )
+DUP >R CALC-RTAB (CHECK-PLAYER-GOALIE) R> DROP ;
+.THEN
+: CHECK-PLAYER-GOALIE ( PLAYER )
+DUP >R CALC-RTAB R@ @XY DROP
+ulx + [ LEFT-LINE GOAL-WIDTH 256 * + ] LITERAL U<
+IF GOALIE1-Y @ GOAL-HEIGHT + uly R@ @XY SWAP DROP + U>
+GOALIE1-Y @ lry R@ @XY SWAP DROP +
+U< AND IF OLD-XY 2@ R@ !XY
+R@ @VELOCITY SWAP NEGATE SWAP
+ NEGATE R@ !VELOCITY THEN ELSE
+R@ @XY DROP lrx +
+[ RIGHT-LINE GOAL-WIDTH 256 * - ] LITERAL U>
+IF uly R@ @XY SWAP DROP + GOALIE2-Y @ GOAL-HEIGHT + U<
+lry R@ @XY SWAP DROP + GOALIE2-Y @ U> AND IF OLD-XY 2@ R@ !XY
+R@ @VELOCITY SWAP NEGATE SWAP NEGATE R@ !VELOCITY THEN
+THEN THEN R> DROP ;
+
+( CHECK-PLAYER-GOALIE in hi_levelMAF 11:57 04/13/87 )
+0 .IF
+PROC (PL-GO-BOUNCE) OLD-XY 1+ LDA 5 # LDY OBJECT )Y STA
+OLD-XY 3 + LDA 7 # LDY OBJECT )Y STA
+NEGATE-XVELOCITY JSR RTS END-PROC
+
+CODE PL-GO-BOUNCE (PL-GO-BOUNCE) JSR NEXT JMP END-CODE
+: CHECK-PLAYER-GOALIE ( PLAYER ) DUP >R CALC-RTAB
+R@ @XY DROP ulx + [ LEFT-LINE GOAL-WIDTH 256 * + ] LITERAL U<
+IF GOALIE1-Y @ GOAL-HEIGHT + uly R@ @XY SWAP DROP + U>
+GOALIE1-Y @ lry R@ @XY SWAP DROP + U<
+AND IF PL-GO-BOUNCE THEN
+
+( CHECK-PLAYER-GOALIE in 4TH MAF 11:57 04/13/87 )
+ELSE R@ @XY DROP lrx +
+[ RIGHT-LINE GOAL-WIDTH 256 * - ] LITERAL U>
+IF uly R@ @XY SWAP DROP + GOALIE2-Y @ GOAL-HEIGHT + U<
+lry R@ @XY SWAP DROP + GOALIE2-Y @
+U> AND IF PL-GO-BOUNCE THEN
+THEN THEN R> DROP ;
+.THEN
+
+( SLOW-DOWN-PLAYER as PROC MAF14:01 07/14/87 )
+0 .IF
+CODE (SLOW-DOWN-PLAYER) ( PLAYER -- )
+TOSLDA OBJECTSTA( PLAYER to OBJECT )
+TOS 1+ LDA OBJECT 1+ STA
+DEX DEX OBJECT )Y LDA TOS STA ( @VELOCITY )
+INY OBJECT )Y LDA TOS 1+ STA
+INY OBJECT )Y LDA TOS 2+ STA
+INY OBJECT )Y LDA TOS 3 + STA
+(DECAY2) JSR INX INX (DECAY2) JSR DEX DEX
+( decayed velocity ) 0 # LDY TOS LDA OBJECT )Y STA
+( !VELOCITY ) INY TOS 1+ LDA OBJECT )Y STA
+INY TOS 2+ LDA OBJECT )Y STA INY TOS 3 + LDA OBJECT )Y STA
+(NORM-SQ) JSR
+
+( SLOW-DOWN-PLAYER as COLON 00:27 02/05/87 )
+TOS LDA TOS 1+ ORA
+0= IF 0 # LDY OBJECT )Y STA
+INY OBJECT )Y STA
+INY OBJECT )Y STA
+INY OBJECT )Y STA THEN
+INX INX NEXT JMP END-CODE
+.THEN
+
+: SLOW-DOWN-PLAYER ( PLAYER --- )
+DUP @VELOCITY
+DECAY2SWAPDECAY2SWAP
+( 2DUP NORM-SQ 0= IF 2DROP 0. THEN)
+ROT !VELOCITY ;
+
+( NEAREST VELOCITY-TABLE 15:45 02/06/87 )
+: NEAREST ( START POS GOAL POS ---- NEXT ANGLE )
+( Calculates the nearest way to get to a position )
+2DUP = IF DROP ELSE
+2DUP - 5 > ( COUNTERCLOCKWISE ) IF DROP 2+ ELSE( 1 ) 2DUP - 3 >
+( COUNTERCLOCKWISE ) IF DROP 1+ ELSE
+2DUP - -5 < ( CLOCKWISE )
+IF DROP 2- ELSE( 1 )
+2DUP - -3 < ( CLOCKWISE )
+IF DROP 1- ELSE
+2DUP > ( TOO FAR ) IF DROP 1- ELSE
+DROP 1+ THEN THEN THEN THEN THEN THEN 7 AND ;
+
+L: VELOCITY-TABLE ( Y X PER DIRECTION )
+0 , 330 , -290 , 290 , -420 ,0 ,
+ ( 0 1 2 ) -290 , -290 , 0 , -330 ,290 , -290 ,
+ ( 3 4 5 ) 420 ,0 ,290 , 290
+, 0 ,0 , ( 6 7 8 ) ( was 320 400 640 )
+
+( 09:42 08/27/87 )
+L: SHOOT-TABLE ( shoot orientation, idx'd by count)
+ -1 , 1 , 1 , -1 ,
+( : ZOOM 2* DUP 2* + ; ( velocity multiplier for shooting )
+: ZOOM 2* 2* 2* ;
+
+( SHOOT SEQUENCE 09:36 02/09/87 )
+: SHOOT-SEQUENCE ( PLAYER --- )
+( DUP ) >R ( @SHOOT-COUNT 1 AND 0= IF )
+R@ @SHOOT-COUNT 1- 2* SHOOT-TABLE + @
+R@ @ORIENTATION + 7 AND R@ !ORIENTATION
+R@ @SHOOT-COUNT 3 = R@ @POSSESSION AND
+IF ( KICK puck IN ASS ) ( player shoot-count --- )
+WHACK-SND 0 R@ !POSSESSION ( CLEAR PLAYER FLAG )
+R@ @ORIENTATION 2* 2* VELOCITY-TABLE + 2@
+ZOOM SWAP ZOOM SWAP ( R@ @VELOCITY V+ ) puck !VELOCITY
+puck @FLAG 254 AND puck !FLAG THEN ( THEN )
+R@ @SHOOT-COUNT 1- R> !SHOOT-COUNT ;
+
+( APPLY-JOYSTICK MOVE-PLAYER 00:46 02/05/87 )
+( 32) 2700 EQU PLAYER-SPEED-LIMIT-Y
+( 16) 2000 EQU PLAYER-SPEED-LIMIT-X
+-2700 EQU -PLAYER-SPEED-LIMIT-Y
+-2000 EQU -PLAYER-SPEED-LIMIT-X
+: APPLY-JOYSTICK ( DIRECTION PLAYER ---- )
+>R 2* 2* VELOCITY-TABLE + 2@ R@ @VELOCITY D+
+DUP 0< IF -PLAYER-SPEED-LIMIT-Y MAX
+ELSE PLAYER-SPEED-LIMIT-Y MIN THEN
+SWAP DUP 0< IF -PLAYER-SPEED-LIMIT-X MAX
+ELSE PLAYER-SPEED-LIMIT-X MIN THEN
+SWAP R> !VELOCITY ;
+
+(12:47 08/29/87 )
+: MOVE-PLAYER ( PLAYER ---- )
+DUP >R @VELOCITY R@ @XY ( DX DY X Y ) 2DUP OLD-XY 2!
+V+ OVER [ 200 256 * ] LITERAL U> IF SWAP DROP 3 SWAP THEN
+R@ !XY R@ CALC-RTAB R@ CHECK-PLAYER-COLLISION
+R@ CHECK-PLAYER-GOALIE
+R> SLOW-DOWN-PLAYER ;
+
+( READ-JOY1 JDS OPTIMIZED INLINE FORTH 17:04 03/24/87 )
+: READ-JOY1 ( --- ORIENTATION ) PLAYER1 @FLAG 2 AND
+IF [ PLAYER1 10 + ] LITERAL ( TIMER ) C@ 0=
+IF SKILL C@ SCORE2 @ SCORE1 @ - - 0 MAX 2 ( 32) MIN
+ [ PLAYER1 10 + ] LITERAL C! [ PLAYER1 13 + ] LITERAL C@IF
+[ PLAYER1 4 + ] LITERAL 2@ ( XY) OVER 256/ 120 >
+IF 2DROP SHOOTFLAG1 ON 8 ELSE 156 111 2SWAP V256/ ANGLE 4 - 7 AND THEN
+ELSE [ PLAYER1 4 + ] LITERAL 2@ V256/
+[ puck 4 + ] LITERAL 2@ V256/ ANGLE THENELSE [ PLAYER1 10 + ]
+LITERAL C@ 1-[ PLAYER1 10 + ] LITERAL C!
+OLDJOY1 C@ THEN ELSE FB0 C@ IF SHOOTFLAG1 ON THEN
+?BLUE-ACTION THEN DUP OLDJOY1 C! ;
+
+( READ-JOY2 JDS OPTIMIZED INLINE FORTH17:04 03/24/87 )
+: READ-JOY2 ( --- ORIENTATION )
+PLAYER2 @FLAG 2 ANDIF [ PLAYER2 10 + ] LITERAL ( TIMER )
+C@ 0= IF SKILL C@ SCORE1 @ SCORE2 @ - - 0 MAX
+2 ( 32) MIN[ PLAYER2 10 + ] LITERAL C! [ PLAYER2 13 + ]
+LITERAL C@IF [ PLAYER2 4 + ] LITERAL 2@ ( XY)
+OVER 256/ 35 < IF 2DROP SHOOTFLAG2 ON 8
+( SHOOT PUCK ) ELSE 05 111 2SWAP V256/ ANGLE 4 - 7 AND THEN
+ELSE [ PLAYER2 4 + ] LITERAL 2@ V256/ [ puck 4 + ]
+LITERAL 2@ V256/ ANGLE THENELSE [ PLAYER2 10 + ]
+LITERAL C@ 1-[ PLAYER2 10 + ] LITERAL C! OLDJOY2 C@ THEN
+ELSE FB1 C@ IF SHOOTFLAG2 ON THEN ?REDD-ACTION
+THEN DUP OLDJOY2 C! ;
+
+( UPDATE SCORE JDS 1/2 11:37 03/24/87 )
+HEX CODE (UPDATE-SCORE) SCORE1 LDA PHA 0F # AND CLC 48 # ADC
+NUM1-N STA 83 # LDA NUM1-A STAPLA A LSR A LSR A LSR A LSR CLC
+48 # ADC NUM0-N STA 82 # LDA NUM0-A STA SCORE2 LDA PHA 0F #
+AND CLC 48 # ADC NUM3-N STA 85 # LDA NUM3-A STAPLA A LSR A LSR A
+LSR A LSR CLC 48 # ADC NUM2-N STA 84 # LDA NUM2-A STA SAVES1
+LDA PHA 0F # AND CLC 3E # ADC NUM8-N STA 8A # LDA NUM8-A STA
+PLA A LSR A LSR A LSR A LSR CLC 3E # ADC NUM7-N STA 89 #
+LDA NUM7-A STA
+
+( UPDATE SCORE JDS 2/2 11:37 03/24/87 )
+SAVES2 LDA PHA 0F # AND CLC 3E # ADC
+NUMA-N STA 8C # LDA NUMA-A STAPLA A LSR A LS
+R A LSR A LSR CLC 3E # ADCNUM9-N STA 8B # LDA
+NUM9-A STADEX DL-TABLE-START >HI #LDA TOS STA
+DEX DL-TABLE-START >LO #LDA TOS STADEX PLAYERS-ITAB
+ >HI #LDA TOS STADEX PLAYERS-ITAB >LO #LDA TOS STADEX NUMBERS-ETAB
+ >HI #LDA TOS STADEX NUMBERS-ETAB >LO #LDA TOS STA
+ BEGIN MSTAT BIT 0< UNTIL ( THEN WAIT FOR VBLANK )'
+(NEW-GRAPHICS) >BODY JMP ( N N N--) END-CODE
+
+CODE UPDATE-SCORE ' (UPDATE-SCORE) >BODY JSR NEXT JMP END-CODE
+DECIMAL
+
+( WHIZZING LIGHTS 1/3 11:15 03/25/87 )
+HEX CODE (WHIZ)WHIZ-COUNT LDA 0= IF RTS THEN 0<
+IF WHIZ-COUNT INC WHIZ-COUNT 1+ LDA0=
+IF R-TWIRLB # LDA RUT-I STA
+RLT-I STAWHIZ-COUNT 1+ INC
+ELSE 1 # CMP 0= IF R-TWIRLD # LDA RUT-I STA RLT-I STA
+WHIZ-COUNT 1+ INC
+ELSE 2 # CMP 0=
+IF R-TWIRLC # LDA RUT-I STA RLT-I STAWHIZ-COUNT 1+ INC
+ELSE WHIZ-COUNT 1+ STY R-TWIRLA # LDA RUT-I STA RLT-I STA
+THEN THEN THEN 89 # LDA RUT-A STA RLT-A STA
+
+( WHIZZING LIGHTS 2/3 12:04 03/25/87 )
+ELSE WHIZ-COUNT DEC WHIZ-COUNT 1+ LDA 0=
+IF B-TWIRLB # LDA BUT-I STA BLT-I STAWHIZ-COUNT 1+ INC
+ELSE 1 # CMP 0= IF B-TWIRLD # LDA
+BUT-I STA BLT-I STAWHIZ-COUNT 1+ INC ELSE
+2 # CMP 0= IF B-TWIRLC # LDA BUT-I STA BLT-I STAWHIZ-COUNT 1+ INC
+ELSE WHIZ-COUNT 1+ STY B-TWIRLA # LDA BUT-I STA BLT-I STA
+THEN THEN THEN 88 # LDA
+BUT-A STA BLT-A STA THEN FF # LDA NETPLUG STA
+
+( WHIZZING LIGHTS 3/3 11:15 03/25/87 )
+WHIZ-COUNT LDA 0= IF WHIZ-COUNT 1+ STY WHIZ-DONE
+DEC THEN DEX DL-TABLE-START >HI #LDA TOS STA
+DEX DL-TABLE-START >LO #LDA TOS STA
+DEX PLAYERS-ITAB >HI #LDA TOS STADEX PLAYERS-ITAB
+>LO #LDA TOS STADEX NETGOAL-ETAB >HI #
+LDA TOS STADEX NETGOAL-ETAB
+>LO #LDA TOS STABEGIN MSTAT BIT 0< UNTIL ( THEN WAIT FOR VBLANK )
+' (NEW-GRAPHICS) >BODY JMP
+( N N N--) END-CODE
+
+CODE WHIZ ' (WHIZ) >BODY
+JSR NEXT JMP END-CODE
+DECIMAL
+
+( TWIRLS - WHIZZING DURING ZAMBONI 1/2 11:24 04/14/87 )
+HEX CODE (TWIRL)WHIZ-COUNT 1+ LDA 0=
+IF B-TWIRLB # LDA BUT-I STA BLT-I STA
+R-TWIRLB # LDA RUT-I STA RLT-I STAWHIZ-COUNT 1+ INC
+ELSE 1 # CMP 0= IF B-TWIRLD # LDA BUT-I STA BLT-I
+STAR-TWIRLD # LDA RUT-I STA
+RLT-I STAWHIZ-COUNT 1+ INC
+ELSE 2 # CMP 0= IF B-TWIRLC # LDA
+BUT-I STA BLT-I STAR-TWIRLC # LDA
+RUT-I STA RLT-I STA WHIZ-COUNT 1+ INC
+ELSE WHIZ-COUNT 1+ STY B-TWIRLA # LDA
+BUT-I STA BLT-I STAR-TWIRLA # LDA RUT-I STA RLT-I STA
+THEN THEN THEN
+88 # LDA BUT-A STA BLT-A STA89 # LDA
+RUT-A STA RLT-A STA FF # LDA NETPLUG STA
+
+( TWIRLS - WHIZZING DURING ZAMBONI 2/2 11:24 04/14/87 )
+DEX DL-TABLE-START
+>HI #LDA TOS STA
+DEX DL-TABLE-START
+>LO #LDA TOS STA
+DEX PLAYERS-ITAB
+>HI #LDA TOS STADEX PLAYERS-ITAB
+>LO #LDA TOS STADEX NETGOAL-ETAB >HI #LDA TOS STADEX NETGOAL-ETAB
+>LO #LDA TOS STABEGIN MSTAT BIT 0< UNTIL
+( THEN WAIT FOR VBLANK )
+' (NEW-GRAPHICS) >BODY JMP ( N N N--) END-CODE
+
+CODE TWIRL ' (TWIRL) >BODY JSR NEXT JMP END-CODE
+
+DECIMAL DECIMAL
+
+( CHECK-FOR-GOAL 23:12 02/09/87 )
+: CHECK-FOR-GOAL
+puck @XY DUP GOAL-TOP U> IF GOAL-BOTTOM U<
+IF DUP RIGHT-LINE U> IF DROP -40 WHIZ-COUNT C!
+SCORE1 DECIMAL-INC GOAL-SND ELSE LEFT-LINE U< IF
+40 WHIZ-COUNT C! SCORE2 DECIMAL-INC GOAL-SND
+THEN THEN
+WHIZ-COUNT C@
+IF puck @FLAG 254 AND puck !FLAG0 PLAYER1 !POSSESSION
+0 PLAYER2 !POSSESSION UPDATE-SCORE WHIZ THEN
+ELSE DROP ( X---)THEN ELSE 2DROP ( X/Y) THEN ;
+
+( SERVEfixed per memo. jjt 09:43 08/27/87 )
+: SERVE 0 puck!
+FLAG 0 PLAYER1 !SHOOT-COUNT 0 PLAYER2
+!SHOOT-COUNT
+0 PLAYER1 !ORIENTATION 4 PLAYER2 !ORIENTATION
+0 PLAYER1 !POSSESSION 0 PLAYER2 !POSSESSION
+0 PLAYER1 !TIMER 0 PLAYER
+2 !TIMER0 0 PLAYER1 !VELOCITY 57 256* 104 256*
+PLAYER1 !XY0 0 PLAYER2 !VELOCITY 86 256* 102
+256* PLAYER2 !XY
+8 OLDJOY1 C! 8 OLDJOY2 C! 0 SHOOTFLAG1 !
+0 SHOOTFLAG2 ![ RIGHT-LINE LEFT-LINE - -1
+SHIFT 384 - LEFT-LINE + ] LITERAL
+[ 200 256 * ] LITERAL 0 puck
+!XY INIT-SOUND ANIMATOR 9000 0
+DO LOOP SERVE-SNDSYSTIMER C@ 4 AND 0=
+IF TOP-LINE 512 - puck !XY 0 2048
+ELSE BOTTOM-LINE 512 + puck !XY 0 -2048
+THEN puck !VELOCITY ANIMATOR ;
+
+( PLAYER1-PROCESS00:38 02/05/87 )
+: PLAYER1-PROCESS
+SHOOTFLAG1 C@ IF 4 PLAYER1 !SHOOT-COUNT
+SHOOTFLAG1 OFF THEN
+PLAYER1 @SHOOT-COUNT
+IF PLAYER1 SHOOT-SEQUENCE
+ELSE READ-JOY1 DUP 8 = IF
+150 111 PLAYER1 @XY( 156 )V256/ ANGLE 4 - 7 AND
+ELSE DUP THEN PLAYER1 @ORIENTATION SWAP NEAREST
+PLAYER1 !ORIENTATION PLAYER1 APPLY-JOYSTICK
+THEN PLAYER1 MOVE-PLAYER ;
+
+( PLAYER2-PROCESS10:43 02/11/87 )
+: PLAYER2-PROCESS
+SHOOTFLAG2 C@ IF 4 PLAYER2 !SHOOT-COUNT SHOOTFLAG2 OFF
+THEN PLAYER2 @SHOOT-COUNT IF PLAYER2 SHOOT-SEQUENCE
+ELSE READ-JOY2 DUP 8 = IF05 111 PLAYER2 @XY V256/
+ANGLE 4 - 7 AND ELSE DUP THEN
+PLAYER2 @ORIENTATION SWAP NEAREST PLAYER2
+!ORIENTATION PLAYER2 APPLY-JOYSTICK
+THEN PLAYER2 MOVE-PLAYER ;
+
+( UMIN UMAX DRAW-GOALIE1 DRAW-GOALIE216:39 02/22/87 )
+: UMIN 2DUP U>
+IF SWAP THEN DROP ;
+: UMAX 2DUP U< IF SWAP THEN DROP ;
+
+CODE DRAW-GOALIE1 TOS 1+
+LDA BLUE-GOALY-Y STA INX INX N
+EXT JMP END-CODECODE DRAW-GOALIE2 TOS 1+
+LDA REDD-GOALY-Y STA INX INX NEXT JMP END-CODE
+
+( GOALIEN-PROCESS15:51 02/22/87 )
+L: GOALIE-MOVES ( JOYSTICK -> Y CHANGE )
+0 , -2048 , -2048 , -2048 , 0 , 2048 , 2048 , 2048 , 0 ,
+
+: GOALIE1-PROCESS
+GOALIE1-Y @ OLDJOY1 C@ 2*
+GOALIE-MOVES + @ + GOAL-TOP UMAX
+[ GOAL-BOTTOM GOAL-HEIGHT - ] LITERAL UMIN
+DUP GOALIE1-Y !( GOAL1-X SWAP V256/) ( ---Y256*)
+DRAW-GOALIE1 ; : GOALIE2-PROCESS
+GOALIE2-Y @ OLDJOY2 C@ 2* GOALIE-MOVES + @ +
+GOAL-TOP UMAX [ GOAL-BOTTOM GOAL-HEIGHT - ]
+LITERAL UMIN DUP GOALIE2-Y !
+( GOAL2-X SWAP V256/ ) ( ---Y256*)
+DRAW-GOALIE2 ;
+
+( LIGHTEN-ICE DARKEN-ICE 13:26 04/09/87 )
+CODE (LIGHTEN-ICE) BG-TOP-ICE LDY INY BG-TOP-ICE STY RTS
+END-CODE
+
+CODE LIGHTEN-ICE ' (LIGHTEN-ICE) >BODY JSR
+NEXT JMP END-CODECODE (DARKEN-ICE) BG-TOP-ICE
+LDY DEY BG-TOP-ICE STY RTS
+END-CODE
+
+CODE DARKEN-ICE ' (DARKEN-ICE) >BODY JSR NEXT JMP END-CODE
+HEX
+
+( TIMER-INIT UPDATE-TIMER SUBROUTINE 1/2 09:04 04/07/87 )
+CODE TIMER-INIT TIMER STY SECONDS STY SAVES1 STY
+SAVES2 STY SCORE1 STY SCORE2 STY BONUS STY 2 #
+LDY MINUTES STY (INIT-TIMER) JSR NEXT JMP END-CODE
+
+CODE BONUS-INIT TIMER STY MINUTES STY 20 # LDY
+SECONDS STY BONUS STY (INIT-TIMER) JSR NEXT JMP
+END-CODE
+
+CODE DEMO-TIMER TIMER STY
+MINUTES STY SAVES1 STY SAVES2 STY SCORE1 STY
+SCORE2 STY BONUS STY 20 # LDY SECONDS STY NEXT JMP END-CODE
+
+CODE (UPDATE-TIMER) TIMER LDA 3C # CMP CS
+IF SECONDS LDA SED SEC 1 # SBC CLD
+SECONDS STA TIMER STY THEN SECONDS LDA 0<
+IF MINUTES LDA SED SEC 1 # SBC CLD
+MINUTES STA 59 # LDA SECONDS STA
+MINUTES LDA 1 # CMP 0= NOT
+IF' (LIGHTEN-ICE) >BODY JSR THEN THEN
+
+( UPDATE-TIMER SUBROUTINE CONT. 2/2 10:15 04/06/87 )
+L: (INIT-TIMER)SECONDS LDA PHA 0F # AND CLC 48 # ADC
+NUM6-N STA 88 # LDA NUM6-A STA
+PLA A LSR A LSR A LSR A LSR CLC 48 #
+ADCNUM5-N STA 87 # LDA
+NUM5-A STAMINUTES LDA CLC 48 #
+ADCNUM4-N STA 86 # LDA NUM4-A STA
+DEX DL-TABLE-START >HI #LDA TOS STA
+DEX DL-TABLE-START >LO #LDA TOS STA
+DEX PLAYERS-ITAB >HI #LDA TOS STA
+DEX PLAYERS-ITAB >LO #LDA TOS STA
+DEX NUMBERS-ETAB >HI #LDA TOS STA
+DEX NUMBERS-ETAB >LO #LDA TOS STA
+BEGIN MSTAT BIT 0< UNTIL ( THEN WAIT FOR VBLANK )
+' (NEW-GRAPHICS) >BODY JMP
+( N N N--) END-CODE
+
+( UPDATE-TIMER MIN-SEC-CHECK09:03 04/07/87 )
+CODE UPDATE-TIMER' (UPDATE-TIMER) >BODY JSR NEXT JMP END-CODE
+
+CODE MIN-SEC-CHECK DEX TOS STY DEX TOS STY
+MINUTES LDA 0= IF SECONDS LDA 0=
+IF DEY TOS STY THEN THEN NEXT JMP END-CODE
+
+CODE OVERTIME-SIGN-ONBEGIN MSTA
+T BIT 0< UNTIL ( THEN WAIT FOR VBLANK )
+OVERT# LDA BLUE-IMAGE# STA3E # LDA BLUE-X STA
+B8 # LDA BLUE-Y STA8A # LDA BLUE-ALTER STA'
+(PLAYER-FRAME-DISPLAY)
+>BODY JSR NEXT JMP END-CODE
+
+( GAMEOVER-SIGN-ON 14:50 04/08/87 )
+CODE GAMEOVER-SIGN-ONBEGIN MSTAT BIT 0< UNTIL
+( THEN WAIT FOR VBLANK )GOVER
+# LDA BLUE-IMAGE# STA3E # LDA BLUE-X STAB8 # LDA BLUE-Y STA
+8A # LDA BLUE-ALTER STA'
+(PLAYER-FRAME-DISPLAY) >BODY JSR NEXT JMP END-CODE
+
+CODE GAMEOVER-SIGN-OFFBEGIN MSTAT BIT 0< UNTIL
+( THEN WAIT FOR VBLANK )PUCK # LDA BLUE-IMAGE# STA
+AA # LDA BLUE-X STAB8 # LDA BLUE-Y STA8A
+ # LDA BLUE-ALTER STA'
+(PLAYER-FRAME-DISPLAY) >BODY JSR NEXT JMP END-CODE
+
+( ZAMBONI-MOVE 1/2 INCLUDES DIRECT-RTN 15:55 04/07/87 )
+CODE ZAMBONI-MOVE ( FELLA-IMAGE#/DX/DY --- ) '
+(TWIRL) >BODY JSR BEGIN MSTAT BIT 0< UNTIL
+( THEN WAIT FOR VBLANK ) 0 # LDY DEX DEX 0A # LDA TOS
+STA TOS 1+ STY DEX DEX 03 # LDA TOS STA
+TOS 1+ STY DEX DEX 14 # LDA TOS STA TOS 1+ STY
+' (DIRECT-ERASE) >BODY JSR 0 # LDY
+DEX DEX 0B # LDA TOS STA TOS 1+ STY
+DEX DEX 03 # LDA TO
+S STA TOS 1+ STY DEX DEX
+15 # LDA TOS STA TOS 1+ STY '
+(DIRECT-ERASE) >BODY JSR
+( ZAMBONI-MOVE 2/3 11:34 04/07/87 )
+BLUE-IMAGE# LDA 1 # EOR BLUE-IMAGE# STA
+BLUE-X LDA CLC NOS ADC BLUE-X STA
+BLUE-Y LDA CLC TOS ADC BLU
+E-Y STA 8A # LDA BLUE-ALTER
+STA NOS 2+ LDA REDD-IMAGE# STA
+REDD-X LDA CLC NOS ADC REDD-X
+STA REDD-Y LDA CLC TOS ADC REDD-Y
+STA 8B # LDA REDD-ALTER STA
+' (PLAYER-FRAME-DISPLAY) >BODY JSR
+' (TWIRL) >BODY JSR
+INX INX INX INX INX INX NEXT JMP END-CODE
+
+( ICE>LEFT 11:34 04/07/87 )
+CODE ZL ( ICE>LEFT) BLUE-X LDA BLUE-GO
+ALY-X STA REDD-GOALY-X STA PUCK-X STA
+BLUE-Y LDA BLUE-GOALY-Y STA CLC 8 # ADC
+REDD-GOALY-Y STA CLC 8 # ADC PUCK-Y STA
+BLUE-X LDA 1A # CMP CS IF 80 # LDA
+LONG-ICE # LDY ELSE 81 # LDA
+SHORT-ICE # LDY THENBLUE-GOALY-ALTER
+STA REDD-GOALY-ALTER STA PUCK-ALTER STA
+BLUE-GOALY-IMAGE# STY REDD-GOALY-IMAGE#
+STY PUCK-IMAGE# STY'
+
+(PLAYER-FRAME-DISPLAY)
+>BODY JSR NEXT JMP END
+-CODE
+( ICE>RIGHT 11:34 04/07/87 )
+CODE ZR ( ICE>R
+IGHT) BLUE-Y LDA BLUE-GOALY-Y STA
+CLC 8 # ADC REDD-GOALY-Y STA CLC 8 # ADC PUC
+K-Y STABLUE-X LDA 7F # CMP CS
+NOTIF 80 # LDA LONG-ICE # LDY
+BLUE-GOALY-ALTER STAREDD-GOALY
+-ALTER STA PUCK-ALTER STA BLUE-GOALY-IMAGE
+# STY REDD-GOALY-IMAGE# STY PUCK-IMAGE
+# STY BLUE-X LDA SEC 74 # SBC BLUE-GOALY-X
+STA REDD-GOALY-X STA PUCK-X
+STA ELSE 81 # LDA SHORT-ICE # LDY
+BLUE-GOALY-ALTER STA
+REDD-GOALY-ALTER STA PUCK-ALTER STA
+BLUE-GOALY-IMAGE# STY REDD-GOA
+LY-IMAGE# STY PUCK-IMAGE# STY ( 83)
+BLUE-X LDASEC 8 # SBC BLUE-GOALY-X STA
+REDD-GOALY-X STA PUCK-X STA
+THEN ' (PLAYER-FRAME-DISPLAY)
+>BODY JSR NEXT JMP END-CODE
+
+( SETUP-NET-ICE-RIGHT 14:11 05/12/87 )
+CODE SNIR ( SETUP-NET-ICE-RIGHT)
+BG-TOP-ICE LDA P6C1 STA P6C2
+STA P6C3 STA ( PAL 6)98 # LDA
+BLUE-GOALY-X STA REDD-GOALY-X
+STA PUCK-X STA 70 # LDA BLUE-GOALY-Y
+STA CLC 8 # ADC REDD-GOALY-Y STA
+CLC 8 # ADC PUCK-Y STA 81 # LDA
+BLUE-GOALY-ALTER STA REDD-GOALY-ALTER STA
+PUCK-ALTER STA NET-ICE # LDA BLUE-GOALY-IMAGE#
+STA REDD-GOALY-IMAGE# STA PUCK-IMAGE# STA
+' (PLAYER-FRAME-DISPLAY) >BODY JSR NEXT JMP END-CODE
+
+( SETUP-NET-ICE-LEFT 14:11 05/12/87 )
+CODE SNIL ( SETUP-NET-ICE-LEFT)
+BG-TOP-ICE LDA P6C1 STA P6C2 STA P6C3
+STA ( PAL 6)FC # LDA BLUE-GOALY-X STA
+REDD-GOALY-X STA PUCK-X STA
+58 # LDA BLUE-GOALY-Y STA CLC 8 # ADC
+REDD-GOALY-Y STACLC 8 # ADC PUCK-Y
+STA 81 # LDA BLUE-GOALY-ALTER STA
+REDD-GOALY-ALTER STAPUCK-ALTER STA
+NET-ICE # LDA BLUE-GOALY-IMAGE# STA
+REDD-GOALY-IMAGE# STA
+PUCK-IMAGE# STA
+' (PLAYER-FRAME-DISPLAY) >BODY JSR NEXT JMP END-CODE
+
+( ZAMBONI-INIT 11:36 04/07/87 )
+CODE ZAMBONI-INIT
+( ZAMBONI-X/ZAMBONI-Y --- )ZAM1 # LDA BLUE-IMAGE# STA
+NOS LDA BLUE-X STA TOS LDA BLUE-Y STA
+8A # LDA BLUE-ALTER STA FELLA1 # LDA REDD-IMAGE#
+STA NOS LDA CLC 3 # ADC REDD-X STA
+TOS LDA CLC 6 # ADC REDD-Y STA
+8B # LDA REDD-ALTER STA
+' (PLAYER-FRAME-DISPLAY) >BODY JSR
+INX INX INX INX NEXT JMP END-CODE
+
+( SCOREFLASH-PREP08:44 04/20/87 )
+: WAIT 50 0 DO 0 DROP LOOP SCOREFLASH-RTN ;
+CODE SCOREFLASH-PREP SCOREFLASH STY
+( DELAY COUNTER ) SCORE1 1+ STY
+( PHASE FLAG VIZ. ERASE OR DISPLAY)
+SCORE1 LDA SEC SCORE2 SBC SCORE1 STA
+( WHO WON FLAG)0= IF NEXT JMP THEN
+0< IF NUM2-N 1+ LDA SCORE2 STA NUM3-N
+1+ LDA SCORE2 1+ STA ELSE NUM0-N 1+ LDA
+SCORE2 STA NUM1-N 1+ LDA SCORE2 1+ STA THEN NEXT JMP END-CODE
+
+( SCOREFLASH-RTN 1/2 09:27 04/20/87 )
+CODE (SCOREFLASH-RTN) SCORE1 LDA 0= IF RTS
+THEN SCOREFLASH LDA 04 # CMP CS IF SCOREFLASH STY
+ELSE SCOREFLASH INC RTS THEN SCORE1 1+
+LDA 0= NOT IF SCORE1 1+ STY SCORE1 LDA 0<
+IF SCORE2 LDA NUM2-N 1+ STA SCORE2 1+ LDA
+NUM3-N 1+ STA84 # LDY NUM2-ASTY INY NUM3-ASTY
+ELSE SCORE2 LDA NUM0-N 1+ STA SCORE2 1+ LDA NUM1-N 1+ STA82 #
+LDY NUM0-ASTY INY NUM1-ASTY THEN
+ELSE DEY SCORE1 1+ STY SCORE1 LDA0<
+IF AA # LDA NUM2-N 1+ STA NUM3-N 1+ STA 84 #
+LDY NUM2-ASTY INY NUM3-ASTY
+ELSE AA # LDA NUM0-N 1+ STA NUM1-N 1+ STA 82
+# LDY NUM0-ASTY INY NUM1-ASTY THEN THEN
+
+( SCOREFLASH-RTN 2/2 09:32 04/20/87 )
+DEX DL-TABLE-START >HI #LDA TOS STADEX DL
+-TABLE-START >LO #LDA TOS STADEX PLAYERS-ITAB
+>HI #LDA TOS STADEX PLAYERS-ITAB >LO #LDA TOS
+STADEX NUMBERS-ETAB >HI #LDA TOS STA
+DEX NUMBERS-ETAB >LO #LDA TOS STA BEGIN
+MSTAT BIT 0< UNTIL ( THEN WAIT FOR VBLANK )'
+(NEW-GRAPHICS) >BODY JMP ( N N N--) END-CODE
+
+CODE SCOREFLASH-RTN ' (SCOREFLASH-RTN) >BODY JSR NEXT JMP END-CODE
+DECIMAL
+
+( REDO- ZAMBONI LOOP EXIT TO NEW GAME 1/2 15:25 06/09/87 )
+: WARM-RESET S0 @ SP! R0 @ RP! 0 SND?-FLAG C! INIT-SOUND 0
+SCORE1 ! 0 SCORE2 ! 0 SAVES1 ! 0 SAVES2 !
+0 PLAYER1 !FLAG ( SKILL AND AUTOMATION STATE )( REMAIN UNCHANGED)
+BACKGROUND-INIT RED-CHECK MAIN-LOOP ;
+
+( 19:22 08/29/87 )
+: ?REDO FB0 C@ FB1 C@ OR
+IF WARM-RESET THEN ;: CONSOLE-CHECK GETRAW ?RESET
+IF WARM-RESET THEN ?SELECT
+IF BEGIN GETRAW ?SELECT 0= UNTIL
+TITLE-UP WARM-RESET THENGETRAW ?PAUSE IF
+BEGIN GETRAW ?PAUSE 0= UNTIL ( DEBOUNCE )
+WORKAREA0 C@ -1 WORKAREA0 C! 0 AUDV0 C!
+( AREA0 OFF) WORKAREA1 C@ -1
+WORKAREA1 C! 0 AUDV1 C! ( AREA1 OFF)
+BEGIN GETRAW ?SELECT IF BEGIN GETRAW ?SELECT 0= UNTIL
+TITLE-UP WARM-RESET THEN ?RESET
+IF WARM-RESET ( BYE) THEN ?PAUSE
+UNTIL ( PAUSE ) BEGIN GETRAW ?
+PAUSE 0= UNTIL WORKAREA1 C! WORKAREA0 C!
+THEN ( DEBOUNCE ) ;
+
+( ZAMBONI-LOOP 1/2 16:00 04/07/87 )
+: ZAMBONI-LOOP SCORE
+FLASH-PREP PUCK-ERASE BLUE-GOALY-ERASE
+REDD-GOALY-ERASE BLUE-ERASE REDD-ERASE
+GAMEOVER-SIGN-ON4000 0 DO 0 DROP LOOP
+09 40 ZAMBONI-INIT SNIR SNIL TURK-SND 2 0 DO65 0 DO FELLA1
+2 0 ZAMBONI-MOVE ZR WAIT CONSOLE-CHECK ( NEXT-JOYS ) ?RED
+O LOOP ( I 0= IF TURK-SND THEN )FELLA2
+0 0 ZAMBONI-MOVE WAIT WAIT 24 0 DO FELLA3
+0 1 ZAMBONI-MOVE WAIT CONSOLE-CHEC
+K ( NEXT-JOYS) ?REDO LOOPFELLA4 0 0
+ZAMBONI-MOVE WAIT WAIT 65 0 DO FELLA5 -2 0
+ZAMBONI-MOVE ZL WAIT CONSOLE-CHECK( NEXT-JOYS )
+?REDO LOOP FELLA4 0 0
+ZAMBONI-MOVE WAIT WAIT
+TURK-SND 24 0 DO FELLA3 0 1
+ZAMBONI-MOVE WAIT CONSOLE-CHECK ( NEXT-JOYS) ?REDO LOOPFELLA2 0 0
+ZAMBONI-MOVE WAIT WAIT LOOP
+
+( ZAMBONI-LOOP 2/216:00 04/07/87 )
+65 0 DO FELLA1 2 0
+ZAMBONI-MOVE ZR WAIT CONSOLE-CHECK
+( NEXT-JOYS) ?REDO LOOP
+FELLA2 0 0 ZAMBONI-MOVE WAIT WAIT
+24 0 DO FELLA3 0 1 ZAMBONI-MOVE
+WAIT CONSOLE-CHECK ( NEXT-JOYS)
+?REDO LOOP FELLA4 0 0 ZAMBONI-MOVE
+WAIT WAIT 65 0 DO FELLA5 -2 0 ZAMBONI-MOVE ZL
+WAIT CONSOLE-CHECK( NEXT-JOYS) ?REDO LOOP ;
+
+CODE ?BONUS
+DEX TOS STY DEX TOS STY BONUS LDA 0=
+IF ( BONUS HASN'T BEEN GIVEN YET)
+SCORE1 LDA SCORE2 CMP 0= IF DEY TOS STY THEN ELSE BONUS STY THEN
+NEXT JMP END-CODE
+
+( USER-CHOICE no exp/nov for 2-plr...jjt 09:57 08/27/87 )
+HEX CODE USER-CHOICE
+BG-FREE2 LDA( DY0 LDA DY1 ORA ) 1 # CMP 0=
+IF 1PLAYERB # LDA BLUE-IMAGE# STA
+( two player ) 2PLAYERR # LDA REDD-IMAGE# STA
+EXPERTB # LDA BLUE-GOALY-IMAGE# STA ( turn off )NOVICEB # LDA
+REDD-GOALY-IMAGE# STA ( exp/novice)
+0 # LDA PLAYER2 9 + STA 01 # LDA BG-FREE2 STA ELSE
+FF # CMP 0= IF1PLAYERR # LDA BLUE-IMAGE
+# STA ( one player)2PLAYERB # LDA REDD-IMAGE#
+STA2 # LDA PLAYER2 9 + STA FF # LDA BG-FREE2 STAEXP-NOV JSR
+THEN( DY=0) PLAYER2 9 + LDA 2 # CMP 0= IF EXP-NOV JSR
+THEN THEN
+
+( USER-CHOICE CONT. REV. jjt 09:58 08/27/87 )
+82 # LDA BLUE-ALTER STA 83 # LDA REDD-ALTER
+STA 85 # LDA BLUE-GOALY-ALTER STA 84 # LDA
+REDD-GOALY-ALTER STA
+' (PLAYER-FRAME-DISPLAY) >BODY JSR NEXT JMPL
+: EXP-NOV BG-FREE3 LDA ( DX0 LDA DX1 ORA )
+L: LBL2 1 # CMP 0= IF NOVICEB #
+LDA REDD-GOALY-IMAGE# STA EXPERTR # LDA
+BLUE-GOALY-IMAGE# STA
+( 3) 0 # LDA SKILL STA 01 # LDA BG-FREE3
+STA LBL1 JMP THEN FF # CMP 0= IF NOVICER #
+LDA REDD-GOALY-IMAGE# STAEXPERTB # LDA
+BLUE-GOALY-IMAGE# STA ( 6) 1 # LDA SKILL
+STA FF # LDA BG-FREE3 STA LBL1 JMP THEN SKILL
+LDA 0= IF 1 # LDA ELSE FF # LDA THEN LBL2 JMP
+L: LBL1 RTS END-CODE
+
+( DEMO-LOOP ATARI00:38 02/05/87 )
+: DEMO-LOOP 1 SND?-FLAG C! DEMO-TIMER UPDATE-SCORE
+200 0 DO 0 DROP LOOP BEGIN SERVE WHIZ-DONE OFF
+WHIZ-COUNT OFFBEGIN 1 CYCLE# +!
+WHIZ-COUNT @ 0= IF ( NEXT-JOYS )
+PLAYER1-PROCESS GOALIE1-PROCESS
+PLAYER2-PROCESS GOALIE2-PROCESS
+RANDOM-SOUNDS CHECK-PLAYER-PLAYER
+MOVE-PUCKTHEN WHIZ-COUNT
+C@ IF WHIZ ELSE CHECK-FOR-GOAL
+ANIMATOR UPDATE-TIMER UPDATE-SCORE
+THEN CONSOLE-C
+HECKWHIZ-DONE @ MIN-SEC-CHECK OR FB0 C@
+FB1 C@ OR OR UNTIL MIN-SEC-CHECK FB0 C@
+FB1 C@ OR OR UNTIL 0 SND?-FLAG C!
+INIT-SOUND ;
+
+( DECIDE-SELECT 09:55 06/10/87 )
+( PLAYER2 9+ = 2->ONE-PLAYER0->TWO-PLAYER )
+( SKILL = 1->NOVICE 0->EXPERT )
+CODE DECIDE-SELECT PLAYER2 9 + LDA 0=
+IF SKILL LDA 0= IF ( 2PLAYER/EXPERT>1PLAYER/NOVICE)
+DEY DX0 STY DY0 STY
+ELSE ( 2PLAYER/NOVICE>2PLAYER/EXPERT)
+INY DX0 STY DY0 STY THEN ELSE SKILL LDA 0
+= IF ( 1PLAYER/EXPERT>2PLAYER/NOVICE) INY DY0 STY DEY DEYDX0 STY
+ELSE ( 1PLAYER/NOVICE>1PLAYER/EXPERT) DEY
+DY0 STY INY INYDX0 STYTHEN THEN NEXT JMP END-CODE
+
+( TITLE-SELECT-BUTTON-RTN LIMITED-CONSOLE-09:20 06/10/87 )
+: LIMITED-CONSOLE-CHECK GETRAW ?PAUSE
+IF BEGIN GETRAW ?PAUSE 0= UNTIL
+( DEBOUNCE ) WORKAREA0 C@ 0FF
+WORKAREA0 C! 0 AUDV0 C! ( AREA0 OFF)
+WORKAREA1 C@ 0FF WORKAREA1 C! 0 AUDV
+1 C! ( AREA1 OFF) BEGIN GETRAW ?RESET IF -1 FB0 C!
+WORKAREA1 C! WORKAREA0 C!EXIT THEN
+?PAUSE UNTIL ( PAUSE ) BEGIN GETRAW ?PAUSE 0= UNTIL
+WORKAREA1 C! WORKAREA0 C! THEN ( DEBOUNCE ) ?RESET FB0
+C! ;: TITLE-SELECT-BUTTON-RTN GETRAW ?SELECT IF BEGIN
+GETRAW ?SELECT 0= UNTIL ( DEBOUNCE ) DECIDE-SELECT THEN ;
+
+( TITLE/DEMO-LOOP13:48 05/11/87 )
+: TITLE-RTN USER-CHOICE DY1 C@ DY0 C@ OR ?DUP
+IF BG-FREE2 C!
+THEN DX1 C@ DX0 C@ OR ?DUP IF BG-FREE3 C!
+THEN 0BEGIN ( NEXT-JOYS )
+( TITLE-SELECT-BTN AFTER N-JOYS
+SINCE MODIFIES DX0/DY0)LIMITED-CONSOLE-CHECK
+USER-CHOICE 1+TITLE-SELECT-BUTTON-RTN
+DY1 C@ DY0 C@ OR ?DUP IF BG-FREE2 C!
+THEN DX1 C@ DX0 C@ OR ?DUP IF BG-FREE3 C! THEN
+DX0 C@ DY0 C@ OR DX1 C@ OR DY1 C@ OR
+IF DROP 0 THEN DUP 750 = FB0 C@ OR FB1 C@
+OR ?RESET OR UNTIL DROP ;
+
+( TITLE SCREEN MANAGEMENT RTNS 14:49 04/17/87 )
+: DEMO-RTN FB0 C@ FB1 C@ OR ?RESET OR IF -1 EXIT
+THEN 0 SCORE1 ! 0 SCORE2 ! 0 SAVES1
+! 0 SAVES2 ! 2 PLAYER1 !FLAG 2 PLAYER2
+!FLAG BACKGROUND-INIT RED-CHECK
+DEMO-LOOP 0 400 0 DO 0 DROP LOOP ;
+: TITLE-INIT 7B DUP BG-SCOREAREA C!
+BG-TOP-ICE C!GNE0 18 0F DL-INITGNE17 2 4 DL-INIT
+TITLE-ETAB-ROM PLAYERS-ETAB 30 PLAYERS-ETAB-INIT ;
+
+CODE FIRST-TITLE FF # LDA DY0 STA
+DX0 STA BG-FREE2 STA BG-FREE3 STA
+NEXT JMP END-CODE CODE REPEAT-TITLE BG-FREE2 LD
+A DY0 STA BG-FREE3 LDA DX0 STA
+NEXT JMP END-CODE
+
+( RED-CHECK - DETERMINES RED/COMPUTER DISPLAY 12:23 04/17/87 )
+CODE RED-CHECK PLAYER2 9 +
+LDA 0= IFBEGIN MSTAT BIT 0< UNTIL
+( THEN WAIT FOR VBLANK )VS-RED # LDA BLUE-IMAGE# STA
+7C # LDA BLUE-X STA0E # LDA BLUE-Y STA
+8D # LDA BLUE-ALTER STA
+' (PLAYER-FRAME-DISPLAY) >BODY JSR
+THEN NEXT JMP END-CODE
+DECIMAL
+
+( MAIN-LOOP ATARI rev. JJT 17:08 08/27/87 )
+: MAIN-LOOP TIMER-INITBEGIN UPDATE-SCORE 200 0 DO 0 DROP LOOP
+BEGIN WHIZ-DONE OFF WHIZ-COUNT OFF
+SERVE BEGIN CONSOLE-CHECK 1 CYCLE# +!
+WHIZ-COUNT C@ IF WHIZ ELSE PLAYER1-PROCESS GOALIE1-PROCESS
+PLAYER2-PROCESS GOALIE2-PROCESS
+CHECK-PLAYER-PLAYER MOVE-PUCK
+CHECK-FOR-GOAL ANIMATOR THEN
+UPDATE-TIMER UPDATE-SCORE RANDOM-SOUNDS
+WHIZ-DONE @ MIN-SEC-CHECK OR UNTIL
+BONUS C@ ( =20H IF OVERTIME) MIN-SEC-CHECK OR
+UNTIL ?BONUSIF OVERTIME-SIGN-ON
+OVERTIME-SND 30000 0 DO LOOP BONUS-INIT
+ELSE ENDGAME-SND ZAMBONI-LOOP TITLE-UP
+TIMER-INIT THENAGAIN ;
+
+( HOCKEY22:45 02/07/87 )
+: FOREGRND-TASK 0 SND?-FLAG C! GRAPHICS-MODE
+INIT-SOUND TITLE-INIT FIRST-TITLE TITLE-RTN
+DEMO-RTN IF NEW-GAME ELSE TITLE-UP THEN ;
+
+: TITLE-UP 0 SND?-FLAG C! BEGIN INIT-SOUND TITLE-INIT
+REPEAT-TITLE TITLE-RTN DEMO-RTNUNTIL NEW-GAME ;
+
+: HOCKEY 0 SNd?-FLAG C! INIT-SOUND
+FANFARE-SNDBEGIN GETRAW ?RESET 0= UNTIL 0 SCORE1
+! 0 SCORE2 ! 0 SAVES1 ! 0 SAVES2 ! 0
+PLAYER1 !FLAG BEGIN CONSOLE-CHECK
+WORKAREA1 C@ WORKAREA0 C@ AND 255 = UNTIL
+BACKGROUND-INIT RED-CHECK
+( BEGIN-SNDS ) MAIN-LOOP ;
+' HOCKEY main-loop !
+' TITLE-UP select-rtn !
+( ?DIFFR IF 0 ELSE 2 THEN PLAYER2 !FLAG )
+( ?DIFFL IF 3 ELSE 6 THEN SKILL C!
+HIGHER IS MORE STUPID)
+
+( LAST SCREEN--END OF MC ATARI 7800 23:52 05/22/86 )
+' FOREGRND-TASK ' ABVAR >BODY !
+( set the constant ABVAR )
+HEX ( reset bootup literals )( NMIRESET IRQ )
+FFF9 HERE - ALLOT 47 C,NMI ,
+( VIDEO-INT-RTN )RESET , ( ORIGIN )
+IRQ , ( an RTI ) FF80 79 -1 FILLFORTH DEFINITIONS
+LATEST INIT-FORTH !THERE INIT-DP !
+( X=14 SCOREBOARDA X=110 SCOREBOARDB)
diff --git a/HOKTAB78.SCR b/HOKTAB78.SCR
new file mode 100644
index 0000000..aa4120f
--- /dev/null
+++ b/HOKTAB78.SCR
@@ -0,0 +1 @@
+0000 C, 003C C, 00D4 C, 0003 C, 0004 C, 003C C, 00D4 C, 0003 C, 0008 C, 003C C, 00D4 C, 0003 C, 000C C, 003C C, 00D4 C, 0003 C, 0010 C, 003C C, 00D4 C, 0003 C, 0014 C, 003C C, 00D4 C, 0003 C, 0018 C, 003C C, 00D3 C, 0003 C, 001C C, 003C C, 00D3 C, 0003 C, 0020 C, 003C C, 00D3 C, 0003 C, 0024 C, 003C C, 00D3 C, 0003 C, 0028 C, 003C C, 00D3 C, 0003 C, 002C C, 003C C, 00D3 C, 0003 C, 0030 C, 003D C, 00D8 C, 0004 C, 0033 C, 003D C, 00D8 C, 0004 C, 0036 C, 003D C, 00D8 C, 0004 C, 0039 C, 003D C, 00D8 C, 0004 C, 003C C, 003D C, 00D8 C, 0004 C, 003F C, 003D C, 00D8 C, 0004 C, 0042 C, 003B C, 00D1 C, 0003 C, 0047 C, 003B C, 00D1 C, 0003 C, 004C C, 003B C, 00D1 C, 0003 C, 0051 C, 003B C, 00D1 C, 0003 C, 0056 C, 003B C, 00D1 C, 0003 C, 005B C, 003B C, 00D1 C, 0003 C, \ No newline at end of file
diff --git a/ME.TTP b/ME.TTP
new file mode 100644
index 0000000..e229bcd
--- /dev/null
+++ b/ME.TTP
Binary files differ
diff --git a/NGLTAB78.SCR b/NGLTAB78.SCR
new file mode 100644
index 0000000..c486f20
--- /dev/null
+++ b/NGLTAB78.SCR
@@ -0,0 +1 @@
+008E C, 001C C, 00D0 C, 0003 C, 0092 C, 001C C, 00D0 C, 0003 C, 0096 C, 007D C, 00D0 C, 0003 C, 0099 C, 007D C, 00D0 C, 0003 C, \ No newline at end of file
diff --git a/NUMTAB78.SCR b/NUMTAB78.SCR
new file mode 100644
index 0000000..2c224df
--- /dev/null
+++ b/NUMTAB78.SCR
@@ -0,0 +1 @@
+0000 C, 0056 C, 00EE C, 0001 C, \ No newline at end of file
diff --git a/SCOTAB78.SCR b/SCOTAB78.SCR
new file mode 100644
index 0000000..a1f627e
--- /dev/null
+++ b/SCOTAB78.SCR
@@ -0,0 +1 @@
+006C C, 0048 C, 00D0 C, 0003 C, 0084 C, 0056 C, 00D0 C, 0003 C, \ No newline at end of file
diff --git a/TTLTAB78.SCR b/TTLTAB78.SCR
new file mode 100644
index 0000000..5877881
--- /dev/null
+++ b/TTLTAB78.SCR
@@ -0,0 +1 @@
+008B C, 0016 C, 00E8 C, 0001 C, 0095 C, 0016 C, 00E8 C, 0001 C, 009F C, 001A C, 00E8 C, 0001 C, 00A5 C, 001A C, 00E8 C, 0001 C, 00AB C, 0014 C, 00E8 C, 0001 C, 00B7 C, 0014 C, 00E8 C, 0001 C, 00C3 C, 0018 C, 00E8 C, 0001 C, \ No newline at end of file
diff --git a/TWBTAB78.SCR b/TWBTAB78.SCR
new file mode 100644
index 0000000..70437d6
--- /dev/null
+++ b/TWBTAB78.SCR
@@ -0,0 +1 @@
+0015 C, 001E C, 00EE C, 0001 C, 0017 C, 001E C, 00EE C, 0001 C, 0019 C, 001E C, 00EE C, 0001 C, 001B C, 001E C, 00EE C, 0001 C, \ No newline at end of file
diff --git a/ZAMTAB78.SCR b/ZAMTAB78.SCR
new file mode 100644
index 0000000..77c72db
--- /dev/null
+++ b/ZAMTAB78.SCR
@@ -0,0 +1 @@
+00B0 C, 007D C, 00D7 C, 0003 C, 00B3 C, 007D C, 00D7 C, 0003 C, 00B6 C, 003E C, 00CB C, 0002 C, 00B8 C, 003E C, 00CB C, 0002 C, 00BA C, 003E C, 00CB C, 0002 C, 00BC C, 003E C, 00CB C, 0002 C, 00BE C, 003E C, 00CB C, 0002 C, 00C0 C, 004F C, 00D8 C, 0004 C, 00D1 C, 0048 C, 00D8 C, 0004 C, \ No newline at end of file