mirror of
https://github.com/gungwald/rnd.git
synced 2025-04-30 18:37:16 +00:00
Initial setup
This commit is contained in:
parent
2703aa51d2
commit
b060e879ed
BIN
lib/65xx.zip
Normal file
BIN
lib/65xx.zip
Normal file
Binary file not shown.
BIN
lib/AppleCommander-1.3.5-ac.jar
Normal file
BIN
lib/AppleCommander-1.3.5-ac.jar
Normal file
Binary file not shown.
44
src/asm/Makefile
Normal file
44
src/asm/Makefile
Normal file
@ -0,0 +1,44 @@
|
||||
MERLIN_URL=https://www.brutaldeluxe.fr/products/crossdevtools/merlin/Merlin32_v1.0.zip
|
||||
|
||||
PGM=rnd
|
||||
BASE_DSK=prodos-2.0.3-boot.dsk
|
||||
# It is necessary to use this older version of AppleCommander to support
|
||||
# the PowerBook G4 and iBook G3. This version only requires Java 1.3.
|
||||
AC=java -jar AppleCommander-1.3.5-ac.jar
|
||||
AS65=java -cp 65xx.zip uk.co.demon.obelisk.w65xx.As65
|
||||
LK65=java -cp 65xx.zip uk.co.demon.obelisk.w65xx.Lk65
|
||||
SRC=$(PGM).s
|
||||
VOL=$(PGM)
|
||||
DSK=$(PGM).dsk
|
||||
APPLEWIN_VER=1.29.10.0
|
||||
|
||||
ifeq ($(OS),Windows_NT)
|
||||
COPY=copy
|
||||
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
|
||||
endif
|
||||
|
||||
# There is some kind of problem with turning this into a boot disk
|
||||
# after it is created by AppleCommander. So, copy an existing boot
|
||||
# disk instead.
|
||||
#$(AC) -pro140 $(DSK) $(VOL)
|
||||
|
||||
$(DSK): $(PGM)
|
||||
$(COPY) $(BASE_DSK) $(DSK)
|
||||
$(AC) -p $(DSK) STARTUP BAS < STARTUP#fc0801
|
||||
$(AC) -p $(DSK) $(PGM) BIN 0x8000 < $(PGM)
|
||||
|
||||
$(PGM): $(PGM).obj
|
||||
$(LK65) -output $(PGM) -bin $(PGM).obj
|
||||
|
||||
$(PGM).obj: symbols.s macros.s $(SRC)
|
||||
$(AS65) $(SRC)
|
||||
|
||||
test: $(DSK)
|
||||
$(EMU) $(DSK)
|
||||
|
||||
clean:
|
||||
rm $(PGM) $(DSK) _FileInformation.txt $(PGM).obj *~
|
||||
|
71
src/asm/macros.s
Normal file
71
src/asm/macros.s
Normal file
@ -0,0 +1,71 @@
|
||||
********************************
|
||||
* *
|
||||
* MACROS *
|
||||
* *
|
||||
* AUTHOR: BILL CHATFIELD *
|
||||
* LICENSE: GPL2 *
|
||||
* *
|
||||
********************************
|
||||
|
||||
PUSHY MAC
|
||||
TYA
|
||||
PHA
|
||||
EOM
|
||||
|
||||
POPY MAC
|
||||
PLA
|
||||
TAY
|
||||
EOM
|
||||
|
||||
PUSHXY MAC
|
||||
TXA
|
||||
PHA
|
||||
TYA
|
||||
PHA
|
||||
EOM
|
||||
|
||||
POPXY MAC
|
||||
PLA
|
||||
TAY
|
||||
PLA
|
||||
TAX
|
||||
EOM
|
||||
|
||||
********************************
|
||||
* *
|
||||
* PUTS MACRO - OUTPUTS STRING *
|
||||
* ]1 = ADDRESS OF NULL- *
|
||||
* TERMINATED STRING *
|
||||
* *
|
||||
********************************
|
||||
|
||||
PUTS MAC
|
||||
PUSHY
|
||||
LDY #0 ; PREPARE LOOP INDEX
|
||||
NEXT LDA ]1,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
|
||||
DONE POPY
|
||||
EOM
|
||||
|
||||
********************************
|
||||
* *
|
||||
* PUTF - *
|
||||
* PRINTS FLOATING POINT NUMBER *
|
||||
* IN FAC. DESTROYS VALUE IN *
|
||||
* FAC. DON'T KNOW WHY. *
|
||||
* *
|
||||
* ]1 - ABS ADDR FOR STRING *
|
||||
* *
|
||||
********************************
|
||||
|
||||
PUTF MAC
|
||||
JSR FOUT ;CONVERT FAC TO STRING
|
||||
STA ]1 ;STORE LOW BYTE OF STRING
|
||||
STY ]1+1 ;STORE HIGH BYTE OF STRING
|
||||
PUTS (]1) ;PRINT STRING
|
||||
EOM
|
72
src/asm/rnd.s
Normal file
72
src/asm/rnd.s
Normal file
@ -0,0 +1,72 @@
|
||||
;**************************
|
||||
;
|
||||
; Random dungeon generator
|
||||
;
|
||||
;**************************
|
||||
use symbols
|
||||
use macros
|
||||
dsk rnd
|
||||
|
||||
org $8000
|
||||
|
||||
main jsr seedrnd
|
||||
jsr rndcol ;Set the color
|
||||
rts
|
||||
|
||||
* Add A to FAC leaving result in FAC
|
||||
addafac
|
||||
pha
|
||||
jsr MOVAF ;Move FAC to ARG
|
||||
pla
|
||||
jsr FLOAT ;Convert A to floating point in FAC
|
||||
lda FACEXP ;Required for FADDT
|
||||
jsr FADDT ;Add ARG to FAC putting result in FAC
|
||||
rts ;Return with result in FAC
|
||||
|
||||
* Multiply FAC by A leaving result in FAC
|
||||
mulafac
|
||||
pha ;Save A on stack
|
||||
jsr MOVAF ;Move FAC to ARG
|
||||
pla ;Get original value back in A
|
||||
jsr FLOAT ;Convert value in A to floating point in FAC
|
||||
lda FACEXP ;Required for FMULTT
|
||||
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.
|
||||
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
|
||||
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
|
||||
rnda
|
||||
pha ;Save parameter in A to stack
|
||||
jsr genrnd ;Generate random number [0,1) in FAC
|
||||
pla ;Load multiplier into accumulator
|
||||
jsr mulafac ;Multiply FAC by A
|
||||
jsr CONINT ;Convert FAC to 1-byte int in X
|
||||
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
|
||||
rnd1a
|
||||
jsr rnda ;Get an integer between [0,A-1] in A
|
||||
inc ;Change the range to [1,A]
|
||||
rts
|
||||
|
||||
* Set the color to a random non-black value.
|
||||
rndcol
|
||||
lda #15 ;Max color number
|
||||
jsr rnd1a ;Generate a random non-black color number
|
||||
jsr SETCOL ;Set the color
|
||||
rts
|
||||
|
100
src/asm/symbols.s
Normal file
100
src/asm/symbols.s
Normal file
@ -0,0 +1,100 @@
|
||||
********************************
|
||||
* *
|
||||
* 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 *
|
||||
* *
|
||||
********************************
|
||||
|
||||
KBD EQU $C000 ;BIT 7 IS 1 IF KEY PRESSED
|
||||
KBDSTRB EQU $C010 ;CLEARS KBD BIT 7
|
||||
CLR80STO EQU $C000 ;ALLOW PAGE2 PG1 & PG2 SWITCHING
|
||||
SET80STO EQU $C001 ;ALLOW PAGE2 MAIN & AUX SWITCHNG
|
||||
STO80 EQU $C018 ;1=PAGE2 SWITCHES MAIN/AUX
|
||||
;0=PAGE2 SWITCHES VIDEO PAGES
|
||||
CLR80VID EQU $C00C ;TURN OFF 80-COL DISPLAY
|
||||
SET80VID EQU $C00D ;TURN ON 80-COL DISPLAY
|
||||
COL80 EQU $C01F ;0=40 COL IS ON, 1=80 COL IS ON
|
||||
TEXTOFF EQU $C050 ;SELECTS GRAPHICS MODE
|
||||
TEXTON EQU $C051 ;SELECTS TEXT MODE
|
||||
TEXT EQU $C01A ;1=TEXT MODE ACTIVE,0=GRAPH MODE
|
||||
MIXEDOFF EQU $C052 ;USE FULL-SCREEN GRAPHICS
|
||||
MIXEDON EQU $C053 ;USE GRAPHICS WITH 4 LINES TEXT
|
||||
MIXED EQU $C01B ;0=FULL SCREEN, 1=MIXED
|
||||
PAGE2OFF EQU $C054 ;SELECTS PAGE1 OR MAIN VID MEM
|
||||
PAGE2ON EQU $C055 ;SELECTS PAGE2 OR AUX VID MEM
|
||||
PAGE2 EQU $C01C ;1=VID PG2 SELECTED OR AUX SEL
|
||||
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 *
|
||||
* *
|
||||
********************************
|
||||
|
||||
STROUT EQU $DB3A ;PRINT STRING IN Y,A
|
||||
GIVAYF EQU $E2F2 ;CONVERT 2-BYTE INT A(HI) Y(LO) TO FLOAT IN FAC
|
||||
CONINT EQU $E6FB ;CONVERT FAC TO BYTE IN X, ERR IF FAC > 255
|
||||
FADD EQU $E7BE ;FAC = MEM + FAC, MEM ADDR IS Y(HI) A(LO)
|
||||
FSUB EQU $E7A7 ;FAC = MEM - FAC, MEM ADDR IS Y(HI) A(LO)
|
||||
FMULT EQU $E97F ;FAC = MEM * FAC, MEM ADDR IS Y(HI) A(LO)
|
||||
FDIV EQU $EA66 ;FAC = MEM / FAC, MEM ADDR IS Y(HI) A(LO)
|
||||
FADDT EQU $E7C1 ;FAC = ARG + FAC, MUST LOAD FACEXP INTO A FIRST
|
||||
FSUBT EQU $E7AA ;FAC = ARG - FAC, MUST LOAD FACEXP INTO A FIRST
|
||||
FMULTT EQU $E982 ;FAC = ARG * FAC, MUST LOAD FACEXP INTO A FIRST
|
||||
FDIVT EQU $EA69 ;FAC = ARG / FAC, MUST LOAD FACEXP INTO A FIRST
|
||||
MUL10 EQU $EA39 ;MULTIPLY FAC BY 10
|
||||
FCOMP EQU $EBB2 ;COMP MEM TO FAC
|
||||
QINT EQU $EBF2 ;CONVERT FAC TO INTEGER
|
||||
FLOAT EQU $EB93 ;CONVERT A TO FAC, I THINK
|
||||
MOVAF EQU $EB63 ;MOVE FAC INTO ARG
|
||||
MOVMF EQU $EB2B ;MOVE FAC TO MEMORY Y,X
|
||||
MOVFA EQU $EB53 ;MOVE ARG TO FAC
|
||||
MOVFM EQU $EB2B ;MOVE MEMORY TO FAC
|
||||
INT EQU $EC23 ;APPLESOFT INT FUNCTION
|
||||
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 *
|
||||
* *
|
||||
********************************
|
||||
|
||||
PLOT EQU $F800 ;PLOT BLOCK ON LOW-RES SCREEN
|
||||
HLINE EQU $F819 ;HORIZONTAL LINE
|
||||
VLINE EQU $F828 ;VERTICAL LINE
|
||||
CLRSCR EQU $F832 ;CLEAR LOW-RES SCREEN
|
||||
CLRTOP EQU $F836 ;CLEAR THE TOP OF LOW-RES
|
||||
NEXTCOL EQU $F85F ;INCREMENT COLOR BY 3
|
||||
SETCOL EQU $F864 ;SET LOW-RES GRAPHICS COLOR
|
||||
SCRN EQU $F871 ;READ THE LOW-RES SCREEN
|
||||
TEXTCMD EQU $FB2F
|
||||
TEXTMODE EQU $FB39
|
||||
GR EQU $FB40 ;BASIC GR COMMAND
|
||||
WAIT EQU $FCA8
|
||||
COUT EQU $FDED ;WRITE A CHARACTER
|
||||
CROUT EQU $FD8E ;WRITE A CARRIAGE RETURN
|
||||
PRBYTE EQU $FDDA ;PRINT VALUE OF BYTE
|
||||
|
BIN
storage/STARTUP#fc0801
Normal file
BIN
storage/STARTUP#fc0801
Normal file
Binary file not shown.
BIN
storage/prodos-2.0.3-boot.dsk
Normal file
BIN
storage/prodos-2.0.3-boot.dsk
Normal file
Binary file not shown.
2
storage/startup.txt
Normal file
2
storage/startup.txt
Normal file
@ -0,0 +1,2 @@
|
||||
10 print chr$(4);"-RND"
|
||||
|
Loading…
x
Reference in New Issue
Block a user