home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Brotikasten
/
BROTCD01.iso
/
geos
/
geos9.d64
/
source
< prev
next >
Wrap
Text File
|
1995-08-05
|
5KB
|
283 lines
;START OF SPELUNKER CODE
;├AVE-─WELLERS ╒NITE- GO ╙PELUNKING!
; ╘╚╔╙ ╨╥╧╟╥┴═ ╔╙ ╔╬ ╬╧ ╫┴┘ ╥┼╠┴╘┼─
; ╘╧ ┴ ╟┴═┼ ╧╞ ╘╚┼ ╙┴═┼ ╘╔╘╠┼!
; ╔╘'╙ ╬┴═┼ ├╧═┼╙ ╞╥╧═ ╘╚┼ ─╔├╘╔╧╬┴╥┘
; ─┼╞╔╬╔╘╔╧╬ ╧╞ "╙╨┼╠╒╬╦┼╥." ┴╨╥
.OPT ERRORS NOLIST NOGENERATE
.PAGE 'SPELUNKER V1.0'
.LIB REGS
* = $4000 ;ORG ON TOP OF ─ESK╘OP
LDA #128
STA $2F ;ONLY WRITE TO FOREGROUND
LDA #0
JSR $C139 ;SETPATTERN
LDA #0
JSR $C19F ;I'RECTANGLE
.BYTE 0
.BYTE 199 ; WINDOW SIZE IS WHOLE SCREEN
.WORD 0
.WORD 319
LDA #<ICONS
STA R0L
LDA #>ICONS
STA R0H ; LOAD ADDRESS OF ICONS INTO ╥0
JSR $C15A ;DOICONS
LDA #<MENUS
STA R0L
LDA #>MENUS
STA R0H ; LOAD ADDRESS OF MENUS INTO ╥0
LDA #0
JSR $C151 ;DOMENU
LDA #0
STA A2L
STA A2H ;A2 CONTAINS WORKING ADDRESS
STA A3H
LDA #128
STA A3L ;A3 HAS # TO ADD OR SUBTRACT
JSR PUTUPD ;PUT UP DATA
LDA #<PUTUPD
STA $84B1
LDA #>PUTUPD
STA $84B2 ;MAKE RECOVER VECTOR POINT TO ME
RTS ;GO VISIT ╟┼╧╙ ═AINLOOP
;DATA STRUCTURE FOR SPELUNKER ICONS
X9POS9 = 36
Y9POS9 = 50
ICONS
.BYTE 2
.WORD 160
.BYTE 100
.WORD UPARRO ;ADD 128 TO CURRENT LOCATION
.BYTE X9POS9
.BYTE Y9POS9
.BYTE 2,16
.WORD GOUP ;SERVICE ROUTINE
; DOWNARROW ;SUBTRACT 128 FROM CURRENT LOCATION
.WORD DOWNAR
.BYTE X9POS9
.BYTE Y9POS9+32
.BYTE 2,16
.WORD GODOWN ;ROUTINE FOR SUBTRACTING 128
;DONE WITH ICON STRUCTURE
; NOW PUT DATA FOR ICONS
UPARRO
.BYTE 160 ;REMEMBER THE COMPACTION FORMAT
.BYTE 0,0,1,128,3,192,7,224,15,240,31,248,63,252,127,254,7,224
.BYTE 7,224,7,224,7,224,7,224,7,224,7,224,7,224
DOWNAR
.BYTE 160
.BYTE 7,224,7,224,7,224,7,224,7,224,7,224,7,224,7,224
.BYTE 127,254,63,252,31,248,15,240,7,224,3,192,1,128,0,0
; SORRY THEY'RE NOT COMPACTED YET
MENUS
.BYTE 0,15
.WORD 0,53
.BYTE 1
.WORD LEFTM
.BYTE $80 ;SUBMENU
.WORD UNLEFT ;WORD FOR UNDER THE LEFT MENU
LEFTM
.BYTE 'SPELUNKER',0
UNLEFT
.BYTE 16,45
.WORD 0,53
.BYTE $82
.WORD ABOUT
.BYTE 0 ;MENU ACTION
.WORD DOABOU ;ROUTINE FOR MY NAME
.WORD QUIT
.BYTE 0
.WORD DOQUIT ;RESTORE APPLICATION MAINLOOP
ABOUT
.BYTE 'ABOUT...',0
QUIT
.BYTE 'QUIT',0
DOABOU ;WARNING TO ALL! ─ON'T USE A
;DIALOG BOX INSIDE A ─ESK ┴CC.!
LDA #0
JSR $C139 ;SET SYSTEM PATTERN
JSR $C19F ;INLINE CALL TO ╥ECTANGLE
.BYTE 32,127
.WORD 64,255 ;MAKE A BOX LIKE A ─IALOG
JSR $C1A2 ;TO INLINE ╞RAME╥ECTANGLE
.BYTE 32,127
.WORD 64,255 ;WHO WOULD HAVE GUESSED?
.BYTE 1 ;FOR A BLACK BACKGROUND.
LDA #<MYSTR
STA R0L
LDA #>MYSTR
STA R0H
LDA #64
STA R1H
LDA #100
STA R11L
LDA #0
STA R11H
JSR $C148 ;PUT UP MY NAME ANYWAY!
WAIT1 JSR $C2A7 ;THIS CALL KILLS ═R. ═OUSE
CMP #0
BEQ WAIT1 ;WAIT FOR ╦EY╨RESS
JSR PUTUPD
JSR $C18A ;RESSURECT THE ═OUSE
RTS
MYSTR
.BYTE 24,'SPELUNKER V1.0 (C) 1987'
.BYTE 24,22,100,0,80,'ANTHONY P. REYNOLDS'
.BYTE 27,22,100,0,94,'BETA TEST VERSION'
.BYTE 24,22,100,0,110,'PRESS ANY KEY....',27,0
DOQUIT JSR PUTUPD
JSR $C1BD
LDA #192
STA $2F
JMP $C23E; IF THIS IS REALLY A RESTORE...
;THIS SHOULD RETURN US TO GEOS
;FROM WHEREVER WE CAME
PUTUPD
LDA #0
JSR $C139 ;SET PATTERN FOR DATA AREA
LDA #0
JSR $C19F ;PUT UP AN AREA FOR THE DATA
;MUST BE BIG ENOUGH TO HOLD 16 ROWS AND 8 BYTES/ROW PLUS SOME
; SO MAKE IT AT 16,180,0,280
.BYTE 16,180
.WORD 0,280
LDA #<BUFFER
STA A1
LDA #>BUFFER
STA A1H
LDA A2
STA A5L
LDA A2H
STA A5H ;MAKE BYTES POINT TO ADDRESS
JSR ENTRY ;FILL A BUFFER
LDA #0
JSR STORIT ;TERMINATE BUFFER WITH A 0
JSR WRTOUT ;WRITE IT OUT
RTS ;GO BACK
JUMPTO RTS
GOUP CLC ;CLEAR CARRY
LDA A2L
ADC A3L
STA A2L
LDA A2H
ADC A3H
STA A2H
JSR PUTUPD
RTS ;ADDED 128 TO CURRENT LOCATION
GODOWN SEC
LDA A2L
SBC A3L
STA A2L
LDA A2H
SBC A3H
STA A2H
JSR PUTUPD
RTS ;SUBTRACTED 128 FROM CURRENT LOCATION
NIBBLE AND #$F
STX A4L ;SOME LOCATION
TAX
LDA LTTRS,X
LDX A4L
STORIT STY A4L ;ANYPLACE
LDY #0
STA (A1),Y ;AT ADDRESS (A1)+Y
LDY A4L ;GET IT BACK
INC A1
BNE CONT
INC A1H
CONT RTS
LTTRS .BYTE '0123456789ABCDEF'
ENTRY LDY #0
TOP TYA
CMP #16
BEQ FINI
JSR ADDRS
STY A6L
LDY #0
LDX #0
STILLG TYA
CMP #8
BEQ FIRSTH
LDA (A5L),Y ;REMEMBER TO SET UP 'BYTES'
;TO POINT TO THE SAME THING
;AS A2 BEFORE ENTRY
ROR A
ROR A
ROR A
ROR A ;ROTATE TOP 4 INTO BOTTOM 4
JSR NIBBLE ;TRANSLATE AND STORE
LDA (A5L),Y
JSR NIBBLE ;TRANSLATE AND STORE
INY
JMP STILLG
FIRSTH LDX #0
LDA #32
JSR STORIT ;PUT A SPACE
LDY #0
ASCII TXA
CMP #8
BEQ CARRET ;EOL, PUT A ├╥
LDA (A5L),Y
JSR FIXVAL
JSR STORIT
INC A5L
BNE CONT1
INC A5H
CONT1 INX
JMP ASCII
CARRET LDA #13 ;├╥
JSR STORIT
LDY A6L
INY
JMP TOP
FINI RTS
WRTOUT LDA #<BUFFER
STA R0
LDA #>BUFFER
STA R0H
LDA #25
STA R1H
LDA #0
STA R11L
STA R11H
JSR $C148 ;PUT THE WHOLE BUFFER!
;IT'S A STRING! (HOPEFULLY)
RTS
ADDRS LDA A5H
ROR A
ROR A
ROR A
ROR A ;ROTATE 4 BITS
JSR NIBBLE
LDA A5H
JSR NIBBLE
LDA A5L
ROR A
ROR A
ROR A
ROR A
JSR NIBBLE
LDA A5L
JSR NIBBLE
LDA #':
JSR STORIT
RTS ;RETURN FROM STORING ADDRESS
BUFFER
*=*+600 ;LEAVE A NICE BIG BUFFER
FIXVAL CMP #32 ;ROUTINE TO FIX ┴
BCS SECOND ;IF NOT PRINTABLE
LDA #'.
JMP GOBACK
SECOND CMP #98 ;TEST IF =>127
BCS THIRD
RTS
THIRD LDA #'.
GOBACK RTS ;THAT'S THE END OF THE
;LOBOTIMIZED VERSION....
;SEND $$$$ FOR THE GOODIE.
; ╘ONY ╥EYNOLDS
;╨.╧. ┬OX 3079
;╒NIVERSITY , ═╙ 38677
;"╘ELL 'EM ╟RANDMA SENT YA!"