mirror of
https://github.com/uffejakobsen/acme.git
synced 2024-11-18 06:10:15 +00:00
0ec58e8b15
git-svn-id: https://svn.code.sf.net/p/acme-crossass/code-0/trunk@12 4df02467-bbd4-4a76-a152-e7ce94205b78
109 lines
2.0 KiB
Plaintext
109 lines
2.0 KiB
Plaintext
;ACME 0.94.4
|
|
|
|
; ab hier liegt die Cursorsteuerung
|
|
; A = screenx, Y = screeny
|
|
!zone
|
|
crsrset sta .m ; buffer x
|
|
iny ; adjust height
|
|
iny
|
|
iny
|
|
sty .n ; buffer y
|
|
jsr crsroff
|
|
lda #0 ; clear Hi
|
|
sta vtemp + 1
|
|
.n = * + 1: lda #MODIFIED8 ; y
|
|
asl ; *2
|
|
asl ; *4
|
|
rol vtemp + 1
|
|
asl ; *8
|
|
rol vtemp + 1
|
|
asl ; *16
|
|
rol vtemp + 1
|
|
sta vtemp ; stash Lo
|
|
ldy vtemp + 1 ; copy Hi
|
|
sty vtemp + 2
|
|
asl ; *32
|
|
rol vtemp + 2
|
|
asl ; *64
|
|
rol vtemp + 2
|
|
adc vtemp ; + 16er-Lo
|
|
sta vtemp ; 80er-Lo in vtemp
|
|
bcc + ; page
|
|
inc vtemp + 1
|
|
clc
|
|
+
|
|
.m = * + 1: adc #MODIFIED8 ; x
|
|
sta vtemp ; store Lo
|
|
lda vtemp + 1 ; get 16er-Hi
|
|
adc vtemp + 2 ; add 64er-Hi
|
|
adc #attrhi ; add base
|
|
sta vtemp + 1 ; store Hi
|
|
|
|
!zone
|
|
crsron lda conreg ; buffert CR
|
|
sta .m
|
|
+bank15
|
|
jsr vpntcrsr ; set address
|
|
+wait_for_vdc
|
|
lda reg ; get attribute
|
|
sta tcolor ; buffer it
|
|
jsr vpntcrsr ; set address
|
|
lda clrcrsr ; get crsr
|
|
+wait_for_vdc
|
|
sta reg ; set crsr
|
|
.m = * + 1: lda #MODIFIED8 ; bank
|
|
sta conreg ; restore CR
|
|
rts
|
|
|
|
!zone
|
|
crsroff lda conreg ; buffer CR
|
|
sta .m
|
|
+bank15
|
|
jsr vpntcrsr ; set address
|
|
lda tcolor ; get attribute
|
|
+wait_for_vdc
|
|
sta reg ; set attribute
|
|
.m = * + 1: lda #MODIFIED8 ; bank
|
|
sta conreg ; restore CR
|
|
rts
|
|
|
|
; push data
|
|
!zone
|
|
crsrnew ldx crsrheap ; get stackpointer
|
|
lda vtemp ; get low
|
|
sta crsrheap, x ; push
|
|
lda vtemp + 1 ; get high
|
|
sta crsrheap + 1, x ; push
|
|
inx ; inc stackpointer
|
|
inx
|
|
stx crsrheap ; set stackpointer
|
|
jsr crsroff
|
|
|
|
!zone
|
|
crsrhide ldx #$3f ; place cursor
|
|
stx vtemp + 1 ; outside visible
|
|
ldx #$ff ; area
|
|
stx vtemp
|
|
rts
|
|
|
|
!zone
|
|
crsrold ldx crsrheap ; get stackpointer
|
|
dex ; previous entry !
|
|
dex
|
|
lda crsrheap, x ; get lo
|
|
sta vtemp ; set lo
|
|
lda crsrheap + 1, x ; get hi
|
|
sta vtemp + 1 ; set hi
|
|
stx crsrheap ; set stackpointer
|
|
jmp crsron
|
|
|
|
!zone
|
|
crsrinit ldx #1 ; init cursorstack
|
|
stx crsrheap
|
|
jmp crsrhide ; and hide cursor
|
|
|
|
crsrheap !fill 33, 33
|
|
|
|
vpntcrsr +ldax vtemp
|
|
jmp ramaccess ; set vdc
|