Jeśli chcesz wziąć udział w dyskusjach na forum - zaloguj się. Jeżeli nie masz loginu - poproś o członkostwo.
Vanilla 1.1.4 jest produktem Lussumo. Więcej informacji: Dokumentacja, Forum.
iSiek:
Używacie rutyn systemowych typu PUTCHAR, PUTLINE albo IOCB0 i wołacie CIO?iSiek:
A może bazgracie bezpośrednio w pamięć ekranuiSiek:
składacie Display Listę?
org $2000
start
lda #0
sta 710
lda #15
sta 709
ldx # < text
ldy # > text
jsr $c642
loop
jmp *
text
dta c"Hello World",$9b
run start
org $80
var1
dta c'h'
org $2000
start
lda #0
sta 710
lda #15
sta 709
;
lda var1
sta text
lda #'w'
sta text+6
;
ldx # < text
ldy # > text
jsr $c642
loop
jmp *
text
dta c"Hello World",$9b
run start
ICCOM = $342
ICBAL = $344
ICBLL = $348
CPUTREC = $9
CIOV = $E456
SETVBV = $E45C
org $80
var1
dta c'h'
org $2000
start
lda #0
sta 710
lda #15
sta 709
;
lda var1
sta text
lda #'w'
sta text+6
;
jsr print
loop
jmp *
print
ldx #$0
mva #CPUTREC ICCOM,x
mwa #text ICBAL,x
mwa #$A0 ICBLL,x
jsr CIOV
rts
text
dta c"Hello World",$9b
run start
org $0600
SAVX equ $00
SAVY equ $01
bufor equ $f2b0
OUTCHAR equ $f2b0
DVAL equ 48
LVAL equ 55
ldx #0
petla
lda bufor,x
jsr PrintMemHex
inx
cpx #2
bcc petla
jmp *
.proc HexHiNibble
lsr
lsr
lsr
lsr
cmp #10
bpl litera
;cyfra
clc
adc #DVAL
jmp koniec
litera:
clc
adc #LVAL
koniec:
stx SAVX
sty SAVY
jsr OUTCHAR
ldx SAVX
ldy SAVY
rts
.endp
.proc HexLoNibble
and #$0f
cmp #10
bpl litera
;cyfra
clc
adc #DVAL
jmp koniec2
litera:
clc
adc #LVAL
koniec2:
stx SAVX
sty SAVY
jsr OUTCHAR
ldx SAVX
ldy SAVY
rts
.endp
.proc PrintMemHex
pha
jsr HexHiNibble
pla
jsr HexLoNibble
rts
.endp
BNE SKIP
INC PRINTCHAR+2
;***************************************************************************************************
;* PROGRAM TWORZY CIAG TEKSTOWY *
;* JSR PRINTCHAR DODAJE ZNAK ASCII W ACC DO CIAGU *
;* JSR PRINTASCII DODAJE KOD ASCII WAROSCI W ACC *
;* WYWOLAIE PRINTCHAR Z ACC=$0D "CR" POWODUJE WYDRUK NA EKRANIE I PRZYWROCENIE BUFFORA NA POCZATEK *
;* JSR INIT WYWOLAC RAZ NA POCZATKU DO USTAWIENIA BUFORA
;***************************************************************************************************
*=$1000
; JSR INIT
; LDA #'A'
; JSR PRINTCHAR
; BRK
INIT:
LDX #>buf
LDY #<buf
STX PRINTC+2
STY PRINTC+1
RTS
PRINTASCII:
PHA
LSR
LSR
LSR
LSR
JSR BIN2ASCII
JSR PRINTCHAR
PLA
JSR BIN2ASCII
PRINTCHAR:
CMP #$0D
BNE PRINTC
LDA #$9B
CMP #$9B
PRINTC:
STA BUF
BEQ PRINT
INC PRINTC+1
BNE SKIP
INC PRINTC+2
SKIP:
RTS
PRINT:
LDX #>buf
LDY #<buf
STX PRINTC+2
STY PRINTC+1
JMP $C642
BIN2ASCII:
CLC
SED
ADC #$90
ADC #$40
CLD
RTS
BUF:
.db 0,0
Gdy używam systemowego PUTCHR = $f2b0 to on działa idealnie ale niszczy rejestry X i Y więc przed każdym wywołaniem trzeba je zabezpieczyć, a potem przywrócić. Może jest jakiś inny bardziej efektowny i tańszy sposób na umieszczanie znaków na ekranie?
SAVMSC = $58
org $600
start
lda #"A"
ldy #10
sta (SAVMSC),y
jmp *
run start
adc #(pozostałe znaki do 40)?
SAVMSC = $58
org $600
start
ldy #0
loop
lda #"A"
sta (SAVMSC),y
iny
cpy #40
bne loop
jmp *
run start
; sztuczka
sec
draw_x rol snowflake,x
;--------------------------------------
opt f-h+
;--------------------------------------
SAVMSC EQU $58 ;2-byte saved address
;--------------------------------------
asterix = 10
op_ror = $6a
op_rol = $2a
op_lsr = $4a
op_inc = $e6
op_dec = $c6
;counter = $5A ; OLDROW
;OLDCOL = $5B ; OLDCOL 2 bytes
;--------------------------------------
org $80
ldx #18
draw_y ldy #17
row lda snowflake
pha
sec
draw_x rol
bcc @+
pha
mva #asterix (SAVMSC),y
pla
cpy #9
bne @+
mva #op_lsr draw_x
pla
@ dey
bpl draw_x
cpx #9
bne @+
iny
mva #asterix (SAVMSC),y
ldy #18
sta (SAVMSC),y
mva #op_dec incdec
@ adw SAVMSC #40
mva #op_rol draw_x
incdec inc row+1
dex
bpl draw_y
bne *
;--------------------------------------
snowflake dta %00000000 ; 0
dta %00000010 ; 1
dta %01010001 ; 2
dta %00110000 ; 3
dta %01110010 ; 4
dta %00001001 ; 5
dta %00000100 ; 6
dta %10010010 ; 7
dta %01001001 ; 8
dta %11111111 ; 9
;--------------------------------------

