From a6b01a709f8a7e3bf5847c701ba59613c8ded347 Mon Sep 17 00:00:00 2001 From: Michaelangel007 Date: Fri, 19 Feb 2016 23:55:00 -0800 Subject: [PATCH] Ver 20 --- printm.s | 346 +++++++++++++++++++++++++++---------------------------- 1 file changed, 172 insertions(+), 174 deletions(-) diff --git a/printm.s b/printm.s index 3338de7..ff3dc5b 100644 --- a/printm.s +++ b/printm.s @@ -1,7 +1,7 @@ ; ca65 .feature c_comments -/* Version 19 +/* Version 20 printm - a modular micro printf replacement for 65C02 Michael Pohoreski Copyleft {c} Feb, 2016 @@ -93,7 +93,7 @@ to control the memory footprint since you probably don't need "every" feature. Seriously, when was the last time you _needed_ octal? :-) -With everything enabled printm() takes up $207 = 519 bytes +With everything enabled printm() takes up $203 = 515 bytes (Plus 2 bytes in zero page.) Whoa! I thought you said this was micro!? @@ -137,171 +137,171 @@ USE_STR_PASCAL = 1 ; $7C 124 / Demo + Library text dump: 4000:20 58 FC A9 D5 8D 00 20 -4008:A9 AA 8D 01 20 AD E9 41 +4008:A9 AA 8D 01 20 AD E8 41 4010:A2 00 A0 00 20 11 F4 18 -4018:A5 26 6D E7 41 85 26 AA -4020:A4 27 8E EB 41 8C EC 41 -4028:8E ED 41 8C EE 41 AD 00 -4030:20 A0 00 91 26 8D EF 41 -4038:9C F0 41 8D 0B 42 8D 0F -4040:42 20 B4 41 8D F1 41 9C -4048:F2 41 A0 00 20 C4 41 A2 -4050:E5 A0 41 20 27 43 A0 01 -4058:20 C4 41 A2 09 A0 42 20 -4060:27 43 A0 02 20 C4 41 A2 -4068:0D A0 42 20 27 43 A0 03 -4070:20 C4 41 A2 38 A0 42 20 -4078:27 43 A0 04 20 C4 41 A2 -4080:3C A0 42 20 27 43 A0 05 -4088:20 C4 41 A2 40 A0 42 20 -4090:27 43 A0 06 20 C4 41 A2 -4098:44 A0 42 20 27 43 A0 07 -40A0:20 C4 41 A2 74 A0 42 20 -40A8:27 43 A0 08 20 C4 41 A2 -40B0:78 A0 42 20 27 43 A0 09 -40B8:20 C4 41 A2 7C A0 42 20 -40C0:27 43 A0 0A 20 C4 41 A2 -40C8:82 A0 42 20 27 43 A0 0B -40D0:20 C4 41 A2 98 A0 42 20 -40D8:27 43 A0 0C 20 C4 41 A2 -40E0:9C A0 42 20 27 43 A0 0D -40E8:20 C4 41 A2 EC A0 42 20 -40F0:27 43 A0 0E 20 C4 41 A2 -40F8:E6 A0 42 20 27 43 A0 0F -4100:20 C4 41 A2 F0 A0 42 20 -4108:27 43 A9 11 20 5B FB A2 -4110:F4 A0 42 20 A3 41 AD 22 -4118:43 85 FF 20 DA FD AD 21 -4120:43 85 FE 20 DA FD 20 BF -4128:41 20 50 41 A2 06 A0 43 -4130:20 A3 41 AE C2 43 E8 86 -4138:FE 64 FF 8A 20 DA FD 20 -4140:BF 41 20 50 41 A9 8D 4C -4148:ED FD 00 00 00 00 00 00 -4150:A2 4A A0 41 86 FC 84 FD -4158:9C 4A 41 9C 4B 41 9C 4C -4160:41 A0 00 A2 10 F8 06 FE -4168:26 FF B1 FC 71 FC 91 FC -4170:C8 B1 FC 71 FC 91 FC C8 -4178:B1 FC 71 FC 91 FC C8 A0 -4180:00 CA D0 E2 D8 A2 02 BD -4188:4A 41 4A 4A 4A 4A 18 69 -4190:B0 20 ED FD BD 4A 41 29 -4198:0F 18 69 B0 20 ED FD CA -41A0:10 E5 60 86 FC 84 FD A0 -41A8:00 B1 FC F0 06 20 ED FD -41B0:C8 D0 F6 60 A2 08 85 FE -41B8:06 FE 6A CA D0 FA 60 A9 -41C0:A0 4C ED FD 98 20 C1 FB -41C8:A6 28 A4 29 8E D8 44 8C -41D0:D9 44 60 D8 BD 23 A0 D9 -41D8:BD 64 A0 A4 BD 78 BA 40 -41E0:A0 25 FE 3F 00 D3 41 27 -41E8:00 BF 00 DE C0 DE C0 1A -41F0:DA 1A DA C2 E9 EE A0 C1 -41F8:D3 C3 BA A0 25 00 C2 E9 -4200:EE A0 C9 CE D6 BA A0 3F -4208:00 F3 41 1A DA FE 41 1A -4210:DA C4 E5 E3 B2 BA A0 23 -4218:00 C4 E5 E3 B3 BA A0 64 -4220:00 C4 E5 E3 B5 BA A0 75 -4228:00 C2 F9 F4 E5 BD 62 A0 -4230:62 A0 62 A0 62 A0 62 00 -4238:11 42 63 00 19 42 E7 03 -4240:21 42 69 FF 29 42 80 00 -4248:FF 00 00 00 01 00 7F 00 -4250:C8 E5 F8 B2 BA A0 24 00 -4258:C8 E5 F8 B4 BA A0 78 00 -4260:D0 F4 F2 B2 BA A0 78 BA -4268:40 00 D0 F4 F2 B4 BA A0 -4270:78 BA 26 00 50 42 34 12 -4278:58 42 34 12 60 42 00 20 -4280:00 20 6A 42 00 20 00 20 -4288:CF E3 F4 B3 BA A0 6F 00 -4290:CF E3 F4 B6 BA A0 4F 00 -4298:88 42 B6 01 90 42 DF 32 -42A0:C8 C5 CC CC CF 00 D7 CF -42A8:D2 CC C4 00 C8 CF CD 45 -42B0:0D D0 E1 F3 E3 E1 EC A0 -42B8:CC E5 EE A0 B1 B3 C3 A0 -42C0:A0 A0 A0 A0 BA A0 A7 73 -42C8:A7 AC A7 73 A7 00 C1 F0 -42D0:F0 EC E5 A0 BA A0 A7 61 -42D8:A7 00 D0 E1 F3 E3 E1 EC -42E0:BA A0 A7 70 A7 00 BE 42 -42E8:A0 42 A6 42 CE 42 AC 42 -42F0:DA 42 B0 42 F0 F2 E9 EE -42F8:F4 ED A8 A9 AE F3 E9 FA -4300:E5 A0 BD A0 A4 00 A0 E2 -4308:F9 F4 E5 F3 8D A0 A0 A0 -4310:A0 AE E6 E5 E1 F4 F5 F2 -4318:E5 F3 A0 BD A0 A4 A0 A0 -4320:00 07 02 A9 04 D0 16 8E -4328:E5 44 8C E6 44 9C E3 44 -4330:20 DE 44 8E BB 43 8C BC -4338:43 80 7F A9 02 8D 75 43 -4340:20 DE 44 8E FB 44 8C FC -4348:44 A2 00 AD FB 44 29 0F -4350:C9 0A 90 02 69 06 69 B0 -4358:9D F5 44 4E FC 44 6E FB -4360:44 4E FC 44 6E FB 44 4E -4368:FC 44 6E FB 44 4E FC 44 -4370:6E FB 44 E8 E0 04 D0 D3 -4378:CA 30 37 BD F5 44 20 D7 -4380:44 80 F5 A9 04 D0 02 A9 -4388:02 8D 75 43 20 DE 44 A0 -4390:00 B1 FE AA C8 B1 FE A8 -4398:80 A9 20 DE 44 A0 00 B1 -43A0:FE 10 0A 20 D7 44 C8 D0 -43A8:F6 E6 FF 80 F2 09 80 20 -43B0:D7 44 EE BB 43 D0 03 EE -43B8:BC 43 AD DE C0 F0 12 30 -43C0:EE A2 0F CA 30 EC DD FD -43C8:44 D0 F8 8A 0A AA 7C 0C -43D0:45 60 A9 05 D0 06 A9 03 -43D8:D0 02 A9 02 8D 3B 44 20 -43E0:DE 44 8E FB 44 8C FC 44 -43E8:9C F5 44 9C F6 44 9C F7 -43F0:44 A2 10 F8 0E FB 44 2E -43F8:FC 44 AD F5 44 6D F5 44 -4400:8D F5 44 AD F6 44 6D F6 -4408:44 8D F6 44 AD F7 44 6D -4410:F7 44 8D F7 44 CA D0 DC -4418:D8 A2 02 A0 05 BD F5 44 -4420:4A 4A 4A 4A 18 69 B0 99 -4428:F5 44 88 BD F5 44 29 0F -4430:18 69 B0 99 F5 44 88 CA -4438:10 E3 A2 00 4C 78 43 A9 -4440:81 D0 02 A9 01 8D 57 44 -4448:20 DE 44 A0 08 8A C9 80 -4450:2A AA 29 01 F0 02 A9 81 -4458:49 B0 20 D7 44 88 D0 ED -4460:4C B2 43 20 DE 44 8A 10 -4468:0D A9 AD 20 D7 44 8A 49 -4470:FF 29 7F 18 69 01 AA A0 -4478:00 A9 03 8D 3B 44 4C E2 -4480:43 A9 06 D0 02 A9 03 8D -4488:AB 44 20 DE 44 A2 00 A5 -4490:FE 29 07 18 69 B0 9D F5 -4498:44 46 FF 66 FE 46 FF 66 -44A0:FE 46 FF 66 FE E8 E0 06 -44A8:D0 E5 A2 06 4C 78 43 20 -44B0:DE 44 A0 00 B1 FE F0 A8 -44B8:20 D7 44 C8 D0 F6 E6 FF -44C0:80 F2 20 DE 44 A0 00 B1 -44C8:FE F0 95 AA C8 B1 FE 20 -44D0:D7 44 CA D0 F7 F0 89 8D -44D8:DE C0 EE D8 44 60 20 E2 -44E0:44 AA A0 00 B9 DE C0 EE -44E8:E3 44 D0 03 EE E6 44 A8 -44F0:86 FE 84 FF 60 00 00 00 -44F8:00 00 00 00 00 3F 25 62 -4500:75 64 23 78 24 26 40 4F -4508:6F 70 73 61 3F 44 43 44 -4510:63 44 D2 43 D6 43 DA 43 -4518:23 43 3B 43 83 43 87 43 -4520:81 44 85 44 C2 44 AF 44 -4528:9A 43 +4018:A5 26 6D E6 41 85 26 AA +4020:A4 27 8E EA 41 8C EB 41 +4028:8E EC 41 8C ED 41 AD 00 +4030:20 A0 00 91 26 8D EE 41 +4038:9C EF 41 8D 0A 42 8D 0E +4040:42 20 B3 41 8D F0 41 9C +4048:F1 41 A0 00 20 C3 41 A2 +4050:E4 A0 41 20 26 43 A0 01 +4058:20 C3 41 A2 08 A0 42 20 +4060:26 43 A0 02 20 C3 41 A2 +4068:0C A0 42 20 26 43 A0 03 +4070:20 C3 41 A2 37 A0 42 20 +4078:26 43 A0 04 20 C3 41 A2 +4080:3B A0 42 20 26 43 A0 05 +4088:20 C3 41 A2 3F A0 42 20 +4090:26 43 A0 06 20 C3 41 A2 +4098:43 A0 42 20 26 43 A0 07 +40A0:20 C3 41 A2 73 A0 42 20 +40A8:26 43 A0 08 20 C3 41 A2 +40B0:77 A0 42 20 26 43 A0 09 +40B8:20 C3 41 A2 7B A0 42 20 +40C0:26 43 A0 0A 20 C3 41 A2 +40C8:81 A0 42 20 26 43 A0 0B +40D0:20 C3 41 A2 97 A0 42 20 +40D8:26 43 A0 0C 20 C3 41 A2 +40E0:9B A0 42 20 26 43 A0 0D +40E8:20 C3 41 A2 EB A0 42 20 +40F0:26 43 A0 0E 20 C3 41 A2 +40F8:E5 A0 42 20 26 43 A0 0F +4100:20 C3 41 A2 EF A0 42 20 +4108:26 43 A9 11 20 5B FB A2 +4110:F3 A0 42 20 A2 41 AD 21 +4118:43 85 FF 20 DA FD AD 20 +4120:43 85 FE 20 DA FD 20 BE +4128:41 20 4F 41 A2 05 A0 43 +4130:20 A2 41 AE C1 43 86 FE +4138:64 FF 8A 20 DA FD 20 BE +4140:41 20 4F 41 A9 8D 4C ED +4148:FD 00 00 00 00 00 00 A2 +4150:49 A0 41 86 FC 84 FD 9C +4158:49 41 9C 4A 41 9C 4B 41 +4160:A0 00 A2 10 F8 06 FE 26 +4168:FF B1 FC 71 FC 91 FC C8 +4170:B1 FC 71 FC 91 FC C8 B1 +4178:FC 71 FC 91 FC C8 A0 00 +4180:CA D0 E2 D8 A2 02 BD 49 +4188:41 4A 4A 4A 4A 18 69 B0 +4190:20 ED FD BD 49 41 29 0F +4198:18 69 B0 20 ED FD CA 10 +41A0:E5 60 86 FC 84 FD A0 00 +41A8:B1 FC F0 06 20 ED FD C8 +41B0:D0 F6 60 A2 08 85 FE 06 +41B8:FE 6A CA D0 FA 60 A9 A0 +41C0:4C ED FD 98 20 C1 FB A6 +41C8:28 A4 29 8E D7 44 8C D8 +41D0:44 60 D8 BD 23 A0 D9 BD +41D8:64 A0 A4 BD 78 BA 40 A0 +41E0:25 FE 3F 00 D2 41 27 00 +41E8:BF 00 DE C0 DE C0 1A DA +41F0:1A DA C2 E9 EE A0 C1 D3 +41F8:C3 BA A0 25 00 C2 E9 EE +4200:A0 C9 CE D6 BA A0 3F 00 +4208:F2 41 1A DA FD 41 1A DA +4210:C4 E5 E3 B2 BA A0 23 00 +4218:C4 E5 E3 B3 BA A0 64 00 +4220:C4 E5 E3 B5 BA A0 75 00 +4228:C2 F9 F4 E5 BD 62 A0 62 +4230:A0 62 A0 62 A0 62 00 10 +4238:42 63 00 18 42 E7 03 20 +4240:42 69 FF 28 42 80 00 FF +4248:00 00 00 01 00 7F 00 C8 +4250:E5 F8 B2 BA A0 24 00 C8 +4258:E5 F8 B4 BA A0 78 00 D0 +4260:F4 F2 B2 BA A0 78 BA 40 +4268:00 D0 F4 F2 B4 BA A0 78 +4270:BA 26 00 4F 42 34 12 57 +4278:42 34 12 5F 42 00 20 00 +4280:20 69 42 00 20 00 20 CF +4288:E3 F4 B3 BA A0 6F 00 CF +4290:E3 F4 B6 BA A0 4F 00 87 +4298:42 B6 01 8F 42 DF 32 C8 +42A0:C5 CC CC CF 00 D7 CF D2 +42A8:CC C4 00 C8 CF CD 45 0D +42B0:D0 E1 F3 E3 E1 EC A0 CC +42B8:E5 EE A0 B1 B3 C3 A0 A0 +42C0:A0 A0 A0 BA A0 A7 73 A7 +42C8:AC A7 73 A7 00 C1 F0 F0 +42D0:EC E5 A0 BA A0 A7 61 A7 +42D8:00 D0 E1 F3 E3 E1 EC BA +42E0:A0 A7 70 A7 00 BD 42 9F +42E8:42 A5 42 CD 42 AB 42 D9 +42F0:42 AF 42 F0 F2 E9 EE F4 +42F8:ED A8 A9 AE F3 E9 FA E5 +4300:A0 BD A0 A4 00 A0 E2 F9 +4308:F4 E5 F3 8D A0 A0 A0 A0 +4310:AE E6 E5 E1 F4 F5 F2 E5 +4318:F3 A0 BD A0 A4 A0 A0 00 +4320:07 02 A9 04 D0 16 8E E4 +4328:44 8C E5 44 9C E2 44 20 +4330:DD 44 8E BA 43 8C BB 43 +4338:80 7F A9 02 8D 74 43 20 +4340:DD 44 8E FA 44 8C FB 44 +4348:A2 00 AD FA 44 29 0F C9 +4350:0A 90 02 69 06 69 B0 9D +4358:F4 44 4E FB 44 6E FA 44 +4360:4E FB 44 6E FA 44 4E FB +4368:44 6E FA 44 4E FB 44 6E +4370:FA 44 E8 E0 04 D0 D3 CA +4378:30 37 BD F4 44 20 D6 44 +4380:80 F5 A9 04 D0 02 A9 02 +4388:8D 74 43 20 DD 44 A0 00 +4390:B1 FE AA C8 B1 FE A8 80 +4398:A9 20 DD 44 A0 00 B1 FE +43A0:10 0A 20 D6 44 C8 D0 F6 +43A8:E6 FF 80 F2 09 80 20 D6 +43B0:44 EE BA 43 D0 03 EE BB +43B8:43 AD DE C0 F0 12 30 EE +43C0:A2 0F CA 30 EC DD FC 44 +43C8:D0 F8 8A 0A AA 7C 0B 45 +43D0:60 A9 05 D0 06 A9 03 D0 +43D8:02 A9 02 8D 3A 44 20 DD +43E0:44 8E FA 44 8C FB 44 9C +43E8:F4 44 9C F5 44 9C F6 44 +43F0:A2 10 F8 0E FA 44 2E FB +43F8:44 AD F4 44 6D F4 44 8D +4400:F4 44 AD F5 44 6D F5 44 +4408:8D F5 44 AD F6 44 6D F6 +4410:44 8D F6 44 CA D0 DC D8 +4418:A2 02 A0 05 BD F4 44 4A +4420:4A 4A 4A 18 69 B0 99 F4 +4428:44 88 BD F4 44 29 0F 18 +4430:69 B0 99 F4 44 88 CA 10 +4438:E3 A2 00 4C 77 43 A9 81 +4440:D0 02 A9 01 8D 56 44 20 +4448:DD 44 A0 08 8A C9 80 2A +4450:AA 29 01 F0 02 A9 81 49 +4458:B0 20 D6 44 88 D0 ED 4C +4460:B1 43 20 DD 44 8A 10 0D +4468:A9 AD 20 D6 44 8A 49 FF +4470:29 7F 18 69 01 AA A0 00 +4478:A9 03 8D 3A 44 4C E1 43 +4480:A9 06 D0 02 A9 03 8D AA +4488:44 20 DD 44 A2 00 A5 FE +4490:29 07 18 69 B0 9D F4 44 +4498:46 FF 66 FE 46 FF 66 FE +44A0:46 FF 66 FE E8 E0 06 D0 +44A8:E5 A2 06 4C 77 43 20 DD +44B0:44 A0 00 B1 FE F0 A8 20 +44B8:D6 44 C8 D0 F6 E6 FF 80 +44C0:F2 20 DD 44 A0 00 B1 FE +44C8:F0 95 AA C8 B1 FE 20 D6 +44D0:44 CA D0 F7 F0 89 8D DE +44D8:C0 EE D7 44 60 20 E1 44 +44E0:AA A0 00 B9 DE C0 EE E2 +44E8:44 D0 03 EE E5 44 A8 86 +44F0:FE 84 FF 60 00 00 00 00 +44F8:00 00 00 00 3F 25 62 75 +4500:64 23 78 24 26 40 4F 6F +4508:70 73 61 3E 44 42 44 62 +4510:44 D1 43 D5 43 D9 43 22 +4518:43 3A 43 82 43 86 43 80 +4520:44 84 44 C1 44 AE 44 99 +4528:43 */ @@ -1271,14 +1271,14 @@ DEBUG .sprintf( "PrintDec2() @ %X", * ) .if USE_BIN_INV DEBUG .sprintf( "PrintBinI() @ %X", * ) PrintBinInv: - LDA #$81 + LDA #$31 BNE _PrintBin .endif ; USE_BIN_INV .if USE_BIN_ASC DEBUG .sprintf( "PrintBinA() @ %X", * ) PrintBinAsc: - LDA #$01 + LDA #$B1 .endif ; USE_BIN_ASC _PrintBin: @@ -1288,15 +1288,13 @@ DEBUG .sprintf( "PrintBinA() @ %X", * ) LDY #8 ; print 8 bits _Bit2Asc: TXA - CMP #$80 ; C= A>=$80 - ROL ; C<-76543210<-C + ASL ; C= A>=$80 TAX - AND #$01 ; 0 -> B0 - BEQ _FlipBit + LDA #$B0 + BCC _FlipBit _PrintBit: - LDA #$81 ; 1 -> 31 NOTE: self-modifying! + LDA #$B1 ; 1 -> 31 NOTE: self-modifying! _FlipBit: - EOR #$B0 JSR PutChar DEY BNE _Bit2Asc