2014-07-03 23:56:26 +00:00
|
|
|
;==================================================================================================
|
2014-06-25 15:47:28 +00:00
|
|
|
; Handy constants.
|
|
|
|
const FALSE = 0
|
|
|
|
const TRUE = !FALSE
|
2014-07-03 23:56:26 +00:00
|
|
|
|
|
|
|
;==================================================================================================
|
2014-06-25 15:47:28 +00:00
|
|
|
; Hardware addresses.
|
|
|
|
const keyboard = $C000
|
|
|
|
const keystrobe = $C010
|
2014-07-06 14:40:57 +00:00
|
|
|
const ptr = $6000
|
|
|
|
const f1 = 0
|
|
|
|
const f2 = 2
|
2014-07-03 23:56:26 +00:00
|
|
|
|
|
|
|
;==================================================================================================
|
|
|
|
; Strings.
|
|
|
|
byte hellostr[] = "Hello, world.\n"
|
2014-07-06 14:40:57 +00:00
|
|
|
byte str2[] = "Second.\n"
|
|
|
|
|
|
|
|
predef func1, func2
|
|
|
|
word myclass
|
|
|
|
word table = @func1, @func2
|
2014-07-03 23:56:26 +00:00
|
|
|
|
|
|
|
;==================================================================================================
|
|
|
|
; Definitions used by assembly code
|
|
|
|
asm __defs
|
2014-07-06 17:21:03 +00:00
|
|
|
; Zero-page
|
|
|
|
TMPL = $6
|
|
|
|
TMPH = $7
|
|
|
|
ESTKL = $C0
|
|
|
|
ESTKH = $D0
|
|
|
|
; Memory bank manipulation
|
2014-07-03 23:56:26 +00:00
|
|
|
LCRDEN = $C080
|
|
|
|
LCWTEN = $C081
|
|
|
|
ROMEN = $C082
|
|
|
|
LCRWEN = $C083
|
|
|
|
LCBNK2 = $00
|
|
|
|
LCBNK1 = $08
|
2014-07-06 17:21:03 +00:00
|
|
|
; ROM routines
|
|
|
|
PRBYTE = $FDDA
|
|
|
|
COUT = $FDED
|
2014-07-03 23:56:26 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
;==================================================================================================
|
|
|
|
; Print a string
|
|
|
|
asm puts
|
|
|
|
TXA
|
|
|
|
PHA
|
|
|
|
LDA ESTKL,X
|
2014-06-25 15:47:28 +00:00
|
|
|
STA TMPL
|
2014-07-03 23:56:26 +00:00
|
|
|
LDA ESTKH,X
|
2014-06-25 15:47:28 +00:00
|
|
|
STA TMPH
|
2014-07-03 23:56:26 +00:00
|
|
|
LDY #0
|
|
|
|
LDA (TMPL),Y
|
2014-06-25 15:47:28 +00:00
|
|
|
TAX
|
2014-07-03 23:56:26 +00:00
|
|
|
INY
|
2014-06-25 15:47:28 +00:00
|
|
|
BIT ROMEN
|
2014-07-03 23:56:26 +00:00
|
|
|
- LDA (TMPL),Y
|
|
|
|
ORA #$80
|
2014-07-06 17:21:03 +00:00
|
|
|
JSR COUT
|
2014-07-03 23:56:26 +00:00
|
|
|
INY
|
|
|
|
DEX
|
|
|
|
BNE -
|
2014-06-25 15:47:28 +00:00
|
|
|
BIT LCRDEN+LCBNK2
|
|
|
|
PLA
|
2014-07-03 23:56:26 +00:00
|
|
|
TAX
|
2014-07-06 14:40:57 +00:00
|
|
|
RTS
|
|
|
|
end
|
|
|
|
|
|
|
|
;==================================================================================================
|
|
|
|
; Print a 16-bit hex value, followed by a space
|
|
|
|
asm printHex
|
|
|
|
BIT ROMEN
|
|
|
|
LDA ESTKH,X
|
2014-07-06 17:21:03 +00:00
|
|
|
JSR PRBYTE
|
2014-07-06 14:40:57 +00:00
|
|
|
LDA ESTKL,X
|
2014-07-06 17:21:03 +00:00
|
|
|
JSR PRBYTE
|
2014-07-06 14:40:57 +00:00
|
|
|
LDA #$A0
|
2014-07-06 17:21:03 +00:00
|
|
|
JSR COUT
|
2014-07-06 14:40:57 +00:00
|
|
|
BIT LCRDEN+LCBNK2
|
2014-06-25 15:47:28 +00:00
|
|
|
RTS
|
|
|
|
end
|
2014-07-03 23:56:26 +00:00
|
|
|
|
|
|
|
;==================================================================================================
|
2014-06-25 15:47:28 +00:00
|
|
|
; Main loop.
|
|
|
|
;
|
2014-07-06 14:40:57 +00:00
|
|
|
def func1()
|
|
|
|
printHex(1)
|
|
|
|
end
|
|
|
|
def func2()
|
|
|
|
printHex(2)
|
2014-07-03 23:56:26 +00:00
|
|
|
end
|
|
|
|
|
2014-07-06 14:40:57 +00:00
|
|
|
myclass = @table
|
|
|
|
table.f2()
|
|
|
|
;(myclass).f2()
|
|
|
|
((myclass):f2)()
|
|
|
|
puts(@hellostr)
|
|
|
|
func1(@hellostr)
|
2014-06-25 15:47:28 +00:00
|
|
|
|
|
|
|
done
|