mirror of https://github.com/gungwald/rnd.git
101 lines
3.6 KiB
ArmAsm
101 lines
3.6 KiB
ArmAsm
********************************
|
|
* *
|
|
* 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
|
|
|