mirror of
https://github.com/Michaelangel007/apple2_printm.git
synced 2025-04-12 22:37:20 +00:00
Ver 14
This commit is contained in:
parent
2400ba50e0
commit
6774b67d61
149
printm.s
149
printm.s
@ -1,13 +1,13 @@
|
||||
; ca65
|
||||
.feature c_comments
|
||||
|
||||
/* Version 13
|
||||
printm - a printf replacement for 6502
|
||||
/* Version 14
|
||||
printm - a printf replacement for 65C02
|
||||
Michael Pohroeski
|
||||
|
||||
|
||||
Problem:
|
||||
We want to print this:
|
||||
Ideally we want to print a single line that includes literal and variables.
|
||||
|
||||
.byte "X=## Y=### $=####:@@ %%%%%%%%~????????"
|
||||
|
||||
@ -50,14 +50,144 @@ Here is a micro replacement, printm()
|
||||
Note: The dummy address $C0DE is to force the assembler
|
||||
to generate a 16-bit address instead of optimizing a ZP operand
|
||||
|
||||
Takes up 473 bytes
|
||||
|
||||
Demo + Library text dump:
|
||||
|
||||
4000:20 58 FC A9 D5 A2 45 A0
|
||||
4008:23 8E BE 40 8C BF 40 8E
|
||||
4010:C0 40 8C C1 40 8E 1C 40
|
||||
4018:8C 1D 40 8D DE C0 8D C2
|
||||
4020:40 20 5C 40 8D C4 40 A0
|
||||
4028:00 20 67 40 A2 B8 A0 40
|
||||
4030:20 00 42 A0 02 20 67 40
|
||||
4038:A2 E1 A0 40 20 00 42 A0
|
||||
4040:04 20 67 40 A2 FE A0 40
|
||||
4048:20 00 42 A0 06 20 67 40
|
||||
4050:A2 2E A0 41 20 00 42 A9
|
||||
4058:08 4C 5B FB A2 08 85 FF
|
||||
4060:06 FF 6A CA D0 FA 60 B9
|
||||
4068:76 40 8D 8D 43 B9 8E 40
|
||||
4070:09 04 8D 8E 43 60 00 80
|
||||
4078:00 80 00 80 00 80 28 A8
|
||||
4080:28 A8 28 A8 28 A8 50 D0
|
||||
4088:50 D0 50 D0 50 D0 00 00
|
||||
4090:01 01 02 02 03 03 00 00
|
||||
4098:01 01 02 02 03 03 00 00
|
||||
40A0:01 01 02 02 03 03 D8 BD
|
||||
40A8:23 A0 D9 BD 64 A0 A4 BD
|
||||
40B0:78 BA 40 A0 25 FE 3F 00
|
||||
40B8:A6 40 27 00 BF 00 DE C0
|
||||
40C0:DE C0 1A DA 1A DA C2 F9
|
||||
40C8:F4 E5 BD 62 A0 62 A0 62
|
||||
40D0:A0 62 A0 62 00 C8 C5 CC
|
||||
40D8:CC CF 00 D7 CF D2 CC C4
|
||||
40E0:00 C6 40 80 00 FF 00 00
|
||||
40E8:00 01 00 7F 00 D3 F4 F2
|
||||
40F0:E9 EE E7 F3 BA A0 A7 73
|
||||
40F8:A7 AC A7 73 A7 00 ED 40
|
||||
4100:D5 40 DB 40 C8 CF CD 45
|
||||
4108:0D D3 F4 F2 E9 EE E7 A0
|
||||
4110:CC E5 EE A0 B1 B3 C1 F0
|
||||
4118:F0 EC E5 BA A0 A7 61 A7
|
||||
4120:A0 A0 D0 E1 F3 E3 E1 EC
|
||||
4128:BA A0 A7 70 A7 00 16 41
|
||||
4130:04 41 08 41 00 00 00 00
|
||||
4138:00 00 00 00 00 00 00 00
|
||||
4140:00 00 00 00 00 00 00 00
|
||||
4148:00 00 00 00 00 00 00 00
|
||||
4150:00 00 00 00 00 00 00 00
|
||||
4158:00 00 00 00 00 00 00 00
|
||||
4160:00 00 00 00 00 00 00 00
|
||||
4168:00 00 00 00 00 00 00 00
|
||||
4170:00 00 00 00 00 00 00 00
|
||||
4178:00 00 00 00 00 00 00 00
|
||||
4180:00 00 00 00 00 00 00 00
|
||||
4188:00 00 00 00 00 00 00 00
|
||||
4190:00 00 00 00 00 00 00 00
|
||||
4198:00 00 00 00 00 00 00 00
|
||||
41A0:00 00 00 00 00 00 00 00
|
||||
41A8:00 00 00 00 00 00 00 00
|
||||
41B0:00 00 00 00 00 00 00 00
|
||||
41B8:00 00 00 00 00 00 00 00
|
||||
41C0:00 00 00 00 00 00 00 00
|
||||
41C8:00 00 00 00 00 00 00 00
|
||||
41D0:00 00 00 00 00 00 00 00
|
||||
41D8:00 00 00 00 00 00 00 00
|
||||
41E0:00 00 00 00 00 00 00 00
|
||||
41E8:00 00 00 00 00 00 00 00
|
||||
41F0:00 00 00 00 00 00 00 00
|
||||
41F8:00 00 00 00 00 00 00 00
|
||||
4200:8E 9A 43 8C 9B 43 9C 98
|
||||
4208:43 20 93 43 8E 83 42 8C
|
||||
4210:84 42 80 6E A9 04 D0 02
|
||||
4218:A9 02 8D 52 42 20 93 43
|
||||
4220:8E B0 43 8C B1 43 A2 00
|
||||
4228:AD B0 43 29 0F C9 0A 90
|
||||
4230:02 69 06 69 B0 9D AA 43
|
||||
4238:4E B1 43 6E B0 43 4E B1
|
||||
4240:43 6E B0 43 4E B1 43 6E
|
||||
4248:B0 43 4E B1 43 6E B0 43
|
||||
4250:E8 E0 00 D0 D3 CA 30 22
|
||||
4258:BD AA 43 20 8C 43 80 F5
|
||||
4260:A9 04 D0 02 A9 02 8D 52
|
||||
4268:42 20 93 43 A0 00 B1 FE
|
||||
4270:AA C8 B1 FE A8 80 A9 20
|
||||
4278:8C 43 EE 83 42 D0 03 EE
|
||||
4280:84 42 AD DE C0 F0 14 30
|
||||
4288:EE A2 0C DD B2 43 F0 05
|
||||
4290:CA 10 F8 30 E5 8A 0A AA
|
||||
4298:7C BF 43 60 A9 05 D0 06
|
||||
42A0:A9 03 D0 02 A9 02 8D 05
|
||||
42A8:43 20 93 43 8E B0 43 8C
|
||||
42B0:B1 43 9C AA 43 9C AB 43
|
||||
42B8:9C AC 43 A2 10 F8 0E B0
|
||||
42C0:43 2E B1 43 AD AA 43 6D
|
||||
42C8:AA 43 8D AA 43 AD AB 43
|
||||
42D0:6D AB 43 8D AB 43 AD AC
|
||||
42D8:43 6D AC 43 8D AC 43 CA
|
||||
42E0:D0 DC D8 A2 02 A0 05 BD
|
||||
42E8:AA 43 4A 4A 4A 4A 18 69
|
||||
42F0:B0 99 AA 43 88 BD AA 43
|
||||
42F8:29 0F 18 69 B0 99 AA 43
|
||||
4300:88 CA 10 E3 A2 00 4C 55
|
||||
4308:42 A9 81 D0 02 A9 01 8D
|
||||
4310:21 43 20 93 43 A0 08 8A
|
||||
4318:C9 80 2A AA 29 01 F0 02
|
||||
4320:A9 81 49 B0 20 8C 43 88
|
||||
4328:D0 ED 4C 7A 42 20 93 43
|
||||
4330:8A 10 0D A9 AD 20 8C 43
|
||||
4338:8A 49 FF 29 7F 18 69 01
|
||||
4340:AA A0 00 A9 03 8D 05 43
|
||||
4348:4C AC 42 20 93 43 A0 00
|
||||
4350:B1 FE 10 0A 20 8C 43 C8
|
||||
4358:D0 F6 E6 FF 80 F2 A2 01
|
||||
4360:09 80 80 20 20 93 43 A0
|
||||
4368:00 B1 FE F0 BD 20 8C 43
|
||||
4370:C8 D0 F6 E6 FF 80 F2 20
|
||||
4378:93 43 A0 00 B1 FE F0 AA
|
||||
4380:AA C8 B1 FE 20 8C 43 CA
|
||||
4388:D0 F7 F0 9E 8D DE C0 EE
|
||||
4390:8D 43 60 20 97 43 AA A0
|
||||
4398:00 B9 DE C0 EE 98 43 D0
|
||||
43A0:03 EE 9B 43 A8 86 FE 84
|
||||
43A8:FF 60 00 00 00 00 00 00
|
||||
43B0:00 00 3F 25 62 75 64 23
|
||||
43B8:78 24 26 40 70 73 61 09
|
||||
43C0:43 0D 43 2D 43 9C 42 A0
|
||||
43C8:42 A4 42 14 42 18 42 60
|
||||
43D0:42 64 42 77 43 64 43 4B
|
||||
43D8:43
|
||||
|
||||
|
||||
To toggle features on / off:
|
||||
|
||||
*/
|
||||
|
||||
ENABLE_BIN = 0
|
||||
ENABLE_DEC = 0
|
||||
ENABLE_BYTE = 0 ; requires ENABLE_DEC
|
||||
ENABLE_HEX = 0
|
||||
ENABLE_BIN = 1
|
||||
ENABLE_DEC = 1
|
||||
ENABLE_BYTE = 1 ; requires ENABLE_DEC
|
||||
ENABLE_HEX = 1
|
||||
ENABLE_PTR = 1 ; requires ENABLE_HEX
|
||||
ENABLE_STR = 1
|
||||
|
||||
@ -340,6 +470,7 @@ DATA4
|
||||
_nDecWidth = DecWidth +1
|
||||
.endif ; ENABLE_DEC
|
||||
|
||||
; ======================================================================
|
||||
; printm( format, args, ... )
|
||||
; ======================================================================
|
||||
PrintM
|
||||
@ -738,10 +869,10 @@ MetaChar
|
||||
.if ENABLE_HEX
|
||||
db 'x' ; PrintHex4
|
||||
db '$' ; PrintHex2
|
||||
.endif
|
||||
.if ENABLE_PTR
|
||||
.if ENABLE_PTR
|
||||
db '&' ; PrintPtr4
|
||||
db '@' ; PrintPtr2
|
||||
.endif
|
||||
.endif
|
||||
.if ENABLE_STR
|
||||
db 'p' ; PrintStrP NOTE: Pascal string; C printf 'p' is pointer!
|
||||
|
Loading…
x
Reference in New Issue
Block a user