mirror of
https://github.com/gungwald/rnd.git
synced 2025-03-25 01:30:41 +00:00
Convert to Dev65 assembler
This commit is contained in:
parent
6567db8527
commit
0597f9b2bb
Binary file not shown.
@ -15,7 +15,7 @@ ifeq ($(OS),Windows_NT)
|
||||
EMU=$(USERPROFILE)\Dropbox\opt\applewin-$(APPLEWIN_VER)\applewin.exe -no-printscreen-dlg -s7 empty -s6d1
|
||||
else
|
||||
COPY=cp
|
||||
EMU=$(HOME)/Dropbox/opt/applewin-$(APPLEWIN_VER)/applewin -no-printscreen-dlg -s7 empty -s6d1
|
||||
EMU=wine $(HOME)/Dropbox/opt/applewin-$(APPLEWIN_VER)/applewin -no-printscreen-dlg -s7 empty -s6d1
|
||||
endif
|
||||
|
||||
# There is some kind of problem with turning this into a boot disk
|
||||
@ -25,11 +25,11 @@ endif
|
||||
|
||||
$(DSK): $(PGM)
|
||||
$(COPY) $(BASE_DSK) $(DSK)
|
||||
$(AC) -p $(DSK) STARTUP BAS < STARTUP#fc0801
|
||||
$(AC) -p $(DSK) $(PGM) BIN 0x8000 < $(PGM)
|
||||
#$(AC) -p $(DSK) STARTUP BAS < ../storage/STARTUP#fc0801
|
||||
$(AC) -p $(DSK) $(PGM) BIN 0x8000 < $(PGM).bin
|
||||
|
||||
$(PGM): $(PGM).obj
|
||||
$(LK65) -output $(PGM) -bin $(PGM).obj
|
||||
$(LK65) -code '$$8000-$$9000' -bin $(PGM).obj
|
||||
|
||||
# as65 does not exit with a non-zero code so that make can detect when it failed.
|
||||
$(PGM).obj: symbols.s macros.s $(SRC)
|
||||
|
@ -1,127 +0,0 @@
|
||||
Error: symbols.s (1) No active section
|
||||
Error: symbols.s (1) Unknown opcode or directive
|
||||
Error: symbols.s (2) No active section
|
||||
Error: symbols.s (2) Unknown opcode or directive
|
||||
Error: symbols.s (3) No active section
|
||||
Error: symbols.s (3) Unknown opcode or directive
|
||||
Error: symbols.s (4) No active section
|
||||
Error: symbols.s (4) Unknown opcode or directive
|
||||
Error: symbols.s (5) No active section
|
||||
Error: symbols.s (5) Unknown opcode or directive
|
||||
Error: symbols.s (6) No active section
|
||||
Error: symbols.s (6) Unknown opcode or directive
|
||||
Error: symbols.s (7) No active section
|
||||
Error: symbols.s (7) Unknown opcode or directive
|
||||
Error: symbols.s (8) No active section
|
||||
Error: symbols.s (8) Unknown opcode or directive
|
||||
Error: symbols.s (14) No active section
|
||||
Error: symbols.s (14) Unknown opcode or directive
|
||||
Error: symbols.s (15) No active section
|
||||
Error: symbols.s (15) Unknown opcode or directive
|
||||
Error: symbols.s (16) No active section
|
||||
Error: symbols.s (16) Unknown opcode or directive
|
||||
Error: symbols.s (17) No active section
|
||||
Error: symbols.s (17) Unknown opcode or directive
|
||||
Error: symbols.s (18) No active section
|
||||
Error: symbols.s (18) Unknown opcode or directive
|
||||
Error: symbols.s (19) No active section
|
||||
Error: symbols.s (19) Unknown opcode or directive
|
||||
Error: symbols.s (43) No active section
|
||||
Error: symbols.s (43) Unknown opcode or directive
|
||||
Error: symbols.s (44) No active section
|
||||
Error: symbols.s (44) Unknown opcode or directive
|
||||
Error: symbols.s (45) No active section
|
||||
Error: symbols.s (45) Unknown opcode or directive
|
||||
Error: symbols.s (46) No active section
|
||||
Error: symbols.s (46) Unknown opcode or directive
|
||||
Error: symbols.s (47) No active section
|
||||
Error: symbols.s (47) Unknown opcode or directive
|
||||
Error: symbols.s (48) No active section
|
||||
Error: symbols.s (48) Unknown opcode or directive
|
||||
Error: symbols.s (49) No active section
|
||||
Error: symbols.s (49) Unknown opcode or directive
|
||||
Error: symbols.s (50) No active section
|
||||
Error: symbols.s (50) Unknown opcode or directive
|
||||
Error: symbols.s (76) No active section
|
||||
Error: symbols.s (76) Unknown opcode or directive
|
||||
Error: symbols.s (77) No active section
|
||||
Error: symbols.s (77) Unknown opcode or directive
|
||||
Error: symbols.s (78) No active section
|
||||
Error: symbols.s (78) Unknown opcode or directive
|
||||
Error: symbols.s (79) No active section
|
||||
Error: symbols.s (79) Unknown opcode or directive
|
||||
Error: symbols.s (80) No active section
|
||||
Error: symbols.s (80) Unknown opcode or directive
|
||||
Error: symbols.s (81) No active section
|
||||
Error: symbols.s (81) Unknown opcode or directive
|
||||
Error: symbols.s (82) No active section
|
||||
Error: symbols.s (82) Unknown opcode or directive
|
||||
Error: symbols.s (83) No active section
|
||||
Error: symbols.s (83) Unknown opcode or directive
|
||||
Error: macros.s (1) No active section
|
||||
Error: macros.s (1) Unknown opcode or directive
|
||||
Error: macros.s (2) No active section
|
||||
Error: macros.s (2) Unknown opcode or directive
|
||||
Error: macros.s (3) No active section
|
||||
Error: macros.s (3) Unknown opcode or directive
|
||||
Error: macros.s (4) No active section
|
||||
Error: macros.s (4) Unknown opcode or directive
|
||||
Error: macros.s (5) No active section
|
||||
Error: macros.s (5) Unknown opcode or directive
|
||||
Error: macros.s (6) No active section
|
||||
Error: macros.s (6) Unknown opcode or directive
|
||||
Error: macros.s (7) No active section
|
||||
Error: macros.s (7) Unknown opcode or directive
|
||||
Error: macros.s (8) No active section
|
||||
Error: macros.s (8) Unknown opcode or directive
|
||||
Error: macros.s (34) No active section
|
||||
Error: macros.s (34) Unknown opcode or directive
|
||||
Error: macros.s (35) No active section
|
||||
Error: macros.s (35) Unknown opcode or directive
|
||||
Error: macros.s (36) No active section
|
||||
Error: macros.s (36) Unknown opcode or directive
|
||||
Error: macros.s (37) No active section
|
||||
Error: macros.s (37) Unknown opcode or directive
|
||||
Error: macros.s (38) No active section
|
||||
Error: macros.s (38) Unknown opcode or directive
|
||||
Error: macros.s (39) No active section
|
||||
Error: macros.s (39) Unknown opcode or directive
|
||||
Error: macros.s (40) No active section
|
||||
Error: macros.s (40) Unknown opcode or directive
|
||||
Error: macros.s (55) No active section
|
||||
Error: macros.s (55) Unknown opcode or directive
|
||||
Error: macros.s (56) No active section
|
||||
Error: macros.s (56) Unknown opcode or directive
|
||||
Error: macros.s (57) No active section
|
||||
Error: macros.s (57) Unknown opcode or directive
|
||||
Error: macros.s (58) No active section
|
||||
Error: macros.s (58) Unknown opcode or directive
|
||||
Error: macros.s (59) No active section
|
||||
Error: macros.s (59) Unknown opcode or directive
|
||||
Error: macros.s (60) No active section
|
||||
Error: macros.s (60) Unknown opcode or directive
|
||||
Error: macros.s (61) No active section
|
||||
Error: macros.s (61) Unknown opcode or directive
|
||||
Error: macros.s (62) No active section
|
||||
Error: macros.s (62) Unknown opcode or directive
|
||||
Error: macros.s (63) No active section
|
||||
Error: macros.s (63) Unknown opcode or directive
|
||||
Error: macros.s (64) No active section
|
||||
Error: macros.s (64) Unknown opcode or directive
|
||||
Error: rnd.s (11) Unknown opcode or directive
|
||||
Error: rnd.s (17) Unknown opcode or directive
|
||||
Error: rnd.s (27) Label as already been defined: *
|
||||
Error: rnd.s (27) Unknown opcode or directive
|
||||
Error: rnd.s (37) Label as already been defined: *
|
||||
Error: rnd.s (37) Unknown opcode or directive
|
||||
Error: rnd.s (44) Label as already been defined: *
|
||||
Error: rnd.s (44) Unknown opcode or directive
|
||||
Error: rnd.s (50) Label as already been defined: *
|
||||
Error: rnd.s (50) Unknown opcode or directive
|
||||
Error: rnd.s (60) Label as already been defined: *
|
||||
Error: rnd.s (60) Unknown opcode or directive
|
||||
Error: rnd.s (61) Label as already been defined: *
|
||||
Error: rnd.s (61) Unknown opcode or directive
|
||||
Error: rnd.s (64) Illegal addressing mode
|
||||
Error: rnd.s (67) Label as already been defined: *
|
||||
Error: rnd.s (67) Unknown opcode or directive
|
51
src/macros.s
51
src/macros.s
@ -1,11 +1,11 @@
|
||||
********************************
|
||||
* *
|
||||
* MACROS *
|
||||
* *
|
||||
* AUTHOR: BILL CHATFIELD *
|
||||
* LICENSE: GPL2 *
|
||||
* *
|
||||
********************************
|
||||
;*******************************
|
||||
; *
|
||||
; MACROS *
|
||||
; *
|
||||
; AUTHOR: BILL CHATFIELD *
|
||||
; LICENSE: GPL2 *
|
||||
; *
|
||||
;*******************************
|
||||
|
||||
PUSHY .MACRO
|
||||
TYA
|
||||
@ -31,13 +31,13 @@ POPXY .MACRO
|
||||
TAX
|
||||
.ENDM
|
||||
|
||||
********************************
|
||||
* *
|
||||
* PUTS .MACRORO - OUTPUTS STRING *
|
||||
* ]1 = ADDRESS OF NULL- *
|
||||
* TERMINATED STRING *
|
||||
* *
|
||||
********************************
|
||||
;*******************************
|
||||
; *
|
||||
; PUTS .MACRORO - OUTPUTS STRING *
|
||||
; ]1 = ADDRESS OF NULL- *
|
||||
; TERMINATED STRING *
|
||||
; *
|
||||
;*******************************
|
||||
|
||||
PUTS .MACRO
|
||||
PUSHY
|
||||
@ -52,16 +52,16 @@ NEXT LDA \0,Y ; LOAD A CHARACTER
|
||||
DONE POPY
|
||||
.ENDM
|
||||
|
||||
********************************
|
||||
* *
|
||||
* PUTF - *
|
||||
* PRINTS FLOATING POINT NUMBER *
|
||||
* IN FAC. DESTROYS VALUE IN *
|
||||
* FAC. DON'T KNOW WHY. *
|
||||
* *
|
||||
* ]1 - ABS ADDR FOR STRING *
|
||||
* *
|
||||
********************************
|
||||
;*******************************
|
||||
; *
|
||||
; PUTF - *
|
||||
; PRINTS FLOATING POINT NUMBER *
|
||||
; IN FAC. DESTROYS VALUE IN *
|
||||
; FAC. DON'T KNOW WHY. *
|
||||
; *
|
||||
; ]1 - ABS ADDR FOR STRING *
|
||||
; *
|
||||
;*******************************
|
||||
|
||||
PUTF .MACRO
|
||||
JSR FOUT ;CONVERT FAC TO STRING
|
||||
@ -69,3 +69,4 @@ PUTF .MACRO
|
||||
STY \0+1 ;STORE HIGH BYTE OF STRING
|
||||
PUTS (\0) ;PRINT STRING
|
||||
.ENDM
|
||||
|
||||
|
BIN
src/rnd.bin
Normal file
BIN
src/rnd.bin
Normal file
Binary file not shown.
BIN
src/rnd.dsk
Normal file
BIN
src/rnd.dsk
Normal file
Binary file not shown.
345
src/rnd.lst
Normal file
345
src/rnd.lst
Normal file
@ -0,0 +1,345 @@
|
||||
|
||||
Portable 65xx Assembler - V1.2 (2008-03-09)
|
||||
|
||||
;**************************
|
||||
;
|
||||
; Random dungeon generator
|
||||
;
|
||||
;**************************
|
||||
|
||||
.code
|
||||
|
||||
.include "symbols.s"
|
||||
;*******************************
|
||||
; *
|
||||
; SYMBOLS *
|
||||
; *
|
||||
; AUTHOR: BILL CHATFIELD *
|
||||
; LICENSE: GPL2 *
|
||||
; *
|
||||
;*******************************
|
||||
|
||||
0000004E = RNDL .EQU $4e ;Continuously incremented while waiting for keyboard input
|
||||
0000004F = RNDH .EQU $4f ;High byte of RNDL
|
||||
0000009D = FACEXP .EQU $9d ;Address of FAC exponent used by FADDT,FSUBT,FMULTT,FDIVT
|
||||
|
||||
;*******************************
|
||||
; *
|
||||
; MEMORY MAPPED INPUT/OUTPUT *
|
||||
; ADDRESSES $C000 - $C0FF *
|
||||
; *
|
||||
;*******************************
|
||||
|
||||
0000C000 = KBD .EQU $C000 ;BIT 7 IS 1 IF KEY PRESSED
|
||||
0000C010 = KBDSTRB .EQU $C010 ;CLEARS KBD BIT 7
|
||||
0000C000 = CLR80STO .EQU $C000 ;ALLOW PAGE2 PG1 & PG2 SWITCHING
|
||||
0000C001 = SET80STO .EQU $C001 ;ALLOW PAGE2 MAIN & AUX SWITCHNG
|
||||
0000C018 = STO80 .EQU $C018 ;1=PAGE2 SWITCHES MAIN/AUX
|
||||
;0=PAGE2 SWITCHES VIDEO PAGES
|
||||
0000C00C = CLR80VID .EQU $C00C ;TURN OFF 80-COL DISPLAY
|
||||
0000C00D = SET80VID .EQU $C00D ;TURN ON 80-COL DISPLAY
|
||||
0000C01F = COL80 .EQU $C01F ;0=40 COL IS ON, 1=80 COL IS ON
|
||||
0000C050 = TEXTOFF .EQU $C050 ;SELECTS GRAPHICS MODE
|
||||
0000C051 = TEXTON .EQU $C051 ;SELECTS TEXT MODE
|
||||
0000C01A = TEXT .EQU $C01A ;1=TEXT MODE ACTIVE,0=GRAPH MODE
|
||||
0000C052 = MIXEDOFF .EQU $C052 ;USE FULL-SCREEN GRAPHICS
|
||||
0000C053 = MIXEDON .EQU $C053 ;USE GRAPHICS WITH 4 LINES TEXT
|
||||
0000C01B = MIXED .EQU $C01B ;0=FULL SCREEN, 1=MIXED
|
||||
0000C054 = PAGE2OFF .EQU $C054 ;SELECTS PAGE1 OR MAIN VID MEM
|
||||
0000C055 = PAGE2ON .EQU $C055 ;SELECTS PAGE2 OR AUX VID MEM
|
||||
0000C01C = PAGE2 .EQU $C01C ;1=VID PG2 SELECTED OR AUX SEL
|
||||
0000C056 = HIRESOFF .EQU $C056 ;SELECTS LOW-RES GRAPHICS
|
||||
0000C057 = HIRESON .EQU $C057 ;SELECTS HIGH-RES GRAPHICS
|
||||
0000C01D = HIRES .EQU $C01D ;0=LOW-RES, 1=HIGH-RES
|
||||
|
||||
;*******************************
|
||||
; *
|
||||
; SUBROUTINES PROVIDED BY *
|
||||
|
||||
Portable 65xx Assembler - V1.2 (2008-03-09)
|
||||
|
||||
; APPLESOFT BASIC *
|
||||
; IN READ-ONLY MEMORY *
|
||||
; ADDRESSES $D000 - $F7FF *
|
||||
; *
|
||||
;*******************************
|
||||
|
||||
0000DB3A = STROUT .EQU $DB3A ;PRINT STRING IN Y,A
|
||||
0000E2F2 = GIVAYF .EQU $E2F2 ;CONVERT 2-BYTE INT A(HI) Y(LO) TO FLOAT IN FAC
|
||||
0000E6FB = CONINT .EQU $E6FB ;CONVERT FAC TO BYTE IN X, ERR IF FAC > 255
|
||||
0000E7BE = FADD .EQU $E7BE ;FAC = MEM + FAC, MEM ADDR IS Y(HI) A(LO)
|
||||
0000E7A7 = FSUB .EQU $E7A7 ;FAC = MEM - FAC, MEM ADDR IS Y(HI) A(LO)
|
||||
0000E97F = FMULT .EQU $E97F ;FAC = MEM * FAC, MEM ADDR IS Y(HI) A(LO)
|
||||
0000EA66 = FDIV .EQU $EA66 ;FAC = MEM / FAC, MEM ADDR IS Y(HI) A(LO)
|
||||
0000E7C1 = FADDT .EQU $E7C1 ;FAC = ARG + FAC, MUST LOAD FACEXP INTO A FIRST
|
||||
0000E7AA = FSUBT .EQU $E7AA ;FAC = ARG - FAC, MUST LOAD FACEXP INTO A FIRST
|
||||
0000E982 = FMULTT .EQU $E982 ;FAC = ARG * FAC, MUST LOAD FACEXP INTO A FIRST
|
||||
0000EA69 = FDIVT .EQU $EA69 ;FAC = ARG / FAC, MUST LOAD FACEXP INTO A FIRST
|
||||
0000EA39 = MUL10 .EQU $EA39 ;MULTIPLY FAC BY 10
|
||||
0000EBB2 = FCOMP .EQU $EBB2 ;COMP MEM TO FAC
|
||||
0000EBF2 = QINT .EQU $EBF2 ;CONVERT FAC TO INTEGER
|
||||
0000EB93 = FLOAT .EQU $EB93 ;CONVERT A TO FAC, I THINK
|
||||
0000EB63 = MOVAF .EQU $EB63 ;MOVE FAC INTO ARG
|
||||
0000EB2B = MOVMF .EQU $EB2B ;MOVE FAC TO MEMORY Y,X
|
||||
0000EB53 = MOVFA .EQU $EB53 ;MOVE ARG TO FAC
|
||||
0000EB2B = MOVFM .EQU $EB2B ;MOVE MEMORY TO FAC
|
||||
0000EC23 = INT .EQU $EC23 ;APPLESOFT INT FUNCTION
|
||||
0000ED2E = PRINTFAC .EQU $ED2E ;PRINT FAC. USES FOUT,STROUT
|
||||
0000ED34 = FOUT .EQU $ED34 ;FAC TO STRING, FAC DESTROYED
|
||||
0000EFAE = RND .EQU $EFAE ;APPLESOFT RND FUNCTION
|
||||
|
||||
;*******************************
|
||||
; *
|
||||
; SUBROUTINES PROVIDED BY *
|
||||
; SYSTEM MONITOR PROGRAM *
|
||||
; IN READ-ONLY MEMORY *
|
||||
; ADDRESSES $F800 - $FFFF *
|
||||
; *
|
||||
;*******************************
|
||||
|
||||
0000F800 = PLOT .EQU $F800 ;PLOT BLOCK ON LOW-RES SCREEN
|
||||
0000F819 = HLINE .EQU $F819 ;HORIZONTAL LINE
|
||||
0000F828 = VLINE .EQU $F828 ;VERTICAL LINE
|
||||
0000F832 = CLRSCR .EQU $F832 ;CLEAR LOW-RES SCREEN
|
||||
0000F836 = CLRTOP .EQU $F836 ;CLEAR THE TOP OF LOW-RES
|
||||
0000F85F = NEXTCOL .EQU $F85F ;INCREMENT COLOR BY 3
|
||||
0000F864 = SETCOL .EQU $F864 ;SET LOW-RES GRAPHICS COLOR
|
||||
0000F871 = SCRN .EQU $F871 ;READ THE LOW-RES SCREEN
|
||||
0000FB2F = TEXTCMD .EQU $FB2F
|
||||
0000FB39 = TEXTMODE .EQU $FB39
|
||||
0000FB40 = GR .EQU $FB40 ;BASIC GR COMMAND
|
||||
0000FCA8 = WAIT .EQU $FCA8
|
||||
0000FDED = COUT .EQU $FDED ;WRITE A CHARACTER
|
||||
0000FD8E = CROUT .EQU $FD8E ;WRITE A CARRIAGE RETURN
|
||||
0000FDDA = PRBYTE .EQU $FDDA ;PRINT VALUE OF BYTE
|
||||
|
||||
Portable 65xx Assembler - V1.2 (2008-03-09)
|
||||
|
||||
|
||||
.include "macros.s"
|
||||
;*******************************
|
||||
; *
|
||||
; MACROS *
|
||||
; *
|
||||
; AUTHOR: BILL CHATFIELD *
|
||||
; LICENSE: GPL2 *
|
||||
; *
|
||||
;*******************************
|
||||
|
||||
000000' PUSHY .MACRO
|
||||
TYA
|
||||
PHA
|
||||
.ENDM
|
||||
|
||||
000000' POPY .MACRO
|
||||
PLA
|
||||
TAY
|
||||
.ENDM
|
||||
|
||||
000000' PUSHXY .MACRO
|
||||
TXA
|
||||
PHA
|
||||
TYA
|
||||
PHA
|
||||
.ENDM
|
||||
|
||||
000000' POPXY .MACRO
|
||||
PLA
|
||||
TAY
|
||||
PLA
|
||||
TAX
|
||||
.ENDM
|
||||
|
||||
;*******************************
|
||||
; *
|
||||
; PUTS .MACRORO - OUTPUTS STRING *
|
||||
; ]1 = ADDRESS OF NULL- *
|
||||
; TERMINATED STRING *
|
||||
; *
|
||||
;*******************************
|
||||
|
||||
000000' PUTS .MACRO
|
||||
PUSHY
|
||||
LDY #0 ; PREPARE LOOP INDEX
|
||||
000000' NEXT LDA \0,Y ; LOAD A CHARACTER
|
||||
CMP #0 ; CHECK FOR END OF STRING
|
||||
BEQ DONE
|
||||
ORA #%10000000 ; SET HIGH BIT FOR OUTPUT
|
||||
JSR COUT
|
||||
INY
|
||||
JMP NEXT
|
||||
000000' DONE POPY
|
||||
|
||||
Portable 65xx Assembler - V1.2 (2008-03-09)
|
||||
|
||||
.ENDM
|
||||
|
||||
;*******************************
|
||||
; *
|
||||
; PUTF - *
|
||||
; PRINTS FLOATING POINT NUMBER *
|
||||
; IN FAC. DESTROYS VALUE IN *
|
||||
; FAC. DON'T KNOW WHY. *
|
||||
; *
|
||||
; ]1 - ABS ADDR FOR STRING *
|
||||
; *
|
||||
;*******************************
|
||||
|
||||
000000' PUTF .MACRO
|
||||
JSR FOUT ;CONVERT FAC TO STRING
|
||||
STA \0 ;STORE LOW BYTE OF STRING
|
||||
STY \0+1 ;STORE HIGH BYTE OF STRING
|
||||
PUTS (\0) ;PRINT STRING
|
||||
.ENDM
|
||||
|
||||
|
||||
.org $8000
|
||||
|
||||
008000 202380 : main jsr seedrnd
|
||||
008003 204B80 : jsr rndcol ;Set the color
|
||||
008006 60 : rts
|
||||
|
||||
; Add A to FAC leaving result in FAC
|
||||
008007 : addafac
|
||||
008007 48 : pha
|
||||
008008 2063EB : jsr MOVAF ;Move FAC to ARG
|
||||
00800B 68 : pla
|
||||
00800C 2093EB : jsr FLOAT ;Convert A to floating point in FAC
|
||||
00800F A59D : lda FACEXP ;Required for FADDT
|
||||
008011 20C1E7 : jsr FADDT ;Add ARG to FAC putting result in FAC
|
||||
008014 60 : rts ;Return with result in FAC
|
||||
|
||||
; Multiply FAC by A leaving result in FAC
|
||||
008015 : mulafac
|
||||
008015 48 : pha ;Save A on stack
|
||||
008016 2063EB : jsr MOVAF ;Move FAC to ARG
|
||||
008019 68 : pla ;Get original value back in A
|
||||
00801A 2093EB : jsr FLOAT ;Convert value in A to floating point in FAC
|
||||
00801D A59D : lda FACEXP ;Required for FMULTT
|
||||
00801F 2082E9 : jsr FMULTT ;Multiply ARG by FAC putting result in FAC
|
||||
008022 60 : rts ;Return with result in FAC
|
||||
|
||||
; Seed RND function by calling it with a variable negative number.
|
||||
008023 A54E : seedrnd lda RNDL ;RNDL is a good seed value, because it changes
|
||||
008025 0980 : ora #$80 ;Make it negative so RND will interpret it as a seed
|
||||
008027 2093EB : jsr FLOAT ;Convert it to floating point
|
||||
00802A 20AEEF : jsr RND ;Seed the random number generator
|
||||
00802D 60 : rts
|
||||
|
||||
|
||||
Portable 65xx Assembler - V1.2 (2008-03-09)
|
||||
|
||||
; Generate a floating point random number in the range [0,1) with result in FAC
|
||||
00802E A901 : genrnd lda #1 ;A 1 arg to RND says to give the next random num
|
||||
008030 2093EB : jsr FLOAT ;Convert to floating point as required by RND
|
||||
008033 20AEEF : jsr RND ;Generate the random number
|
||||
008036 60 : rts ;Return with result in FAC
|
||||
|
||||
; Generate an integer random number in the range [0,A-1] with result in A
|
||||
008037 : rnda
|
||||
008037 48 : pha ;Save parameter in A to stack
|
||||
008038 202E80 : jsr genrnd ;Generate random number [0,1) in FAC
|
||||
00803B 68 : pla ;Load multiplier into accumulator
|
||||
00803C 201580 : jsr mulafac ;Multiply FAC by A
|
||||
00803F 20FBE6 : jsr CONINT ;Convert FAC to 1-byte int in X
|
||||
008042 8A : txa ;Put the result in A
|
||||
008043 60 : rts ;Return with result A
|
||||
|
||||
; Generate an integer random number in the range [1,A] inclusive
|
||||
; with result in A
|
||||
008044 : rnd1a
|
||||
008044 203780 : jsr rnda ;Get an integer between [0,A-1] in A
|
||||
008047 18 : clc ;Change the range to [1,A]
|
||||
008048 6901 : adc #1
|
||||
00804A 60 : rts
|
||||
|
||||
; Set the color to a random non-black value.
|
||||
00804B : rndcol
|
||||
00804B A90F : lda #15 ;Max color number
|
||||
00804D 204480 : jsr rnd1a ;Generate a random non-black color number
|
||||
008050 2064F8 : jsr SETCOL ;Set the color
|
||||
008053 60 : rts
|
||||
|
||||
|
||||
|
||||
Portable 65xx Assembler - V1.2 (2008-03-09)
|
||||
|
||||
Symbol Table
|
||||
|
||||
CLR80STO 0000C000
|
||||
CLR80VID 0000C00C
|
||||
CLRSCR 0000F832
|
||||
CLRTOP 0000F836
|
||||
COL80 0000C01F
|
||||
CONINT 0000E6FB
|
||||
COUT 0000FDED
|
||||
CROUT 0000FD8E
|
||||
FACEXP 0000009D
|
||||
FADD 0000E7BE
|
||||
FADDT 0000E7C1
|
||||
FCOMP 0000EBB2
|
||||
FDIV 0000EA66
|
||||
FDIVT 0000EA69
|
||||
FLOAT 0000EB93
|
||||
FMULT 0000E97F
|
||||
FMULTT 0000E982
|
||||
FOUT 0000ED34
|
||||
FSUB 0000E7A7
|
||||
FSUBT 0000E7AA
|
||||
GIVAYF 0000E2F2
|
||||
GR 0000FB40
|
||||
HIRES 0000C01D
|
||||
HIRESOFF 0000C056
|
||||
HIRESON 0000C057
|
||||
HLINE 0000F819
|
||||
INT 0000EC23
|
||||
KBD 0000C000
|
||||
KBDSTRB 0000C010
|
||||
MIXED 0000C01B
|
||||
MIXEDOFF 0000C052
|
||||
MIXEDON 0000C053
|
||||
MOVAF 0000EB63
|
||||
MOVFA 0000EB53
|
||||
MOVFM 0000EB2B
|
||||
MOVMF 0000EB2B
|
||||
MUL10 0000EA39
|
||||
NEXTCOL 0000F85F
|
||||
PAGE2 0000C01C
|
||||
PAGE2OFF 0000C054
|
||||
PAGE2ON 0000C055
|
||||
PLOT 0000F800
|
||||
PRBYTE 0000FDDA
|
||||
PRINTFAC 0000ED2E
|
||||
QINT 0000EBF2
|
||||
RND 0000EFAE
|
||||
RNDH 0000004F
|
||||
RNDL 0000004E
|
||||
SCRN 0000F871
|
||||
SET80STO 0000C001
|
||||
SET80VID 0000C00D
|
||||
SETCOL 0000F864
|
||||
|
||||
Portable 65xx Assembler - V1.2 (2008-03-09)
|
||||
|
||||
STO80 0000C018
|
||||
STROUT 0000DB3A
|
||||
TEXT 0000C01A
|
||||
TEXTCMD 0000FB2F
|
||||
TEXTMODE 0000FB39
|
||||
TEXTOFF 0000C050
|
||||
TEXTON 0000C051
|
||||
VLINE 0000F828
|
||||
WAIT 0000FCA8
|
||||
__6501__ 00000000
|
||||
__6502__ 00000001
|
||||
__65816__ 00000000
|
||||
__65C02__ 00000000
|
||||
__65SC02__ 00000000
|
||||
addafac 00008007
|
||||
genrnd 0000802E
|
||||
main 00008000
|
||||
mulafac 00008015
|
||||
rnd1a 00008044
|
||||
rnda 00008037
|
||||
rndcol 0000804B
|
||||
seedrnd 00008023
|
26
src/rnd.s
26
src/rnd.s
@ -3,18 +3,19 @@
|
||||
; Random dungeon generator
|
||||
;
|
||||
;**************************
|
||||
.include "symbols.s"
|
||||
.include "macros.s"
|
||||
|
||||
.code
|
||||
|
||||
org $8000
|
||||
.include "symbols.s"
|
||||
.include "macros.s"
|
||||
|
||||
.org $8000
|
||||
|
||||
main jsr seedrnd
|
||||
jsr rndcol ;Set the color
|
||||
rts
|
||||
|
||||
* Add A to FAC leaving result in FAC
|
||||
; Add A to FAC leaving result in FAC
|
||||
addafac
|
||||
pha
|
||||
jsr MOVAF ;Move FAC to ARG
|
||||
@ -24,7 +25,7 @@ addafac
|
||||
jsr FADDT ;Add ARG to FAC putting result in FAC
|
||||
rts ;Return with result in FAC
|
||||
|
||||
* Multiply FAC by A leaving result in FAC
|
||||
; Multiply FAC by A leaving result in FAC
|
||||
mulafac
|
||||
pha ;Save A on stack
|
||||
jsr MOVAF ;Move FAC to ARG
|
||||
@ -34,20 +35,20 @@ mulafac
|
||||
jsr FMULTT ;Multiply ARG by FAC putting result in FAC
|
||||
rts ;Return with result in FAC
|
||||
|
||||
* Seed RND function by calling it with a variable negative number.
|
||||
; Seed RND function by calling it with a variable negative number.
|
||||
seedrnd lda RNDL ;RNDL is a good seed value, because it changes
|
||||
ora #$80 ;Make it negative so RND will interpret it as a seed
|
||||
jsr FLOAT ;Convert it to floating point
|
||||
jsr RND ;Seed the random number generator
|
||||
rts
|
||||
|
||||
* Generate a floating point random number in the range [0,1) with result in FAC
|
||||
; Generate a floating point random number in the range [0,1) with result in FAC
|
||||
genrnd lda #1 ;A 1 arg to RND says to give the next random num
|
||||
jsr FLOAT ;Convert to floating point as required by RND
|
||||
jsr RND ;Generate the random number
|
||||
rts ;Return with result in FAC
|
||||
|
||||
* Generate an integer random number in the range [0,A-1] with result in A
|
||||
; Generate an integer random number in the range [0,A-1] with result in A
|
||||
rnda
|
||||
pha ;Save parameter in A to stack
|
||||
jsr genrnd ;Generate random number [0,1) in FAC
|
||||
@ -57,14 +58,15 @@ rnda
|
||||
txa ;Put the result in A
|
||||
rts ;Return with result A
|
||||
|
||||
* Generate an integer random number in the range [1,A] inclusive
|
||||
* with result in A
|
||||
; Generate an integer random number in the range [1,A] inclusive
|
||||
; with result in A
|
||||
rnd1a
|
||||
jsr rnda ;Get an integer between [0,A-1] in A
|
||||
inc ;Change the range to [1,A]
|
||||
clc ;Change the range to [1,A]
|
||||
adc #1
|
||||
rts
|
||||
|
||||
* Set the color to a random non-black value.
|
||||
; Set the color to a random non-black value.
|
||||
rndcol
|
||||
lda #15 ;Max color number
|
||||
jsr rnd1a ;Generate a random non-black color number
|
||||
|
@ -1,22 +1,22 @@
|
||||
********************************
|
||||
* *
|
||||
* SYMBOLS *
|
||||
* *
|
||||
* AUTHOR: BILL CHATFIELD *
|
||||
* LICENSE: GPL2 *
|
||||
* *
|
||||
********************************
|
||||
;*******************************
|
||||
; *
|
||||
; SYMBOLS *
|
||||
; *
|
||||
; AUTHOR: BILL CHATFIELD *
|
||||
; LICENSE: GPL2 *
|
||||
; *
|
||||
;*******************************
|
||||
|
||||
RNDL .EQU $4e ;Continuously incremented while waiting for keyboard input
|
||||
RNDH .EQU $4f ;High byte of RNDL
|
||||
FACEXP .EQU $9d ;Address of FAC exponent used by FADDT,FSUBT,FMULTT,FDIVT
|
||||
|
||||
********************************
|
||||
* *
|
||||
* MEMORY MAPPED INPUT/OUTPUT *
|
||||
* ADDRESSES $C000 - $C0FF *
|
||||
* *
|
||||
********************************
|
||||
;*******************************
|
||||
; *
|
||||
; MEMORY MAPPED INPUT/OUTPUT *
|
||||
; ADDRESSES $C000 - $C0FF *
|
||||
; *
|
||||
;*******************************
|
||||
|
||||
KBD .EQU $C000 ;BIT 7 IS 1 IF KEY PRESSED
|
||||
KBDSTRB .EQU $C010 ;CLEARS KBD BIT 7
|
||||
@ -40,14 +40,14 @@ HIRESOFF .EQU $C056 ;SELECTS LOW-RES GRAPHICS
|
||||
HIRESON .EQU $C057 ;SELECTS HIGH-RES GRAPHICS
|
||||
HIRES .EQU $C01D ;0=LOW-RES, 1=HIGH-RES
|
||||
|
||||
********************************
|
||||
* *
|
||||
* SUBROUTINES PROVIDED BY *
|
||||
* APPLESOFT BASIC *
|
||||
* IN READ-ONLY MEMORY *
|
||||
* ADDRESSES $D000 - $F7FF *
|
||||
* *
|
||||
********************************
|
||||
;*******************************
|
||||
; *
|
||||
; SUBROUTINES PROVIDED BY *
|
||||
; APPLESOFT BASIC *
|
||||
; IN READ-ONLY MEMORY *
|
||||
; ADDRESSES $D000 - $F7FF *
|
||||
; *
|
||||
;*******************************
|
||||
|
||||
STROUT .EQU $DB3A ;PRINT STRING IN Y,A
|
||||
GIVAYF .EQU $E2F2 ;CONVERT 2-BYTE INT A(HI) Y(LO) TO FLOAT IN FAC
|
||||
@ -73,14 +73,14 @@ PRINTFAC .EQU $ED2E ;PRINT FAC. USES FOUT,STROUT
|
||||
FOUT .EQU $ED34 ;FAC TO STRING, FAC DESTROYED
|
||||
RND .EQU $EFAE ;APPLESOFT RND FUNCTION
|
||||
|
||||
********************************
|
||||
* *
|
||||
* SUBROUTINES PROVIDED BY *
|
||||
* SYSTEM MONITOR PROGRAM *
|
||||
* IN READ-ONLY MEMORY *
|
||||
* ADDRESSES $F800 - $FFFF *
|
||||
* *
|
||||
********************************
|
||||
;*******************************
|
||||
; *
|
||||
; SUBROUTINES PROVIDED BY *
|
||||
; SYSTEM MONITOR PROGRAM *
|
||||
; IN READ-ONLY MEMORY *
|
||||
; ADDRESSES $F800 - $FFFF *
|
||||
; *
|
||||
;*******************************
|
||||
|
||||
PLOT .EQU $F800 ;PLOT BLOCK ON LOW-RES SCREEN
|
||||
HLINE .EQU $F819 ;HORIZONTAL LINE
|
||||
|
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user