mirror of
https://github.com/digarok/MiniMemoryTester.git
synced 2024-12-22 00:29:15 +00:00
string engine partially workign
This commit is contained in:
parent
b3e1059298
commit
c6500f1911
55
src/applerom.s
Normal file
55
src/applerom.s
Normal file
@ -0,0 +1,55 @@
|
||||
**************************************************
|
||||
* Apple Standard Memory Locations
|
||||
**************************************************
|
||||
CLRLORES equ $F832
|
||||
LORES equ $C050
|
||||
TXTSET equ $C051
|
||||
MIXCLR equ $C052
|
||||
MIXSET equ $C053
|
||||
TXTPAGE1 equ $C054
|
||||
TXTPAGE2 equ $C055
|
||||
KEY equ $C000
|
||||
C80STOREOFF equ $C000
|
||||
C80STOREON equ $C001
|
||||
STROBE equ $C010
|
||||
SPEAKER equ $C030
|
||||
VBL equ $C02E
|
||||
RDVBLBAR equ $C019 ;not VBL (VBL signal low
|
||||
|
||||
RAMWRTAUX equ $C005
|
||||
RAMWRTMAIN equ $C004
|
||||
SETAN3 equ $C05E ;Set annunciator-3 output to 0
|
||||
SET80VID equ $C00D ;enable 80-column display mode (WR-only)
|
||||
|
||||
|
||||
|
||||
COUT equ $FDED ; Calls the output routine whose address is stored in CSW,
|
||||
; normally COUTI
|
||||
CLREOL equ $FC9C ; Clears to end of line from current cursor position
|
||||
CLEOLZ equ $FC9E ; Clear to end ofline using contents of Y register as cursor
|
||||
; position
|
||||
CLREOP equ $FC42 ; Clears to bottom of window
|
||||
CLRSCR equ $F832 ; Clears the low-resolution screen
|
||||
CLRTOP equ $F836 ; Clears the top 40 lines of the low-resolution screen
|
||||
COUTI equ $FDF0 ; Displays a character on the screen
|
||||
CROUT equ $FD8E ; Generates a carriage return
|
||||
CROUT1 equ $FD8B ; Clears to end ofline and then generates a carriage return
|
||||
GETLN equ $FD6A ; Displays the prompt character; accepts a string of characters
|
||||
; by means of RDKEY
|
||||
HLINE equ $F819 ; Draws a horizontal line of blocks
|
||||
HOME equ $FC58 ; Clears the window and puts the cursor in the upper left
|
||||
; corner of the window
|
||||
KEYIN equ $FD1B ; With 80-column fumware inactive, displays checkerboard
|
||||
; cursor; accepts characters from keyboard
|
||||
PLOT equ $F800 ; Plots a single low-resolution block on the screen
|
||||
PRBL2 equ $F94A ; Sends 1 to 256 blank spaces to the output device
|
||||
PRBYTE equ $FDDA ; Prints a hexadecimal byte
|
||||
PRHEX equ $FDE3 ; Prints 4 bits as a hexadecimal number
|
||||
|
||||
PRNTAX equ $F941 ; Prints the contents of A and X in hexadecimal format
|
||||
RDKEY equ $FD0C ; Displays blinking cursor; goes to standard input
|
||||
; routine, nonnally KEYIN or BASICIN
|
||||
SCRN equ $F871 ; Reads color of a low-resolution block
|
||||
SETCOL equ $F864 ; Sets the color for plotting in low-resolution block
|
||||
VTABZ equ $FC24 ; Sets the cursor vertical position
|
||||
VLINE equ $F828 ; Draws a vertical line of low-resolution blocks
|
91
src/mt.s
91
src/mt.s
@ -1,16 +1,20 @@
|
||||
****************************************
|
||||
* Quit8 *
|
||||
* MemoryTester *
|
||||
* *
|
||||
* Dagen Brock <dagenbrock@gmail.com> *
|
||||
* 2013-06-24 *
|
||||
* 2015-02-23 *
|
||||
****************************************
|
||||
|
||||
org $2000 ; start at $2000 (all ProDOS8 system files)
|
||||
typ $ff ; set P8 type ($ff = "SYS") for output file
|
||||
DSK mtsystem ; tell compiler what name for output file
|
||||
dsk mtsystem ; tell compiler what name for output file
|
||||
put applerom
|
||||
|
||||
|
||||
MLI equ $bf00
|
||||
|
||||
jsr DrawMenu
|
||||
jsr WaitKey
|
||||
|
||||
|
||||
Quit jsr MLI ; first actual command, call ProDOS vector
|
||||
@ -27,3 +31,84 @@ QuitParm dfb 4 ; number of parameters
|
||||
|
||||
|
||||
Error brk $00 ; shouldn't be here either
|
||||
|
||||
DrawMenu jsr HOME
|
||||
lda #MenuStrs
|
||||
ldy #>MenuStrs
|
||||
ldx #05 ; horiz pos
|
||||
jsr PrintStringsX
|
||||
rts
|
||||
|
||||
; lda #MenuStr1
|
||||
; ldy #>MenuStr1
|
||||
; jsr PrintString
|
||||
|
||||
PrintStringsX stx _printstringsx_horiz ; IGNORED! 4 NOW!
|
||||
|
||||
sta $0
|
||||
sty $1
|
||||
:loop lda $0 ; slower, but allows API reuse
|
||||
ldy $1
|
||||
jsr PrintString ; y is last val
|
||||
iny
|
||||
lda ($0),y
|
||||
beq :done
|
||||
tya ; not done so add strlen to source ptr
|
||||
clc
|
||||
adc $0
|
||||
sta $0
|
||||
bcc :nocarry
|
||||
inc $1
|
||||
:nocarry bra :loop
|
||||
|
||||
|
||||
:done rts
|
||||
|
||||
|
||||
|
||||
_printstringsx_horiz db 00
|
||||
|
||||
* PrintString (A=Low Byte, Y=High Byte)
|
||||
PrintString sta $0
|
||||
sty $1
|
||||
|
||||
ldy #0
|
||||
:loop lda ($0),y
|
||||
beq :done
|
||||
jsr COUT
|
||||
iny
|
||||
bra :loop
|
||||
:done rts
|
||||
|
||||
MenuStrs
|
||||
asc " *********************** ",$8D,$00
|
||||
asc " ** **",$8D,$00
|
||||
asc " ** Mini Memory Tester **",$8D,$00
|
||||
asc " ** Reactive Micro **",$8D,$00
|
||||
asc " ** (beta) **",$8D,$00
|
||||
asc " ** **",$8D,$00
|
||||
asc " *********************** ",$8D,$00
|
||||
asc $8D,$8D,$8D,$00
|
||||
asc " Start BANK: ",$8D,$00
|
||||
asc " End BANK: ",$8D,$8D,$00
|
||||
asc " Start ADDR: ",$8D,$00
|
||||
asc " End ADDR: ",$8D,$8D,$8D,$00
|
||||
asc " Test Byte: (Leave empty = random)",$8D,00
|
||||
|
||||
hex 00,00
|
||||
|
||||
|
||||
|
||||
|
||||
WaitKey
|
||||
:kloop lda KEY
|
||||
bpl :kloop
|
||||
sta STROBE
|
||||
rts
|
||||
|
||||
* DEFAULTS
|
||||
StartBank db #$02
|
||||
EndBank db #$7F
|
||||
StartAddr dw #$0000
|
||||
EndAddr dw #$FFFF
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user