Jump to content

Eyvind Bernhardsen

  • Content Count

  • Joined

  • Last visited

Community Reputation

220 Excellent

About Eyvind Bernhardsen

  • Rank

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. The release that's on GitHub also supports those keys (I downloaded and tested it to make sure), but since it has no important differences from the pre4 version there's no advantage to switching to it. Using pre4 is fine
  2. The file on github is (or should be?) the same as pre4 in terms of features, but is not identical because I fiddled with the memory layout to make the executable version.
  3. A week later than promised, but here's the GitHub release: https://github.com/eyvind/speedcar/releases/tag/2022-05-01 I added the option to build an executable as well as a cartridge version. The cartridge rom is functionally identical to the last test version, but I moved a couple of variables around to make the conditional assembly for the executable simpler. speedcar.rom speedcar.xex
  4. Compute! published a book with annotated source code, which was linked earlier in this thread: I found a comment in another thread with the source code from that book collected into a convenient zip file: I prettied the code up a bit, made a few changes to let it build with atasm, modified it so it runs from a cartridge, added the annotations from the book as comments, then put it on GitHub: ...all of which is a long winded way of saying that the source code is available
  5. Thanks for the testing, @Atari8guy and @mytek! I would have liked to get a proper page up/page down, but I don't understand SpeedScript's screen formatting well enough to do it yet. Maybe in a future release
  6. Since nobody has complained, I think I'll call this cartridge done. I did squeeze in an extra feature at great expense and at the last minute: this release binds the 1200XL's shift-F1 through shift-F4 keys to SpeedScript's paragraph (not page) up/down and home (top of document)/end functions. Those should correspond to your pgup/pgdn/home/end TK-II mappings, @mytek, but I've only tested in emulation so far so I'm not sure that they are correct. speedcarpre4.rom I'll make a proper release of this on github (with binary downloads) this weekend, so as always, please let me know if you find any bugs.
  7. Thanks! I hadn't seen the annotated version of this, somebody spent a lot of time understanding this code
  8. The caps lock thing might be a quirk in Altirra's keyboard handling. I set a write breakpoint for the caps lock flag (SHFLOK), and while it's cleared by the OS during reset it somehow gets set to $40 without triggering the breakpoint by the time SpeedScript starts. I verified that this happens to the .EXE version of SpeedScript as well, so I'm reasonably sure it's not my code. What I want to do is run the DOSINI routine, JDOS, instead of the full INIT (which clears SHFLOK) after reset, since that is what happens in the disk-based version. The quick and dirtyish solution is to clear SHFLOK in the JDOS routine, which solves the problem and shouldn't do any harm. Here's a build that does that. Please let me know if you find anything that still doesn't work right! speedcarpre3.rom
  9. I've found a couple of bugs on RESET, still trying to fix one of them: SpeedScript always sets the BOOT? flag, which means that the OS thinks DOS has booted and will lock up as it calls DOSINI during reset if there's no DOS. BOOT? and COLDST are set correctly before the cartridge is started, so I've fixed this by not setting those flags. When testing in Altirra, performing any kind of delete after a reset complains that the delete buffer is full. I've tried to fix that by making it handle cartridge reset more like a disk reset, but that makes reset turns on caps lock for some reason. I'm still working on this one. I also moved variables around a bit to save memory. The print buffer is 256 bytes, so I put that in $1F00 and moved the self-modifying code and the rest of the variables after the character set, freeing up 256 bytes for text (it's more than you might expect because text memory always starts on a page boundary). There is now only 1kB less space available than in the executable version, and that's because of the extra copy of the character set. Another small fix: The program moves buffers into the DOS memory area when booted from cassette but doesn't consider that it might be booted from cartridge. I changed the test so it checks if DOS is booted instead, making another 2.25kB available for text if you don't boot from disk. Here's a somewhat fixed version with more free memory while I poke at the RESET problem some more. speedcarpre2.rom
  10. Oh, I should give credit to @Dutch800XL for the source, which I got from this post (via @MrFish) I've added the comments from this archive to the source code on github now.
  11. If you want to understand how the memory layout works, this commit does all the moving around: https://github.com/eyvind/speedcar/commit/d4c2d723ff0e6274cd5b669a42710e601a548f4f
  12. Bah! My plan to use C000 RAM won't work because, of course, that area is actually part of the OS ROM in the XL/XE machines. Oh well. Source code is up at https://github.com/eyvind/speedcar - very rudimentary, there isn't even a README yet. Assemble with atasm -r -f255 speed0.m65 -ospeedcar.rom If you want a .car file instead, the only way I know how to do that is to insert it in Altirra and then export the ROM image
  13. Okay, I have something that seems to work! It's a standard 8K left cartridge which should allow DOS boot (I've only tested it from SpartaDOS X). I'm sure there are bugs, but I thought I'd get it out as quickly as possible so other people can help find them speedcar.rom CAUTION: I spent more time writing this post than I did testing the cartridge, so please don't entrust it with your most valuable documents yet.
  14. Possibly, but I'd like to make as few changes as possible to the program, especially since the comments say that the copy routines self-modify for speed (it's the brand!). It might be possible to scrap DOSVEC entirely, but I'm not sure how cart init works when DOS boot is enabled, so some documentation reading and experimentation is still needed
  15. Thanks, CHRYSAVE is noted. The others that I've found are DIRNAME, SCRCOL, TEXCOLOR, and JDOS, in addition to the self-modifying UMOVE and DMOVE routines. The new memory layout is going to be $1F00 for those, charset at $2000 (like the original), then variables after that. The difference from the original is that most of the code is moved from between the charset and the variables to $A000. There will be slightly less room for text, but it's possible to make more by moving some of the variables to pages 1F and 6. Alternatively, moving the RAM-based stuff to $Cxxx would leave all of low memory for text.
  • Create New...