mirror of
https://github.com/daniel5151/ANESE.git
synced 2025-04-02 10:32:00 -04:00
1435 lines
44 KiB
ArmAsm
Executable file
Vendored
1435 lines
44 KiB
ArmAsm
Executable file
Vendored
; Prints values in various ways to output,
|
|
; including numbers and strings.
|
|
|
|
newline = DTE_NEWLINE
|
|
|
|
zp_byte print_temp_
|
|
|
|
.ifdef NEED_PRINT_REG
|
|
|
|
; Prints indicated register to console as two hex
|
|
; chars and space
|
|
; Preserved: A, X, Y, flags
|
|
print_a:
|
|
php
|
|
pha
|
|
print_reg_:
|
|
jsr print_hex
|
|
lda #' ' ;DTE_CHARMAP
|
|
jsr print_char_
|
|
pla
|
|
plp
|
|
rts
|
|
|
|
print_x:
|
|
php
|
|
pha
|
|
txa
|
|
jmp print_reg_
|
|
|
|
print_y:
|
|
php
|
|
pha
|
|
tya
|
|
jmp print_reg_
|
|
|
|
print_p:
|
|
php
|
|
pha
|
|
php
|
|
pla
|
|
jmp print_reg_
|
|
|
|
print_s:
|
|
php
|
|
pha
|
|
txa
|
|
tsx
|
|
inx
|
|
inx
|
|
inx
|
|
inx
|
|
jsr print_x
|
|
tax
|
|
pla
|
|
plp
|
|
rts
|
|
|
|
.endif
|
|
|
|
; Prints A as two hex characters, NO space after
|
|
; Preserved: A, X, Y
|
|
print_hex:
|
|
.ifdef NEED_CRC_FUN
|
|
jsr update_crc
|
|
.endif
|
|
pha
|
|
lsr a
|
|
lsr a
|
|
lsr a
|
|
lsr a
|
|
jsr print_hex_nibble
|
|
pla
|
|
|
|
pha
|
|
and #$0F
|
|
jsr print_hex_nibble
|
|
pla
|
|
rts
|
|
|
|
print_hex_nibble:
|
|
@z = '0' ;DTE_CHARMAP
|
|
;empty line in between to prevent the two lines being joined
|
|
@a = 'A' ;DTE_CHARMAP
|
|
.if @a <> @z+10
|
|
cmp #10
|
|
blt @digit
|
|
adc #(@a-@z-11) ;+1 since carry is set
|
|
@digit:
|
|
.else
|
|
clc
|
|
.endif
|
|
adc #@z
|
|
jmp print_char_
|
|
|
|
|
|
; Prints character and updates checksum UNLESS
|
|
; it's a newline.
|
|
; Preserved: A, X, Y
|
|
print_char:
|
|
.ifdef NEED_CRC_FUN
|
|
cmp #DTE_NEWLINE
|
|
beq :+
|
|
jsr update_crc
|
|
:
|
|
.endif
|
|
pha
|
|
jsr print_char_
|
|
pla
|
|
rts
|
|
|
|
; Prints space. Does NOT update checksum.
|
|
; Preserved: A, X, Y
|
|
print_space:
|
|
pha
|
|
lda #' ' ;DTE_CHARMAP
|
|
jsr print_char_
|
|
pla
|
|
rts
|
|
|
|
|
|
; Advances to next line. Does NOT update checksum.
|
|
; Preserved: A, X, Y
|
|
print_newline:
|
|
pha
|
|
lda #DTE_NEWLINE
|
|
jsr print_char_
|
|
pla
|
|
rts
|
|
|
|
|
|
; Prints string
|
|
; Preserved: A, X, Y
|
|
.macro print_str_no_nul s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63,s64,s65,s66,s67,s68,s69,s70,s71,s72,s73,s74,s75,s76,s77,s78,s79,s80,s81,s82,s83,s84,s85,s86,s87,s88,s89,s90,s91,s92,s93,s94,s95,s96,s97,s98,s99,s100,s101,s102,s103,s104,s105,s106,s107,s108,s109,s110,s111,s112,s113,s114,s115,s116,s117,s118,s119,s120,s121,s122,s123,s124,s125,s126,s127,s128,s129,s130,s131,s132,s133,s134,s135,s136,s137,s138,s139,s140,s141,s142,s143,s144,s145,s146,s147,s148,s149,s150,s151,s152,s153,s154,s155,s156,s157,s158,s159,s160,s161,s162,s163,s164,s165,s166,s167,s168,s169,s170,s171,s172,s173,s174,s175,s176,s177,s178,s179,s180,s181,s182,s183,s184,s185,s186,s187,s188,s189,s190,s191,s192,s193,s194,s195,s196,s197,s198,s199,s200,s201,s202,s203,s204,s205,s206,s207,s208,s209,s210,s211,s212,s213,s214,s215,s216,s217,s218,s219,s220,s221,s222,s223,s224,s225,s226,s227,s228,s229,s230,s231,s232,s233,s234,s235,s236,s237,s238,s239,s240,s241,s242,s243,s244,s245,s246,s247,s248,s249,s250,s251,s252,s253,s254,s255,s256,s257,s258,s259,s260,s261,s262,s263,s264,s265,s266,s267,s268,s269,s270,s271,s272,s273,s274,s275,s276,s277,s278,s279,s280,s281,s282,s283,s284,s285,s286,s287,s288,s289,s290,s291,s292,s293,s294,s295,s296,s297,s298,s299,s300
|
|
jsr print_str_
|
|
.byte s
|
|
.ifnblank s2
|
|
.byte s2
|
|
.endif
|
|
.ifnblank s3
|
|
.byte s3
|
|
.endif
|
|
.ifnblank s4
|
|
.byte s4
|
|
.endif
|
|
.ifnblank s5
|
|
.byte s5
|
|
.endif
|
|
.ifnblank s6
|
|
.byte s6
|
|
.endif
|
|
.ifnblank s7
|
|
.byte s7
|
|
.endif
|
|
.ifnblank s8
|
|
.byte s8
|
|
.endif
|
|
.ifnblank s9
|
|
.byte s9
|
|
.endif
|
|
.ifnblank s10
|
|
.byte s10
|
|
.endif
|
|
.ifnblank s11
|
|
.byte s11
|
|
.endif
|
|
.ifnblank s12
|
|
.byte s12
|
|
.endif
|
|
.ifnblank s13
|
|
.byte s13
|
|
.endif
|
|
.ifnblank s14
|
|
.byte s14
|
|
.endif
|
|
.ifnblank s15
|
|
.byte s15
|
|
.endif
|
|
.ifnblank s16
|
|
.byte s16
|
|
.endif
|
|
.ifnblank s17
|
|
.byte s17
|
|
.endif
|
|
.ifnblank s18
|
|
.byte s18
|
|
.endif
|
|
.ifnblank s19
|
|
.byte s19
|
|
.endif
|
|
.ifnblank s20
|
|
.byte s20
|
|
.endif
|
|
.ifnblank s21
|
|
.byte s21
|
|
.endif
|
|
.ifnblank s22
|
|
.byte s22
|
|
.endif
|
|
.ifnblank s23
|
|
.byte s23
|
|
.endif
|
|
.ifnblank s24
|
|
.byte s24
|
|
.endif
|
|
.ifnblank s25
|
|
.byte s25
|
|
.endif
|
|
.ifnblank s26
|
|
.byte s26
|
|
.endif
|
|
.ifnblank s27
|
|
.byte s27
|
|
.endif
|
|
.ifnblank s28
|
|
.byte s28
|
|
.endif
|
|
.ifnblank s29
|
|
.byte s29
|
|
.endif
|
|
.ifnblank s30
|
|
.byte s30
|
|
.endif
|
|
.ifnblank s31
|
|
.byte s31
|
|
.endif
|
|
.ifnblank s32
|
|
.byte s32
|
|
.endif
|
|
.ifnblank s33
|
|
.byte s33
|
|
.endif
|
|
.ifnblank s34
|
|
.byte s34
|
|
.endif
|
|
.ifnblank s35
|
|
.byte s35
|
|
.endif
|
|
.ifnblank s36
|
|
.byte s36
|
|
.endif
|
|
.ifnblank s37
|
|
.byte s37
|
|
.endif
|
|
.ifnblank s38
|
|
.byte s38
|
|
.endif
|
|
.ifnblank s39
|
|
.byte s39
|
|
.endif
|
|
.ifnblank s40
|
|
.byte s40
|
|
.endif
|
|
.ifnblank s41
|
|
.byte s41
|
|
.endif
|
|
.ifnblank s42
|
|
.byte s42
|
|
.endif
|
|
.ifnblank s43
|
|
.byte s43
|
|
.endif
|
|
.ifnblank s44
|
|
.byte s44
|
|
.endif
|
|
.ifnblank s45
|
|
.byte s45
|
|
.endif
|
|
.ifnblank s46
|
|
.byte s46
|
|
.endif
|
|
.ifnblank s47
|
|
.byte s47
|
|
.endif
|
|
.ifnblank s48
|
|
.byte s48
|
|
.endif
|
|
.ifnblank s49
|
|
.byte s49
|
|
.endif
|
|
.ifnblank s50
|
|
.byte s50
|
|
.endif
|
|
.ifnblank s51
|
|
.byte s51
|
|
.endif
|
|
.ifnblank s52
|
|
.byte s52
|
|
.endif
|
|
.ifnblank s53
|
|
.byte s53
|
|
.endif
|
|
.ifnblank s54
|
|
.byte s54
|
|
.endif
|
|
.ifnblank s55
|
|
.byte s55
|
|
.endif
|
|
.ifnblank s56
|
|
.byte s56
|
|
.endif
|
|
.ifnblank s57
|
|
.byte s57
|
|
.endif
|
|
.ifnblank s58
|
|
.byte s58
|
|
.endif
|
|
.ifnblank s59
|
|
.byte s59
|
|
.endif
|
|
.ifnblank s60
|
|
.byte s60
|
|
.endif
|
|
.ifnblank s61
|
|
.byte s61
|
|
.endif
|
|
.ifnblank s62
|
|
.byte s62
|
|
.endif
|
|
.ifnblank s63
|
|
.byte s63
|
|
.endif
|
|
.ifnblank s64
|
|
.byte s64
|
|
.endif
|
|
.ifnblank s65
|
|
.byte s65
|
|
.endif
|
|
.ifnblank s66
|
|
.byte s66
|
|
.endif
|
|
.ifnblank s67
|
|
.byte s67
|
|
.endif
|
|
.ifnblank s68
|
|
.byte s68
|
|
.endif
|
|
.ifnblank s69
|
|
.byte s69
|
|
.endif
|
|
.ifnblank s70
|
|
.byte s70
|
|
.endif
|
|
.ifnblank s71
|
|
.byte s71
|
|
.endif
|
|
.ifnblank s72
|
|
.byte s72
|
|
.endif
|
|
.ifnblank s73
|
|
.byte s73
|
|
.endif
|
|
.ifnblank s74
|
|
.byte s74
|
|
.endif
|
|
.ifnblank s75
|
|
.byte s75
|
|
.endif
|
|
.ifnblank s76
|
|
.byte s76
|
|
.endif
|
|
.ifnblank s77
|
|
.byte s77
|
|
.endif
|
|
.ifnblank s78
|
|
.byte s78
|
|
.endif
|
|
.ifnblank s79
|
|
.byte s79
|
|
.endif
|
|
.ifnblank s80
|
|
.byte s80
|
|
.endif
|
|
.ifnblank s81
|
|
.byte s81
|
|
.endif
|
|
.ifnblank s82
|
|
.byte s82
|
|
.endif
|
|
.ifnblank s83
|
|
.byte s83
|
|
.endif
|
|
.ifnblank s84
|
|
.byte s84
|
|
.endif
|
|
.ifnblank s85
|
|
.byte s85
|
|
.endif
|
|
.ifnblank s86
|
|
.byte s86
|
|
.endif
|
|
.ifnblank s87
|
|
.byte s87
|
|
.endif
|
|
.ifnblank s88
|
|
.byte s88
|
|
.endif
|
|
.ifnblank s89
|
|
.byte s89
|
|
.endif
|
|
.ifnblank s90
|
|
.byte s90
|
|
.endif
|
|
.ifnblank s91
|
|
.byte s91
|
|
.endif
|
|
.ifnblank s92
|
|
.byte s92
|
|
.endif
|
|
.ifnblank s93
|
|
.byte s93
|
|
.endif
|
|
.ifnblank s94
|
|
.byte s94
|
|
.endif
|
|
.ifnblank s95
|
|
.byte s95
|
|
.endif
|
|
.ifnblank s96
|
|
.byte s96
|
|
.endif
|
|
.ifnblank s97
|
|
.byte s97
|
|
.endif
|
|
.ifnblank s98
|
|
.byte s98
|
|
.endif
|
|
.ifnblank s99
|
|
.byte s99
|
|
.endif
|
|
.ifnblank s100
|
|
.byte s100
|
|
.endif
|
|
.ifnblank s101
|
|
.byte s101
|
|
.endif
|
|
.ifnblank s102
|
|
.byte s102
|
|
.endif
|
|
.ifnblank s103
|
|
.byte s103
|
|
.endif
|
|
.ifnblank s104
|
|
.byte s104
|
|
.endif
|
|
.ifnblank s105
|
|
.byte s105
|
|
.endif
|
|
.ifnblank s106
|
|
.byte s106
|
|
.endif
|
|
.ifnblank s107
|
|
.byte s107
|
|
.endif
|
|
.ifnblank s108
|
|
.byte s108
|
|
.endif
|
|
.ifnblank s109
|
|
.byte s109
|
|
.endif
|
|
.ifnblank s110
|
|
.byte s110
|
|
.endif
|
|
.ifnblank s111
|
|
.byte s111
|
|
.endif
|
|
.ifnblank s112
|
|
.byte s112
|
|
.endif
|
|
.ifnblank s113
|
|
.byte s113
|
|
.endif
|
|
.ifnblank s114
|
|
.byte s114
|
|
.endif
|
|
.ifnblank s115
|
|
.byte s115
|
|
.endif
|
|
.ifnblank s116
|
|
.byte s116
|
|
.endif
|
|
.ifnblank s117
|
|
.byte s117
|
|
.endif
|
|
.ifnblank s118
|
|
.byte s118
|
|
.endif
|
|
.ifnblank s119
|
|
.byte s119
|
|
.endif
|
|
.ifnblank s120
|
|
.byte s120
|
|
.endif
|
|
.ifnblank s121
|
|
.byte s121
|
|
.endif
|
|
.ifnblank s122
|
|
.byte s122
|
|
.endif
|
|
.ifnblank s123
|
|
.byte s123
|
|
.endif
|
|
.ifnblank s124
|
|
.byte s124
|
|
.endif
|
|
.ifnblank s125
|
|
.byte s125
|
|
.endif
|
|
.ifnblank s126
|
|
.byte s126
|
|
.endif
|
|
.ifnblank s127
|
|
.byte s127
|
|
.endif
|
|
.ifnblank s128
|
|
.byte s128
|
|
.endif
|
|
.ifnblank s129
|
|
.byte s129
|
|
.endif
|
|
.ifnblank s130
|
|
.byte s130
|
|
.endif
|
|
.ifnblank s131
|
|
.byte s131
|
|
.endif
|
|
.ifnblank s132
|
|
.byte s132
|
|
.endif
|
|
.ifnblank s133
|
|
.byte s133
|
|
.endif
|
|
.ifnblank s134
|
|
.byte s134
|
|
.endif
|
|
.ifnblank s135
|
|
.byte s135
|
|
.endif
|
|
.ifnblank s136
|
|
.byte s136
|
|
.endif
|
|
.ifnblank s137
|
|
.byte s137
|
|
.endif
|
|
.ifnblank s138
|
|
.byte s138
|
|
.endif
|
|
.ifnblank s139
|
|
.byte s139
|
|
.endif
|
|
.ifnblank s140
|
|
.byte s140
|
|
.endif
|
|
.ifnblank s141
|
|
.byte s141
|
|
.endif
|
|
.ifnblank s142
|
|
.byte s142
|
|
.endif
|
|
.ifnblank s143
|
|
.byte s143
|
|
.endif
|
|
.ifnblank s144
|
|
.byte s144
|
|
.endif
|
|
.ifnblank s145
|
|
.byte s145
|
|
.endif
|
|
.ifnblank s146
|
|
.byte s146
|
|
.endif
|
|
.ifnblank s147
|
|
.byte s147
|
|
.endif
|
|
.ifnblank s148
|
|
.byte s148
|
|
.endif
|
|
.ifnblank s149
|
|
.byte s149
|
|
.endif
|
|
.ifnblank s150
|
|
.byte s150
|
|
.endif
|
|
.ifnblank s151
|
|
.byte s151
|
|
.endif
|
|
.ifnblank s152
|
|
.byte s152
|
|
.endif
|
|
.ifnblank s153
|
|
.byte s153
|
|
.endif
|
|
.ifnblank s154
|
|
.byte s154
|
|
.endif
|
|
.ifnblank s155
|
|
.byte s155
|
|
.endif
|
|
.ifnblank s156
|
|
.byte s156
|
|
.endif
|
|
.ifnblank s157
|
|
.byte s157
|
|
.endif
|
|
.ifnblank s158
|
|
.byte s158
|
|
.endif
|
|
.ifnblank s159
|
|
.byte s159
|
|
.endif
|
|
.ifnblank s160
|
|
.byte s160
|
|
.endif
|
|
.ifnblank s161
|
|
.byte s161
|
|
.endif
|
|
.ifnblank s162
|
|
.byte s162
|
|
.endif
|
|
.ifnblank s163
|
|
.byte s163
|
|
.endif
|
|
.ifnblank s164
|
|
.byte s164
|
|
.endif
|
|
.ifnblank s165
|
|
.byte s165
|
|
.endif
|
|
.ifnblank s166
|
|
.byte s166
|
|
.endif
|
|
.ifnblank s167
|
|
.byte s167
|
|
.endif
|
|
.ifnblank s168
|
|
.byte s168
|
|
.endif
|
|
.ifnblank s169
|
|
.byte s169
|
|
.endif
|
|
.ifnblank s170
|
|
.byte s170
|
|
.endif
|
|
.ifnblank s171
|
|
.byte s171
|
|
.endif
|
|
.ifnblank s172
|
|
.byte s172
|
|
.endif
|
|
.ifnblank s173
|
|
.byte s173
|
|
.endif
|
|
.ifnblank s174
|
|
.byte s174
|
|
.endif
|
|
.ifnblank s175
|
|
.byte s175
|
|
.endif
|
|
.ifnblank s176
|
|
.byte s176
|
|
.endif
|
|
.ifnblank s177
|
|
.byte s177
|
|
.endif
|
|
.ifnblank s178
|
|
.byte s178
|
|
.endif
|
|
.ifnblank s179
|
|
.byte s179
|
|
.endif
|
|
.ifnblank s180
|
|
.byte s180
|
|
.endif
|
|
.ifnblank s181
|
|
.byte s181
|
|
.endif
|
|
.ifnblank s182
|
|
.byte s182
|
|
.endif
|
|
.ifnblank s183
|
|
.byte s183
|
|
.endif
|
|
.ifnblank s184
|
|
.byte s184
|
|
.endif
|
|
.ifnblank s185
|
|
.byte s185
|
|
.endif
|
|
.ifnblank s186
|
|
.byte s186
|
|
.endif
|
|
.ifnblank s187
|
|
.byte s187
|
|
.endif
|
|
.ifnblank s188
|
|
.byte s188
|
|
.endif
|
|
.ifnblank s189
|
|
.byte s189
|
|
.endif
|
|
.ifnblank s190
|
|
.byte s190
|
|
.endif
|
|
.ifnblank s191
|
|
.byte s191
|
|
.endif
|
|
.ifnblank s192
|
|
.byte s192
|
|
.endif
|
|
.ifnblank s193
|
|
.byte s193
|
|
.endif
|
|
.ifnblank s194
|
|
.byte s194
|
|
.endif
|
|
.ifnblank s195
|
|
.byte s195
|
|
.endif
|
|
.ifnblank s196
|
|
.byte s196
|
|
.endif
|
|
.ifnblank s197
|
|
.byte s197
|
|
.endif
|
|
.ifnblank s198
|
|
.byte s198
|
|
.endif
|
|
.ifnblank s199
|
|
.byte s199
|
|
.endif
|
|
.ifnblank s200
|
|
.byte s200
|
|
.endif
|
|
.ifnblank s201
|
|
.byte s201
|
|
.endif
|
|
.ifnblank s202
|
|
.byte s202
|
|
.endif
|
|
.ifnblank s203
|
|
.byte s203
|
|
.endif
|
|
.ifnblank s204
|
|
.byte s204
|
|
.endif
|
|
.ifnblank s205
|
|
.byte s205
|
|
.endif
|
|
.ifnblank s206
|
|
.byte s206
|
|
.endif
|
|
.ifnblank s207
|
|
.byte s207
|
|
.endif
|
|
.ifnblank s208
|
|
.byte s208
|
|
.endif
|
|
.ifnblank s209
|
|
.byte s209
|
|
.endif
|
|
.ifnblank s210
|
|
.byte s210
|
|
.endif
|
|
.ifnblank s211
|
|
.byte s211
|
|
.endif
|
|
.ifnblank s212
|
|
.byte s212
|
|
.endif
|
|
.ifnblank s213
|
|
.byte s213
|
|
.endif
|
|
.ifnblank s214
|
|
.byte s214
|
|
.endif
|
|
.ifnblank s215
|
|
.byte s215
|
|
.endif
|
|
.ifnblank s216
|
|
.byte s216
|
|
.endif
|
|
.ifnblank s217
|
|
.byte s217
|
|
.endif
|
|
.ifnblank s218
|
|
.byte s218
|
|
.endif
|
|
.ifnblank s219
|
|
.byte s219
|
|
.endif
|
|
.ifnblank s220
|
|
.byte s220
|
|
.endif
|
|
.ifnblank s221
|
|
.byte s221
|
|
.endif
|
|
.ifnblank s222
|
|
.byte s222
|
|
.endif
|
|
.ifnblank s223
|
|
.byte s223
|
|
.endif
|
|
.ifnblank s224
|
|
.byte s224
|
|
.endif
|
|
.ifnblank s225
|
|
.byte s225
|
|
.endif
|
|
.ifnblank s226
|
|
.byte s226
|
|
.endif
|
|
.ifnblank s227
|
|
.byte s227
|
|
.endif
|
|
.ifnblank s228
|
|
.byte s228
|
|
.endif
|
|
.ifnblank s229
|
|
.byte s229
|
|
.endif
|
|
.ifnblank s230
|
|
.byte s230
|
|
.endif
|
|
.ifnblank s231
|
|
.byte s231
|
|
.endif
|
|
.ifnblank s232
|
|
.byte s232
|
|
.endif
|
|
.ifnblank s233
|
|
.byte s233
|
|
.endif
|
|
.ifnblank s234
|
|
.byte s234
|
|
.endif
|
|
.ifnblank s235
|
|
.byte s235
|
|
.endif
|
|
.ifnblank s236
|
|
.byte s236
|
|
.endif
|
|
.ifnblank s237
|
|
.byte s237
|
|
.endif
|
|
.ifnblank s238
|
|
.byte s238
|
|
.endif
|
|
.ifnblank s239
|
|
.byte s239
|
|
.endif
|
|
.ifnblank s240
|
|
.byte s240
|
|
.endif
|
|
.ifnblank s241
|
|
.byte s241
|
|
.endif
|
|
.ifnblank s242
|
|
.byte s242
|
|
.endif
|
|
.ifnblank s243
|
|
.byte s243
|
|
.endif
|
|
.ifnblank s244
|
|
.byte s244
|
|
.endif
|
|
.ifnblank s245
|
|
.byte s245
|
|
.endif
|
|
.ifnblank s246
|
|
.byte s246
|
|
.endif
|
|
.ifnblank s247
|
|
.byte s247
|
|
.endif
|
|
.ifnblank s248
|
|
.byte s248
|
|
.endif
|
|
.ifnblank s249
|
|
.byte s249
|
|
.endif
|
|
.ifnblank s250
|
|
.byte s250
|
|
.endif
|
|
.ifnblank s251
|
|
.byte s251
|
|
.endif
|
|
.ifnblank s252
|
|
.byte s252
|
|
.endif
|
|
.ifnblank s253
|
|
.byte s253
|
|
.endif
|
|
.ifnblank s254
|
|
.byte s254
|
|
.endif
|
|
.ifnblank s255
|
|
.byte s255
|
|
.endif
|
|
.ifnblank s256
|
|
.byte s256
|
|
.endif
|
|
.ifnblank s257
|
|
.byte s257
|
|
.endif
|
|
.ifnblank s258
|
|
.byte s258
|
|
.endif
|
|
.ifnblank s259
|
|
.byte s259
|
|
.endif
|
|
.ifnblank s260
|
|
.byte s260
|
|
.endif
|
|
.ifnblank s261
|
|
.byte s261
|
|
.endif
|
|
.ifnblank s262
|
|
.byte s262
|
|
.endif
|
|
.ifnblank s263
|
|
.byte s263
|
|
.endif
|
|
.ifnblank s264
|
|
.byte s264
|
|
.endif
|
|
.ifnblank s265
|
|
.byte s265
|
|
.endif
|
|
.ifnblank s266
|
|
.byte s266
|
|
.endif
|
|
.ifnblank s267
|
|
.byte s267
|
|
.endif
|
|
.ifnblank s268
|
|
.byte s268
|
|
.endif
|
|
.ifnblank s269
|
|
.byte s269
|
|
.endif
|
|
.ifnblank s270
|
|
.byte s270
|
|
.endif
|
|
.ifnblank s271
|
|
.byte s271
|
|
.endif
|
|
.ifnblank s272
|
|
.byte s272
|
|
.endif
|
|
.ifnblank s273
|
|
.byte s273
|
|
.endif
|
|
.ifnblank s274
|
|
.byte s274
|
|
.endif
|
|
.ifnblank s275
|
|
.byte s275
|
|
.endif
|
|
.ifnblank s276
|
|
.byte s276
|
|
.endif
|
|
.ifnblank s277
|
|
.byte s277
|
|
.endif
|
|
.ifnblank s278
|
|
.byte s278
|
|
.endif
|
|
.ifnblank s279
|
|
.byte s279
|
|
.endif
|
|
.ifnblank s280
|
|
.byte s280
|
|
.endif
|
|
.ifnblank s281
|
|
.byte s281
|
|
.endif
|
|
.ifnblank s282
|
|
.byte s282
|
|
.endif
|
|
.ifnblank s283
|
|
.byte s283
|
|
.endif
|
|
.ifnblank s284
|
|
.byte s284
|
|
.endif
|
|
.ifnblank s285
|
|
.byte s285
|
|
.endif
|
|
.ifnblank s286
|
|
.byte s286
|
|
.endif
|
|
.ifnblank s287
|
|
.byte s287
|
|
.endif
|
|
.ifnblank s288
|
|
.byte s288
|
|
.endif
|
|
.ifnblank s289
|
|
.byte s289
|
|
.endif
|
|
.ifnblank s290
|
|
.byte s290
|
|
.endif
|
|
.ifnblank s291
|
|
.byte s291
|
|
.endif
|
|
.ifnblank s292
|
|
.byte s292
|
|
.endif
|
|
.ifnblank s293
|
|
.byte s293
|
|
.endif
|
|
.ifnblank s294
|
|
.byte s294
|
|
.endif
|
|
.ifnblank s295
|
|
.byte s295
|
|
.endif
|
|
.ifnblank s296
|
|
.byte s296
|
|
.endif
|
|
.ifnblank s297
|
|
.byte s297
|
|
.endif
|
|
.ifnblank s298
|
|
.byte s298
|
|
.endif
|
|
.ifnblank s299
|
|
.byte s299
|
|
.endif
|
|
.ifnblank s300
|
|
.byte s300
|
|
.endif
|
|
.endmacro
|
|
|
|
.macro print_str s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63,s64,s65,s66,s67,s68,s69,s70,s71,s72,s73,s74,s75,s76,s77,s78,s79,s80,s81,s82,s83,s84,s85,s86,s87,s88,s89,s90,s91,s92,s93,s94,s95,s96,s97,s98,s99,s100,s101,s102,s103,s104,s105,s106,s107,s108,s109,s110,s111,s112,s113,s114,s115,s116,s117,s118,s119,s120,s121,s122,s123,s124,s125,s126,s127,s128,s129,s130,s131,s132,s133,s134,s135,s136,s137,s138,s139,s140,s141,s142,s143,s144,s145,s146,s147,s148,s149,s150,s151,s152,s153,s154,s155,s156,s157,s158,s159,s160,s161,s162,s163,s164,s165,s166,s167,s168,s169,s170,s171,s172,s173,s174,s175,s176,s177,s178,s179,s180,s181,s182,s183,s184,s185,s186,s187,s188,s189,s190,s191,s192,s193,s194,s195,s196,s197,s198,s199,s200,s201,s202,s203,s204,s205,s206,s207,s208,s209,s210,s211,s212,s213,s214,s215,s216,s217,s218,s219,s220,s221,s222,s223,s224,s225,s226,s227,s228,s229,s230,s231,s232,s233,s234,s235,s236,s237,s238,s239,s240,s241,s242,s243,s244,s245,s246,s247,s248,s249,s250,s251,s252,s253,s254,s255,s256,s257,s258,s259,s260,s261,s262,s263,s264,s265,s266,s267,s268,s269,s270,s271,s272,s273,s274,s275,s276,s277,s278,s279,s280,s281,s282,s283,s284,s285,s286,s287,s288,s289,s290,s291,s292,s293,s294,s295,s296,s297,s298,s299
|
|
print_str_no_nul s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63,s64,s65,s66,s67,s68,s69,s70,s71,s72,s73,s74,s75,s76,s77,s78,s79,s80,s81,s82,s83,s84,s85,s86,s87,s88,s89,s90,s91,s92,s93,s94,s95,s96,s97,s98,s99,s100,s101,s102,s103,s104,s105,s106,s107,s108,s109,s110,s111,s112,s113,s114,s115,s116,s117,s118,s119,s120,s121,s122,s123,s124,s125,s126,s127,s128,s129,s130,s131,s132,s133,s134,s135,s136,s137,s138,s139,s140,s141,s142,s143,s144,s145,s146,s147,s148,s149,s150,s151,s152,s153,s154,s155,s156,s157,s158,s159,s160,s161,s162,s163,s164,s165,s166,s167,s168,s169,s170,s171,s172,s173,s174,s175,s176,s177,s178,s179,s180,s181,s182,s183,s184,s185,s186,s187,s188,s189,s190,s191,s192,s193,s194,s195,s196,s197,s198,s199,s200,s201,s202,s203,s204,s205,s206,s207,s208,s209,s210,s211,s212,s213,s214,s215,s216,s217,s218,s219,s220,s221,s222,s223,s224,s225,s226,s227,s228,s229,s230,s231,s232,s233,s234,s235,s236,s237,s238,s239,s240,s241,s242,s243,s244,s245,s246,s247,s248,s249,s250,s251,s252,s253,s254,s255,s256,s257,s258,s259,s260,s261,s262,s263,s264,s265,s266,s267,s268,s269,s270,s271,s272,s273,s274,s275,s276,s277,s278,s279,s280,s281,s282,s283,s284,s285,s286,s287,s288,s289,s290,s291,s292,s293,s294,s295,s296,s297,s298,s299,0
|
|
.endmacro
|
|
|
|
.macro print_str_and_ret s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63,s64,s65,s66,s67,s68,s69,s70,s71,s72,s73,s74,s75,s76,s77,s78,s79,s80,s81,s82,s83,s84,s85,s86,s87,s88,s89,s90,s91,s92,s93,s94,s95,s96,s97,s98,s99,s100,s101,s102,s103,s104,s105,s106,s107,s108,s109,s110,s111,s112,s113,s114,s115,s116,s117,s118,s119,s120,s121,s122,s123,s124,s125,s126,s127,s128,s129,s130,s131,s132,s133,s134,s135,s136,s137,s138,s139,s140,s141,s142,s143,s144,s145,s146,s147,s148,s149,s150,s151,s152,s153,s154,s155,s156,s157,s158,s159,s160,s161,s162,s163,s164,s165,s166,s167,s168,s169,s170,s171,s172,s173,s174,s175,s176,s177,s178,s179,s180,s181,s182,s183,s184,s185,s186,s187,s188,s189,s190,s191,s192,s193,s194,s195,s196,s197,s198,s199,s200,s201,s202,s203,s204,s205,s206,s207,s208,s209,s210,s211,s212,s213,s214,s215,s216,s217,s218,s219,s220,s221,s222,s223,s224,s225,s226,s227,s228,s229,s230,s231,s232,s233,s234,s235,s236,s237,s238,s239,s240,s241,s242,s243,s244,s245,s246,s247,s248,s249,s250,s251,s252,s253,s254,s255,s256,s257,s258,s259,s260,s261,s262,s263,s264,s265,s266,s267,s268,s269,s270,s271,s272,s273,s274,s275,s276,s277,s278,s279,s280,s281,s282,s283,s284,s285,s286,s287,s288,s289,s290,s291,s292,s293,s294,s295,s296,s297,s298,s299
|
|
print_str s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63,s64,s65,s66,s67,s68,s69,s70,s71,s72,s73,s74,s75,s76,s77,s78,s79,s80,s81,s82,s83,s84,s85,s86,s87,s88,s89,s90,s91,s92,s93,s94,s95,s96,s97,s98,s99,s100,s101,s102,s103,s104,s105,s106,s107,s108,s109,s110,s111,s112,s113,s114,s115,s116,s117,s118,s119,s120,s121,s122,s123,s124,s125,s126,s127,s128,s129,s130,s131,s132,s133,s134,s135,s136,s137,s138,s139,s140,s141,s142,s143,s144,s145,s146,s147,s148,s149,s150,s151,s152,s153,s154,s155,s156,s157,s158,s159,s160,s161,s162,s163,s164,s165,s166,s167,s168,s169,s170,s171,s172,s173,s174,s175,s176,s177,s178,s179,s180,s181,s182,s183,s184,s185,s186,s187,s188,s189,s190,s191,s192,s193,s194,s195,s196,s197,s198,s199,s200,s201,s202,s203,s204,s205,s206,s207,s208,s209,s210,s211,s212,s213,s214,s215,s216,s217,s218,s219,s220,s221,s222,s223,s224,s225,s226,s227,s228,s229,s230,s231,s232,s233,s234,s235,s236,s237,s238,s239,s240,s241,s242,s243,s244,s245,s246,s247,s248,s249,s250,s251,s252,s253,s254,s255,s256,s257,s258,s259,s260,s261,s262,s263,s264,s265,s266,s267,s268,s269,s270,s271,s272,s273,s274,s275,s276,s277,s278,s279,s280,s281,s282,s283,s284,s285,s286,s287,s288,s289,s290,s291,s292,s293,s294,s295,s296,s297,s298,s299
|
|
rts
|
|
.endmacro
|
|
.macro print_str_no_nul_and_ret s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63,s64,s65,s66,s67,s68,s69,s70,s71,s72,s73,s74,s75,s76,s77,s78,s79,s80,s81,s82,s83,s84,s85,s86,s87,s88,s89,s90,s91,s92,s93,s94,s95,s96,s97,s98,s99,s100,s101,s102,s103,s104,s105,s106,s107,s108,s109,s110,s111,s112,s113,s114,s115,s116,s117,s118,s119,s120,s121,s122,s123,s124,s125,s126,s127,s128,s129,s130,s131,s132,s133,s134,s135,s136,s137,s138,s139,s140,s141,s142,s143,s144,s145,s146,s147,s148,s149,s150,s151,s152,s153,s154,s155,s156,s157,s158,s159,s160,s161,s162,s163,s164,s165,s166,s167,s168,s169,s170,s171,s172,s173,s174,s175,s176,s177,s178,s179,s180,s181,s182,s183,s184,s185,s186,s187,s188,s189,s190,s191,s192,s193,s194,s195,s196,s197,s198,s199,s200,s201,s202,s203,s204,s205,s206,s207,s208,s209,s210,s211,s212,s213,s214,s215,s216,s217,s218,s219,s220,s221,s222,s223,s224,s225,s226,s227,s228,s229,s230,s231,s232,s233,s234,s235,s236,s237,s238,s239,s240,s241,s242,s243,s244,s245,s246,s247,s248,s249,s250,s251,s252,s253,s254,s255,s256,s257,s258,s259,s260,s261,s262,s263,s264,s265,s266,s267,s268,s269,s270,s271,s272,s273,s274,s275,s276,s277,s278,s279,s280,s281,s282,s283,s284,s285,s286,s287,s288,s289,s290,s291,s292,s293,s294,s295,s296,s297,s298,s299
|
|
print_str_no_nul s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63,s64,s65,s66,s67,s68,s69,s70,s71,s72,s73,s74,s75,s76,s77,s78,s79,s80,s81,s82,s83,s84,s85,s86,s87,s88,s89,s90,s91,s92,s93,s94,s95,s96,s97,s98,s99,s100,s101,s102,s103,s104,s105,s106,s107,s108,s109,s110,s111,s112,s113,s114,s115,s116,s117,s118,s119,s120,s121,s122,s123,s124,s125,s126,s127,s128,s129,s130,s131,s132,s133,s134,s135,s136,s137,s138,s139,s140,s141,s142,s143,s144,s145,s146,s147,s148,s149,s150,s151,s152,s153,s154,s155,s156,s157,s158,s159,s160,s161,s162,s163,s164,s165,s166,s167,s168,s169,s170,s171,s172,s173,s174,s175,s176,s177,s178,s179,s180,s181,s182,s183,s184,s185,s186,s187,s188,s189,s190,s191,s192,s193,s194,s195,s196,s197,s198,s199,s200,s201,s202,s203,s204,s205,s206,s207,s208,s209,s210,s211,s212,s213,s214,s215,s216,s217,s218,s219,s220,s221,s222,s223,s224,s225,s226,s227,s228,s229,s230,s231,s232,s233,s234,s235,s236,s237,s238,s239,s240,s241,s242,s243,s244,s245,s246,s247,s248,s249,s250,s251,s252,s253,s254,s255,s256,s257,s258,s259,s260,s261,s262,s263,s264,s265,s266,s267,s268,s269,s270,s271,s272,s273,s274,s275,s276,s277,s278,s279,s280,s281,s282,s283,s284,s285,s286,s287,s288,s289,s290,s291,s292,s293,s294,s295,s296,s297,s298,s299
|
|
rts
|
|
.endmacro
|
|
|
|
.macro print_ext_str s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63,s64,s65,s66,s67,s68,s69,s70,s71,s72,s73,s74,s75,s76,s77,s78,s79,s80,s81,s82,s83,s84,s85,s86,s87,s88,s89,s90,s91,s92,s93,s94,s95,s96,s97,s98,s99,s100,s101,s102,s103,s104,s105,s106,s107,s108,s109,s110,s111,s112,s113,s114,s115,s116,s117,s118,s119,s120,s121,s122,s123,s124,s125,s126,s127,s128,s129,s130,s131,s132,s133,s134,s135,s136,s137,s138,s139,s140,s141,s142,s143,s144,s145,s146,s147,s148,s149,s150,s151,s152,s153,s154,s155,s156,s157,s158,s159,s160,s161,s162,s163,s164,s165,s166,s167,s168,s169,s170,s171,s172,s173,s174,s175,s176,s177,s178,s179,s180,s181,s182,s183,s184,s185,s186,s187,s188,s189,s190,s191,s192,s193,s194,s195,s196,s197,s198,s199,s200,s201,s202,s203,s204,s205,s206,s207,s208,s209,s210,s211,s212,s213,s214,s215,s216,s217,s218,s219,s220,s221,s222,s223,s224,s225,s226,s227,s228,s229,s230,s231,s232,s233,s234,s235,s236,s237,s238,s239,s240,s241,s242,s243,s244,s245,s246,s247,s248,s249,s250,s251,s252,s253,s254,s255,s256,s257,s258,s259,s260,s261,s262,s263,s264,s265,s266,s267,s268,s269,s270,s271,s272,s273,s274,s275,s276,s277,s278,s279,s280,s281,s282,s283,s284,s285,s286,s287,s288,s289,s290,s291,s292,s293,s294,s295,s296,s297,s298,s299
|
|
.local @Addr
|
|
jsr @Addr
|
|
seg_data "RODATA",{@Addr: print_str_and_ret s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63,s64,s65,s66,s67,s68,s69,s70,s71,s72,s73,s74,s75,s76,s77,s78,s79,s80,s81,s82,s83,s84,s85,s86,s87,s88,s89,s90,s91,s92,s93,s94,s95,s96,s97,s98,s99,s100,s101,s102,s103,s104,s105,s106,s107,s108,s109,s110,s111,s112,s113,s114,s115,s116,s117,s118,s119,s120,s121,s122,s123,s124,s125,s126,s127,s128,s129,s130,s131,s132,s133,s134,s135,s136,s137,s138,s139,s140,s141,s142,s143,s144,s145,s146,s147,s148,s149,s150,s151,s152,s153,s154,s155,s156,s157,s158,s159,s160,s161,s162,s163,s164,s165,s166,s167,s168,s169,s170,s171,s172,s173,s174,s175,s176,s177,s178,s179,s180,s181,s182,s183,s184,s185,s186,s187,s188,s189,s190,s191,s192,s193,s194,s195,s196,s197,s198,s199,s200,s201,s202,s203,s204,s205,s206,s207,s208,s209,s210,s211,s212,s213,s214,s215,s216,s217,s218,s219,s220,s221,s222,s223,s224,s225,s226,s227,s228,s229,s230,s231,s232,s233,s234,s235,s236,s237,s238,s239,s240,s241,s242,s243,s244,s245,s246,s247,s248,s249,s250,s251,s252,s253,s254,s255,s256,s257,s258,s259,s260,s261,s262,s263,s264,s265,s266,s267,s268,s269,s270,s271,s272,s273,s274,s275,s276,s277,s278,s279,s280,s281,s282,s283,s284,s285,s286,s287,s288,s289,s290,s291,s292,s293,s294,s295,s296,s297,s298,s299}
|
|
.endmacro
|
|
.macro print_ext_str_flush s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63,s64,s65,s66,s67,s68,s69,s70,s71,s72,s73,s74,s75,s76,s77,s78,s79,s80,s81,s82,s83,s84,s85,s86,s87,s88,s89,s90,s91,s92,s93,s94,s95,s96,s97,s98,s99,s100,s101,s102,s103,s104,s105,s106,s107,s108,s109,s110,s111,s112,s113,s114,s115,s116,s117,s118,s119,s120,s121,s122,s123,s124,s125,s126,s127,s128,s129,s130,s131,s132,s133,s134,s135,s136,s137,s138,s139,s140,s141,s142,s143,s144,s145,s146,s147,s148,s149,s150,s151,s152,s153,s154,s155,s156,s157,s158,s159,s160,s161,s162,s163,s164,s165,s166,s167,s168,s169,s170,s171,s172,s173,s174,s175,s176,s177,s178,s179,s180,s181,s182,s183,s184,s185,s186,s187,s188,s189,s190,s191,s192,s193,s194,s195,s196,s197,s198,s199,s200,s201,s202,s203,s204,s205,s206,s207,s208,s209,s210,s211,s212,s213,s214,s215,s216,s217,s218,s219,s220,s221,s222,s223,s224,s225,s226,s227,s228,s229,s230,s231,s232,s233,s234,s235,s236,s237,s238,s239,s240,s241,s242,s243,s244,s245,s246,s247,s248,s249,s250,s251,s252,s253,s254,s255,s256,s257,s258,s259,s260,s261,s262,s263,s264,s265,s266,s267,s268,s269,s270,s271,s272,s273,s274,s275,s276,s277,s278,s279,s280,s281,s282,s283,s284,s285,s286,s287,s288,s289,s290,s291,s292,s293,s294,s295,s296,s297,s298,s299
|
|
.local @Addr
|
|
jsr @Addr
|
|
.pushseg
|
|
.segment "RODATA"
|
|
@Addr:
|
|
print_str s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63,s64,s65,s66,s67,s68,s69,s70,s71,s72,s73,s74,s75,s76,s77,s78,s79,s80,s81,s82,s83,s84,s85,s86,s87,s88,s89,s90,s91,s92,s93,s94,s95,s96,s97,s98,s99,s100,s101,s102,s103,s104,s105,s106,s107,s108,s109,s110,s111,s112,s113,s114,s115,s116,s117,s118,s119,s120,s121,s122,s123,s124,s125,s126,s127,s128,s129,s130,s131,s132,s133,s134,s135,s136,s137,s138,s139,s140,s141,s142,s143,s144,s145,s146,s147,s148,s149,s150,s151,s152,s153,s154,s155,s156,s157,s158,s159,s160,s161,s162,s163,s164,s165,s166,s167,s168,s169,s170,s171,s172,s173,s174,s175,s176,s177,s178,s179,s180,s181,s182,s183,s184,s185,s186,s187,s188,s189,s190,s191,s192,s193,s194,s195,s196,s197,s198,s199,s200,s201,s202,s203,s204,s205,s206,s207,s208,s209,s210,s211,s212,s213,s214,s215,s216,s217,s218,s219,s220,s221,s222,s223,s224,s225,s226,s227,s228,s229,s230,s231,s232,s233,s234,s235,s236,s237,s238,s239,s240,s241,s242,s243,s244,s245,s246,s247,s248,s249,s250,s251,s252,s253,s254,s255,s256,s257,s258,s259,s260,s261,s262,s263,s264,s265,s266,s267,s268,s269,s270,s271,s272,s273,s274,s275,s276,s277,s278,s279,s280,s281,s282,s283,s284,s285,s286,s287,s288,s289,s290,s291,s292,s293,s294,s295,s296,s297,s298,s299
|
|
jmp console_flush
|
|
.popseg
|
|
.endmacro
|
|
.macro print_ext_str_flush_rts s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63,s64,s65,s66,s67,s68,s69,s70,s71,s72,s73,s74,s75,s76,s77,s78,s79,s80,s81,s82,s83,s84,s85,s86,s87,s88,s89,s90,s91,s92,s93,s94,s95,s96,s97,s98,s99,s100,s101,s102,s103,s104,s105,s106,s107,s108,s109,s110,s111,s112,s113,s114,s115,s116,s117,s118,s119,s120,s121,s122,s123,s124,s125,s126,s127,s128,s129,s130,s131,s132,s133,s134,s135,s136,s137,s138,s139,s140,s141,s142,s143,s144,s145,s146,s147,s148,s149,s150,s151,s152,s153,s154,s155,s156,s157,s158,s159,s160,s161,s162,s163,s164,s165,s166,s167,s168,s169,s170,s171,s172,s173,s174,s175,s176,s177,s178,s179,s180,s181,s182,s183,s184,s185,s186,s187,s188,s189,s190,s191,s192,s193,s194,s195,s196,s197,s198,s199,s200,s201,s202,s203,s204,s205,s206,s207,s208,s209,s210,s211,s212,s213,s214,s215,s216,s217,s218,s219,s220,s221,s222,s223,s224,s225,s226,s227,s228,s229,s230,s231,s232,s233,s234,s235,s236,s237,s238,s239,s240,s241,s242,s243,s244,s245,s246,s247,s248,s249,s250,s251,s252,s253,s254,s255,s256,s257,s258,s259,s260,s261,s262,s263,s264,s265,s266,s267,s268,s269,s270,s271,s272,s273,s274,s275,s276,s277,s278,s279,s280,s281,s282,s283,s284,s285,s286,s287,s288,s289,s290,s291,s292,s293,s294,s295,s296,s297,s298,s299
|
|
.local @Addr
|
|
jmp @Addr
|
|
.pushseg
|
|
.segment "RODATA"
|
|
@Addr:
|
|
print_str s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63,s64,s65,s66,s67,s68,s69,s70,s71,s72,s73,s74,s75,s76,s77,s78,s79,s80,s81,s82,s83,s84,s85,s86,s87,s88,s89,s90,s91,s92,s93,s94,s95,s96,s97,s98,s99,s100,s101,s102,s103,s104,s105,s106,s107,s108,s109,s110,s111,s112,s113,s114,s115,s116,s117,s118,s119,s120,s121,s122,s123,s124,s125,s126,s127,s128,s129,s130,s131,s132,s133,s134,s135,s136,s137,s138,s139,s140,s141,s142,s143,s144,s145,s146,s147,s148,s149,s150,s151,s152,s153,s154,s155,s156,s157,s158,s159,s160,s161,s162,s163,s164,s165,s166,s167,s168,s169,s170,s171,s172,s173,s174,s175,s176,s177,s178,s179,s180,s181,s182,s183,s184,s185,s186,s187,s188,s189,s190,s191,s192,s193,s194,s195,s196,s197,s198,s199,s200,s201,s202,s203,s204,s205,s206,s207,s208,s209,s210,s211,s212,s213,s214,s215,s216,s217,s218,s219,s220,s221,s222,s223,s224,s225,s226,s227,s228,s229,s230,s231,s232,s233,s234,s235,s236,s237,s238,s239,s240,s241,s242,s243,s244,s245,s246,s247,s248,s249,s250,s251,s252,s253,s254,s255,s256,s257,s258,s259,s260,s261,s262,s263,s264,s265,s266,s267,s268,s269,s270,s271,s272,s273,s274,s275,s276,s277,s278,s279,s280,s281,s282,s283,s284,s285,s286,s287,s288,s289,s290,s291,s292,s293,s294,s295,s296,s297,s298,s299
|
|
jmp console_flush
|
|
.popseg
|
|
.endmacro
|
|
|
|
.macro print_ext_str_no_nul s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63,s64,s65,s66,s67,s68,s69,s70,s71,s72,s73,s74,s75,s76,s77,s78,s79,s80,s81,s82,s83,s84,s85,s86,s87,s88,s89,s90,s91,s92,s93,s94,s95,s96,s97,s98,s99,s100,s101,s102,s103,s104,s105,s106,s107,s108,s109,s110,s111,s112,s113,s114,s115,s116,s117,s118,s119,s120,s121,s122,s123,s124,s125,s126,s127,s128,s129,s130,s131,s132,s133,s134,s135,s136,s137,s138,s139,s140,s141,s142,s143,s144,s145,s146,s147,s148,s149,s150,s151,s152,s153,s154,s155,s156,s157,s158,s159,s160,s161,s162,s163,s164,s165,s166,s167,s168,s169,s170,s171,s172,s173,s174,s175,s176,s177,s178,s179,s180,s181,s182,s183,s184,s185,s186,s187,s188,s189,s190,s191,s192,s193,s194,s195,s196,s197,s198,s199,s200,s201,s202,s203,s204,s205,s206,s207,s208,s209,s210,s211,s212,s213,s214,s215,s216,s217,s218,s219,s220,s221,s222,s223,s224,s225,s226,s227,s228,s229,s230,s231,s232,s233,s234,s235,s236,s237,s238,s239,s240,s241,s242,s243,s244,s245,s246,s247,s248,s249,s250,s251,s252,s253,s254,s255,s256,s257,s258,s259,s260,s261,s262,s263,s264,s265,s266,s267,s268,s269,s270,s271,s272,s273,s274,s275,s276,s277,s278,s279,s280,s281,s282,s283,s284,s285,s286,s287,s288,s289,s290,s291,s292,s293,s294,s295,s296,s297,s298,s299
|
|
.local @Addr
|
|
jsr @Addr
|
|
seg_data "RODATA",{@Addr: print_str_no_nul_and_ret s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63,s64,s65,s66,s67,s68,s69,s70,s71,s72,s73,s74,s75,s76,s77,s78,s79,s80,s81,s82,s83,s84,s85,s86,s87,s88,s89,s90,s91,s92,s93,s94,s95,s96,s97,s98,s99,s100,s101,s102,s103,s104,s105,s106,s107,s108,s109,s110,s111,s112,s113,s114,s115,s116,s117,s118,s119,s120,s121,s122,s123,s124,s125,s126,s127,s128,s129,s130,s131,s132,s133,s134,s135,s136,s137,s138,s139,s140,s141,s142,s143,s144,s145,s146,s147,s148,s149,s150,s151,s152,s153,s154,s155,s156,s157,s158,s159,s160,s161,s162,s163,s164,s165,s166,s167,s168,s169,s170,s171,s172,s173,s174,s175,s176,s177,s178,s179,s180,s181,s182,s183,s184,s185,s186,s187,s188,s189,s190,s191,s192,s193,s194,s195,s196,s197,s198,s199,s200,s201,s202,s203,s204,s205,s206,s207,s208,s209,s210,s211,s212,s213,s214,s215,s216,s217,s218,s219,s220,s221,s222,s223,s224,s225,s226,s227,s228,s229,s230,s231,s232,s233,s234,s235,s236,s237,s238,s239,s240,s241,s242,s243,s244,s245,s246,s247,s248,s249,s250,s251,s252,s253,s254,s255,s256,s257,s258,s259,s260,s261,s262,s263,s264,s265,s266,s267,s268,s269,s270,s271,s272,s273,s274,s275,s276,s277,s278,s279,s280,s281,s282,s283,s284,s285,s286,s287,s288,s289,s290,s291,s292,s293,s294,s295,s296,s297,s298,s299}
|
|
.endmacro
|
|
.macro print_ext_str_no_nul_flush s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63,s64,s65,s66,s67,s68,s69,s70,s71,s72,s73,s74,s75,s76,s77,s78,s79,s80,s81,s82,s83,s84,s85,s86,s87,s88,s89,s90,s91,s92,s93,s94,s95,s96,s97,s98,s99,s100,s101,s102,s103,s104,s105,s106,s107,s108,s109,s110,s111,s112,s113,s114,s115,s116,s117,s118,s119,s120,s121,s122,s123,s124,s125,s126,s127,s128,s129,s130,s131,s132,s133,s134,s135,s136,s137,s138,s139,s140,s141,s142,s143,s144,s145,s146,s147,s148,s149,s150,s151,s152,s153,s154,s155,s156,s157,s158,s159,s160,s161,s162,s163,s164,s165,s166,s167,s168,s169,s170,s171,s172,s173,s174,s175,s176,s177,s178,s179,s180,s181,s182,s183,s184,s185,s186,s187,s188,s189,s190,s191,s192,s193,s194,s195,s196,s197,s198,s199,s200,s201,s202,s203,s204,s205,s206,s207,s208,s209,s210,s211,s212,s213,s214,s215,s216,s217,s218,s219,s220,s221,s222,s223,s224,s225,s226,s227,s228,s229,s230,s231,s232,s233,s234,s235,s236,s237,s238,s239,s240,s241,s242,s243,s244,s245,s246,s247,s248,s249,s250,s251,s252,s253,s254,s255,s256,s257,s258,s259,s260,s261,s262,s263,s264,s265,s266,s267,s268,s269,s270,s271,s272,s273,s274,s275,s276,s277,s278,s279,s280,s281,s282,s283,s284,s285,s286,s287,s288,s289,s290,s291,s292,s293,s294,s295,s296,s297,s298,s299
|
|
.local @Addr
|
|
jsr @Addr
|
|
.pushseg
|
|
.segment "RODATA"
|
|
@Addr:
|
|
print_str_no_nul s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63,s64,s65,s66,s67,s68,s69,s70,s71,s72,s73,s74,s75,s76,s77,s78,s79,s80,s81,s82,s83,s84,s85,s86,s87,s88,s89,s90,s91,s92,s93,s94,s95,s96,s97,s98,s99,s100,s101,s102,s103,s104,s105,s106,s107,s108,s109,s110,s111,s112,s113,s114,s115,s116,s117,s118,s119,s120,s121,s122,s123,s124,s125,s126,s127,s128,s129,s130,s131,s132,s133,s134,s135,s136,s137,s138,s139,s140,s141,s142,s143,s144,s145,s146,s147,s148,s149,s150,s151,s152,s153,s154,s155,s156,s157,s158,s159,s160,s161,s162,s163,s164,s165,s166,s167,s168,s169,s170,s171,s172,s173,s174,s175,s176,s177,s178,s179,s180,s181,s182,s183,s184,s185,s186,s187,s188,s189,s190,s191,s192,s193,s194,s195,s196,s197,s198,s199,s200,s201,s202,s203,s204,s205,s206,s207,s208,s209,s210,s211,s212,s213,s214,s215,s216,s217,s218,s219,s220,s221,s222,s223,s224,s225,s226,s227,s228,s229,s230,s231,s232,s233,s234,s235,s236,s237,s238,s239,s240,s241,s242,s243,s244,s245,s246,s247,s248,s249,s250,s251,s252,s253,s254,s255,s256,s257,s258,s259,s260,s261,s262,s263,s264,s265,s266,s267,s268,s269,s270,s271,s272,s273,s274,s275,s276,s277,s278,s279,s280,s281,s282,s283,s284,s285,s286,s287,s288,s289,s290,s291,s292,s293,s294,s295,s296,s297,s298,s299
|
|
jmp console_flush
|
|
.popseg
|
|
.endmacro
|
|
.macro print_ext_str_no_nul_flush_rts s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63,s64,s65,s66,s67,s68,s69,s70,s71,s72,s73,s74,s75,s76,s77,s78,s79,s80,s81,s82,s83,s84,s85,s86,s87,s88,s89,s90,s91,s92,s93,s94,s95,s96,s97,s98,s99,s100,s101,s102,s103,s104,s105,s106,s107,s108,s109,s110,s111,s112,s113,s114,s115,s116,s117,s118,s119,s120,s121,s122,s123,s124,s125,s126,s127,s128,s129,s130,s131,s132,s133,s134,s135,s136,s137,s138,s139,s140,s141,s142,s143,s144,s145,s146,s147,s148,s149,s150,s151,s152,s153,s154,s155,s156,s157,s158,s159,s160,s161,s162,s163,s164,s165,s166,s167,s168,s169,s170,s171,s172,s173,s174,s175,s176,s177,s178,s179,s180,s181,s182,s183,s184,s185,s186,s187,s188,s189,s190,s191,s192,s193,s194,s195,s196,s197,s198,s199,s200,s201,s202,s203,s204,s205,s206,s207,s208,s209,s210,s211,s212,s213,s214,s215,s216,s217,s218,s219,s220,s221,s222,s223,s224,s225,s226,s227,s228,s229,s230,s231,s232,s233,s234,s235,s236,s237,s238,s239,s240,s241,s242,s243,s244,s245,s246,s247,s248,s249,s250,s251,s252,s253,s254,s255,s256,s257,s258,s259,s260,s261,s262,s263,s264,s265,s266,s267,s268,s269,s270,s271,s272,s273,s274,s275,s276,s277,s278,s279,s280,s281,s282,s283,s284,s285,s286,s287,s288,s289,s290,s291,s292,s293,s294,s295,s296,s297,s298,s299
|
|
.local @Addr
|
|
jmp @Addr
|
|
.pushseg
|
|
.segment "RODATA"
|
|
@Addr:
|
|
print_str_no_nul s,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62,s63,s64,s65,s66,s67,s68,s69,s70,s71,s72,s73,s74,s75,s76,s77,s78,s79,s80,s81,s82,s83,s84,s85,s86,s87,s88,s89,s90,s91,s92,s93,s94,s95,s96,s97,s98,s99,s100,s101,s102,s103,s104,s105,s106,s107,s108,s109,s110,s111,s112,s113,s114,s115,s116,s117,s118,s119,s120,s121,s122,s123,s124,s125,s126,s127,s128,s129,s130,s131,s132,s133,s134,s135,s136,s137,s138,s139,s140,s141,s142,s143,s144,s145,s146,s147,s148,s149,s150,s151,s152,s153,s154,s155,s156,s157,s158,s159,s160,s161,s162,s163,s164,s165,s166,s167,s168,s169,s170,s171,s172,s173,s174,s175,s176,s177,s178,s179,s180,s181,s182,s183,s184,s185,s186,s187,s188,s189,s190,s191,s192,s193,s194,s195,s196,s197,s198,s199,s200,s201,s202,s203,s204,s205,s206,s207,s208,s209,s210,s211,s212,s213,s214,s215,s216,s217,s218,s219,s220,s221,s222,s223,s224,s225,s226,s227,s228,s229,s230,s231,s232,s233,s234,s235,s236,s237,s238,s239,s240,s241,s242,s243,s244,s245,s246,s247,s248,s249,s250,s251,s252,s253,s254,s255,s256,s257,s258,s259,s260,s261,s262,s263,s264,s265,s266,s267,s268,s269,s270,s271,s272,s273,s274,s275,s276,s277,s278,s279,s280,s281,s282,s283,s284,s285,s286,s287,s288,s289,s290,s291,s292,s293,s294,s295,s296,s297,s298,s299
|
|
jmp console_flush
|
|
.popseg
|
|
.endmacro
|
|
|
|
|
|
|
|
|
|
print_str_:
|
|
sta print_temp_
|
|
|
|
pla
|
|
sta addr
|
|
pla
|
|
sta addr+1
|
|
|
|
jsr inc_addr
|
|
jsr print_str_addr
|
|
|
|
lda print_temp_
|
|
jmp (addr)
|
|
|
|
|
|
; Prints string at addr and leaves addr pointing to
|
|
; byte AFTER zero terminator.
|
|
;
|
|
; Naive algorithm description in pseudo-C would be:
|
|
;
|
|
; Print:
|
|
; for(End = false; End == false; )
|
|
; {
|
|
; a = next_byte();
|
|
; Process(a);
|
|
; }
|
|
; Process:
|
|
; if(a == 0) { End = true; }
|
|
; else if(a == 0xFF) { addr = next_word(); }
|
|
; else if(a >= DTE_BEGIN && a <= DTE_END)
|
|
; {
|
|
; Process(DTE_TABLE0(a-DTE_BEGIN));
|
|
; Process(DTE_TABLE1(a-DTE_BEGIN));
|
|
; }
|
|
; else { putchar(a); }
|
|
;
|
|
; For optimization, first, the second Process() recursion
|
|
; was converted into a tail-call.
|
|
;
|
|
; Print:
|
|
; for(End = false; End == false; )
|
|
; {
|
|
; a = next_byte();
|
|
; Process(a);
|
|
; }
|
|
; Process:
|
|
; for(;;)
|
|
; {
|
|
; if(a == 0) { End = true; break; }
|
|
; if(a == 0xFF) { addr = next_word(); break; }
|
|
; if(a >= DTE_BEGIN && a <= DTE_END)
|
|
; {
|
|
; Process(DTE_TABLE0(a-DTE_BEGIN)); // Process the first byte
|
|
; a = DTE_TABLE1(a-DTE_BEGIN); // Then process the second byte
|
|
; }
|
|
; else { putchar(a); break; }
|
|
; }
|
|
;
|
|
; As next part of optimization, the recursion was converted into a value stack:
|
|
;
|
|
; Print:
|
|
; for(End = false; End == false; )
|
|
; {
|
|
; if(stack.empty())
|
|
; a = next_byte();
|
|
; else
|
|
; a = stack.pop(); // Now handle the next deferred byte. (LIFO)
|
|
; for(;;)
|
|
; {
|
|
; if(a == 0) { End = true; break; }
|
|
; if(a == 0xFF) { addr = next_word(); break; }
|
|
; if(a >= DTE_BEGIN && a <= DTE_END)
|
|
; {
|
|
; stack.push( DTE_TABLE1(a-DTE_BEGIN) ); // Process the second byte later
|
|
; a = DTE_TABLE0(a-DTE_BEGIN); // Process the first byte now
|
|
; }
|
|
; else { putchar(a); break; }
|
|
; }
|
|
; }
|
|
;
|
|
; This assembler function just uses the hardware stack. Using a value stack
|
|
; instead of a function call stack means that a recursion of depth 20 takes
|
|
; only 20 bytes of stack space rather than 40 bytes.
|
|
; Note that a 0 occurring in the middle of all recursions can exit the
|
|
; function before the stack is empty. Rationally, no DTE pair has 0 as
|
|
; the first byte.
|
|
;
|
|
; Preserved: A, X, Y
|
|
print_str_addr:
|
|
zp_byte @s_level
|
|
pha ; save A
|
|
tya
|
|
pha ; save Y
|
|
txa
|
|
pha ; save X
|
|
tsx
|
|
stx @s_level ; determine S for outermost recursion level
|
|
@loop: jsr @next_byte
|
|
@process_char:
|
|
beq @end
|
|
cmp #DTE_BEGIN
|
|
bcs @maybe_dte
|
|
.if DTE_END+1 = $FF
|
|
@process_non_dte_byte:
|
|
cmp #$FF
|
|
beq @changed
|
|
.endif
|
|
jsr print_char
|
|
@done_byte:
|
|
tsx
|
|
cpx @s_level ; determine recursion level
|
|
bcs @loop
|
|
; If stuff was pushed to stack, pop byte
|
|
; before continuing with addr-reading loop.
|
|
pla
|
|
bcc @process_char ;always taken.
|
|
@maybe_dte:
|
|
cmp #DTE_END+1
|
|
.if DTE_END+1 = $FF
|
|
beq @changed
|
|
.else
|
|
bcs @process_non_dte_byte
|
|
.endif
|
|
tay
|
|
lda DTE_TABLE1-DTE_BEGIN,y
|
|
pha ; put the second char to stack.
|
|
lda DTE_TABLE0-DTE_BEGIN,y
|
|
bne @process_char ; process first char (which is never zero)
|
|
@changed:
|
|
; Jump to another string.
|
|
; The next two bytes will be the new address.
|
|
jsr @next_byte
|
|
pha
|
|
jsr @next_byte
|
|
sta addr+1
|
|
pla
|
|
sta addr+0
|
|
jmp @done_byte
|
|
@next_byte:
|
|
ldy #0
|
|
lda (addr),y
|
|
jsr inc_addr
|
|
ora #0
|
|
rts
|
|
@end:
|
|
pla
|
|
tax
|
|
pla
|
|
tay
|
|
pla
|
|
rts
|
|
|
|
; Increments 16-bit value in addr.
|
|
; Preserved: A, X, Y
|
|
inc_addr:
|
|
inc addr
|
|
beq :+
|
|
rts
|
|
: inc addr+1
|
|
rts
|
|
|
|
.ifdef NEED_PRINT_DEC16
|
|
|
|
.pushseg
|
|
.segment "RODATA"
|
|
; >= 60000 ? (EA60)
|
|
; >= 50000 ? (C350)
|
|
; >= 40000 ? (9C40)
|
|
; >= 30000 ? (7530)
|
|
; >= 20000 ? (4E20)
|
|
; >= 10000 ? (2710)
|
|
digit10000_hi: .byte $00,$27,$4E,$75,$9C,$C3,$EA
|
|
digit10000_lo: .byte $00,$10,$20,$30,$40,$50,$60
|
|
; >= 9000 ? (2328 (hex))
|
|
; >= 8000 ? (1F40 (hex))
|
|
; >= 7000 ? (1B58 (hex))
|
|
; >= 6000 ? (1770 (hex))
|
|
; >= 5000 ? (1388 (hex))
|
|
; >= 4000 ? (FA0 (hex))
|
|
; >= 3000 ? (BB8 (hex))
|
|
; >= 2000 ? (7D0 (hex))
|
|
; >= 1000 ? (3E8 (hex))
|
|
digit1000_hi: .byte $00,$03,$07,$0B,$0F,$13,$17,$1B,$1F,$23
|
|
digit1000_lo: .byte $00,$E8,$D0,$B8,$A0,$88,$70,$58,$40,$28
|
|
; >= 900 ? (384 (hex))
|
|
; >= 800 ? (320 (hex))
|
|
; >= 700 ? (2BC (hex))
|
|
; >= 600 ? (258 (hex))
|
|
; >= 500 ? (1F4 (hex))
|
|
; >= 400 ? (190 (hex))
|
|
; >= 300 ? (12C (hex))
|
|
; >= 200 ? (C8 (hex))
|
|
; >= 100 ? (64 (hex))
|
|
digit100_hi: .byte $00,$00,$00,$01,$01,$01,$02,$02,$03,$03
|
|
digit100_lo: .byte $00,$64,$C8,$2C,$90,$F4,$58,$BC,$20,$84
|
|
.popseg
|
|
|
|
.macro dec16_comparew table_hi, table_lo
|
|
.local @lt
|
|
cmp table_hi,y
|
|
bcc @lt
|
|
bne @lt ; only test the lo-part if hi-part is equal
|
|
pha
|
|
txa
|
|
cmp table_lo,y
|
|
pla
|
|
@lt:
|
|
.endmacro
|
|
.macro do_digit table_hi, table_lo
|
|
pha
|
|
; print Y as digit; put X in A and do SEC for subtraction
|
|
jsr @print_dec16_helper
|
|
sbc table_lo,y
|
|
tax
|
|
pla
|
|
sbc table_hi,y
|
|
.endmacro
|
|
|
|
; Prints A:X as 2-5 digit decimal value, NO space after.
|
|
; A = high 8 bits, X = low 8 bits.
|
|
print_dec16:
|
|
ora #0
|
|
beq @less_than_256
|
|
|
|
ldy #6
|
|
sty print_temp_
|
|
|
|
; TODO: Use binary search?
|
|
: dec16_comparew digit10000_hi,digit10000_lo
|
|
bcs @got10000
|
|
dey
|
|
bne :-
|
|
;cpy print_temp_
|
|
;beq @got10000
|
|
@cont_1000:
|
|
ldy #9
|
|
: dec16_comparew digit1000_hi,digit1000_lo
|
|
bcs @got1000
|
|
dey
|
|
bne :- ; Y = 0.
|
|
cpy print_temp_ ; zero print_temp_ = print zero-digits
|
|
beq @got1000
|
|
@cont_100:
|
|
ldy #9
|
|
: dec16_comparew digit100_hi,digit100_lo
|
|
bcs @got100
|
|
dey
|
|
bne :-
|
|
cpy print_temp_
|
|
beq @got100
|
|
@got10000:
|
|
do_digit digit10000_hi,digit10000_lo
|
|
; value is now 0000..9999
|
|
ldy #0
|
|
sty print_temp_
|
|
beq @cont_1000
|
|
@got1000:
|
|
do_digit digit1000_hi,digit1000_lo
|
|
; value is now 000..999
|
|
ldy #0
|
|
sty print_temp_
|
|
beq @cont_100
|
|
@got100:
|
|
do_digit digit100_hi,digit100_lo
|
|
; value is now 00..99
|
|
txa
|
|
jmp print_dec_00_99
|
|
@less_than_256:
|
|
txa
|
|
jmp print_dec
|
|
@print_dec16_helper:
|
|
tya
|
|
jsr print_digit
|
|
txa
|
|
sec
|
|
rts
|
|
|
|
.endif
|
|
|
|
|
|
; Prints A as 2-3 digit decimal value, NO space after.
|
|
; Preserved: Y
|
|
print_dec:
|
|
; Hundreds
|
|
cmp #10
|
|
blt print_digit
|
|
cmp #100
|
|
blt print_dec_00_99
|
|
ldx #'0'-1 ;DTE_CHARMAP
|
|
: inx
|
|
sbc #100
|
|
bge :-
|
|
adc #100
|
|
jsr print_char_x
|
|
|
|
; Tens
|
|
print_dec_00_99:
|
|
sec
|
|
ldx #'0'-1 ;DTE_CHARMAP
|
|
: inx
|
|
sbc #10
|
|
bge :-
|
|
adc #10
|
|
jsr print_char_x
|
|
; Ones
|
|
print_digit:
|
|
ora #'0' ;DTE_CHARMAP
|
|
jmp print_char
|
|
; Print a single digit
|
|
print_char_x:
|
|
pha
|
|
txa
|
|
jsr print_char
|
|
pla
|
|
rts
|
|
|
|
; Prints one of two characters based on condition.
|
|
; SEC; print_cc bcs,'C','-' prints 'C'.
|
|
; Preserved: A, X, Y, flags
|
|
.macro print_cc cond,yes,no
|
|
; Avoids labels since they're not local
|
|
; to macros in ca65.
|
|
php
|
|
pha
|
|
cond *+6
|
|
lda #no
|
|
bne *+4
|
|
lda #yes
|
|
jsr print_char
|
|
pla
|
|
plp
|
|
.endmacro
|
|
|