From 6774b67d617920bf80125dd1eb873ac22b2c717f Mon Sep 17 00:00:00 2001 From: Michaelangel007 Date: Thu, 18 Feb 2016 13:45:00 -0800 Subject: [PATCH] Ver 14 --- printm.s | 149 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 140 insertions(+), 9 deletions(-) diff --git a/printm.s b/printm.s index 23698e1..c072a46 100644 --- a/printm.s +++ b/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!