mirror of
https://github.com/smartykit/apple1.git
synced 2024-09-30 15:56:27 +00:00
96 lines
1.9 KiB
NASM
96 lines
1.9 KiB
NASM
|
;printing 8x8 picture in the center with '*'
|
||
|
PIC_WIDTH = 8
|
||
|
PIC_HEIGHT = 8
|
||
|
OFFSET_X = (40 - PIC_WIDTH)/2
|
||
|
PIC_ADDRESS = $1111
|
||
|
ROW_ADDRESS = PIC_ADDRESS + PIC_HEIGHT
|
||
|
|
||
|
|
||
|
; Y - row number
|
||
|
; X - column (pixel) number
|
||
|
JSR NEXT_ROW
|
||
|
LDA #$0
|
||
|
STA ROW_ADDRESS ;initialize row counter with 0
|
||
|
LDY #PIC_HEIGHT
|
||
|
|
||
|
ROWS_LOOP: JSR PRINT_OFFSET
|
||
|
LDA ROW_ADDRESS
|
||
|
TAX
|
||
|
LDA PIC_ADDRESS, X
|
||
|
LDX #PIC_WIDTH
|
||
|
NEXT_PIXEL: ASL
|
||
|
BCC NO_PIXEL
|
||
|
JSR PRINT_STAR
|
||
|
JMP AFTER_PIXEL
|
||
|
NO_PIXEL: JSR PRINT_BLANK
|
||
|
AFTER_PIXEL: DEX
|
||
|
BNE NEXT_PIXEL
|
||
|
JSR NEXT_ROW
|
||
|
INC ROW_ADDRESS
|
||
|
DEY
|
||
|
BNE ROWS_LOOP
|
||
|
JSR NEXT_ROW
|
||
|
JMP RESET
|
||
|
|
||
|
;printing offset subroutine (optional: save registers A and X)
|
||
|
PRINT_OFFSET: PHA ;save A
|
||
|
TXA ;X->A
|
||
|
PHA ;save X
|
||
|
LDX #OFFSET_X
|
||
|
OFFSET_LOOP: LDA #' '
|
||
|
JSR ECHO
|
||
|
DEX
|
||
|
BNE OFFSET_LOOP
|
||
|
|
||
|
PLA ;restore X
|
||
|
TAX ;A->X
|
||
|
PLA ;restore A
|
||
|
RTS
|
||
|
|
||
|
PRINT_STAR: PHA
|
||
|
LDA #'*'
|
||
|
JSR ECHO
|
||
|
PLA
|
||
|
RTS
|
||
|
PRINT_BLANK: PHA
|
||
|
LDA #' '
|
||
|
JSR ECHO
|
||
|
PLA
|
||
|
RTS
|
||
|
NEXT_ROW: PHA
|
||
|
LDA #$0d
|
||
|
JSR ECHO
|
||
|
PLA
|
||
|
RTS
|
||
|
;from HeartPicture
|
||
|
;to PIC_ADDRESS ($88)
|
||
|
COPY_HEART: PHA
|
||
|
TXA
|
||
|
PHA
|
||
|
|
||
|
LDX #PIC_HEIGHT
|
||
|
COPY_LOOP: LDA HeartPicture, X
|
||
|
STA PIC_ADDRESS, X
|
||
|
DEX
|
||
|
BPL COPY_LOOP
|
||
|
|
||
|
PLA
|
||
|
TAX
|
||
|
PLA
|
||
|
RTS
|
||
|
|
||
|
|
||
|
HeartPicture:
|
||
|
.byte %00000000
|
||
|
.byte %01100110
|
||
|
.byte %11111111
|
||
|
.byte %11111111
|
||
|
.byte %11111111
|
||
|
.byte %01111110
|
||
|
.byte %00111100
|
||
|
.byte %00011000
|
||
|
SmileyPicture: .byte $3c, $42, $a5, $81, $a5, $99, $42, $3c
|
||
|
WozPicture: .byte $88, $a8, $50, $07, $61, $92, $94, $67
|
||
|
SmartyLogo: .byte $ff, $81, $bd, $bd, $bd, $bd, $81, $ff
|
||
|
RocketPicture: .byte $18, $24, $24, $24, $7e, $a5, $FF, $a5
|
||
|
.byte "8*8 Pixel Art program end", $0d, $00
|