Groups | Search | Server Info | Login | Register
Groups > comp.sys.apple2.programmer > #6127
| Newsgroups | comp.sys.apple2.programmer |
|---|---|
| Date | 2023-11-30 07:14 -0800 |
| References | <010cc230-427a-485e-9a90-bcd294ba96b5n@googlegroups.com> <95461d63-9b7a-47b8-b433-c31432d43d24n@googlegroups.com> |
| Message-ID | <249c977a-9c90-4b82-8996-16a65fc8a368n@googlegroups.com> (permalink) |
| Subject | Re: Using Applesoft Internal Error Messages in a BASIC Error Handler |
| From | Bill Chatfield <billchatfield1@gmail.com> |
On Thursday, November 30, 2023 at 1:23:58 AM UTC-5, fadden wrote: > The error code, passed in the X register, is just the index of the start of the error text (table at $d260). The error routine prints "?", then the error text, then "ERROR" and a bell (from $d350). If the code was running, it prints the line number, and does the Applesoft error handling. > > So for example, SYNTAX ERROR is error code 16. $d260 + 16 = $d270, which is the string "SYNTAX". The last letter has the high bit set (Dextral Character Inverted format, or DCI), which is how the code knows when to stop printing characters. > > Try this: > > 100 BASE = 53856: REM $D260 > 110 ERRCODE = 16: GOSUB 1000: REM SYNTAX ERROR > 120 ERRCODE = 53: GOSUB 1000: REM ILLEGAL QUANTITY > 130 END > 1000 PTR = BASE + ERRCODE > 1010 L = PEEK (PTR): IF L > = 128 THEN PRINT CHR$ (L - 128);: PRINT " ERROR": RETURN > 1020 PRINT CHR$ (L);:PTR = PTR + 1: GOTO 1010 Wow, that makes a lot more sense in BASIC. I'm use to an ASCII code 0 terminator for strings, so setting the high bit is new to me. But it is more efficient because it saves one character. It's also more efficient than using a length byte at the beginning. Yeah, this is just what I was looking for. This is so much better than an IF/THEN for each error code in every BASIC program. I thought I was getting good at reading 6502 assembly, but the Applesoft source code is a little harder. I guess Bill Gates wrote it. Haha. Thank you so much for translating!
Back to comp.sys.apple2.programmer | Previous | Next — Previous in thread | Next in thread | Find similar
Using Applesoft Internal Error Messages in a BASIC Error Handler Bill Chatfield <billchatfield1@gmail.com> - 2023-11-29 10:31 -0800
Re: Using Applesoft Internal Error Messages in a BASIC Error Handler fadden <fadden@fadden.com> - 2023-11-29 22:23 -0800
Re: Using Applesoft Internal Error Messages in a BASIC Error Handler Bill Chatfield <billchatfield1@gmail.com> - 2023-11-30 07:14 -0800
Re: Using Applesoft Internal Error Messages in a BASIC Error Handler Jerry Penner <jerry+a2@jpen.ca> - 2023-11-30 11:00 -0700
Re: Using Applesoft Internal Error Messages in a BASIC Error Handler fadden <fadden@fadden.com> - 2023-11-30 13:23 -0800
Re: Using Applesoft Internal Error Messages in a BASIC Error Handler Bill Chatfield <billchatfield1@gmail.com> - 2023-12-01 07:10 -0800
Re: Using Applesoft Internal Error Messages in a BASIC Error Handler Michael J. Mahon <mjmahon@aol.com> - 2024-01-17 07:19 +0000
csiph-web