blob: f0026edc4ad7c049180ad5b42a7c66dfb5f6418e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
@include %bootstrap
@include %std_mem
@include %std_term
; Constants
@data text_buffer_size 2048
; Global variable pointers
; 0xE800 - 0xEFFF: sprite buffer space that is unused in this program
@data cursor_p 0xE800
@data title_string " »» ATK16 monitor v0.1 »»"
@data subtitle_string " Run [help] for a list of commands"
@label main
; initialize global variables
ldi cursor_p RA
ldr RA RA
ldi vt_text_mem RB
ldr RB RB
str RB RA ; cursor_p := text_mem
; use memset to clear the text buffer
ldi vt_text_mem RA ; RA := text buffer address pointer
ldr RA RA ; RA := text buffer address
ldi text_buffer_size RB ; RB := pointer to 1024
ldr RB RB ; RB := 1024
ldi 0 RC ; RC := 0
calli memset
set_graphics_mode gr_text_mode
calli cursor_newline
ldi 65 RA
calli cursor_put_char
; @data test_char ${ord('A')}
; ldi test_char RA ; RA := 'A' pointer
; ldr RA RA ; RA := 'A'
; calli log_term_char
; ldi hello_string RA ; RA := hello string pointer
; calli log_term_string
; loop forever
@label loop
jpi loop
@label cursor_newline
; move cursor to the beginning of the next line
; parameters: none
; returns: none
stack_stash RA RB
ldi cursor_p RA
ldr RA RA
ldr RA RB
slri RB 6 RB ; cursor = cursor / 64
addi RB 1 RB ; cursor = cursor + 1
slli RB 6 RB ; cursor = cursor * 64
str RB RA
stack_restore RA RB
return
@label cursor_put_char
; put a character at the current cursor position
; parameters: RA = character to put
; returns: none
stack_stash RB RC
ldi cursor_p RB
ldr RB RB
ldr RB RC
str RA RC
inc RC
str RC RB
stack_restore RB RC
return
@label cursor_put_string
; put a string at the current cursor position
; parameters: RA = string_p
; returns: none
stack_stash RB RC
ldi cursor_p RB
ldr RB RB
ldr RB RC
; TODO: implement
return
|