Jump to content


  • Content Count

  • Joined

  • Last visited

Everything posted by 16kRAM

  1. Forgot to include a link: http://retrotinker.blogspot.com/2017/11/building-coco-games-with-inform.html
  2. This thread demonstrates it's possible to extract Infocom's Z3 interpreter from one of Infocom's Atari disk images and append your own Z3 story. Links at the bottom of my post in that thread may help point you in the right direction. After a pretty intensive month or so of development, I was able to do it with Grue Z3. (Though I had the advantage of starting with someone else's story). https://github.com/michaelsternberg/grue_z3 https://16kram.com/2017/07/20/an-apple-ii-build-chain-for-inform/(Apple II example - but the build instructions for Inform 6.15 and "hello world" example would apply to any 8-bit platform) John Linville's series of posts in Inform and the Coco show a little more sane method of injecting a story file into a disk image. I clumsily concatenated the interpreter, story file, and padded out the remainder of with 0s. Hope it helps.
  3. I recently chanced upon two issues of Ad Astra... - The Journal of the Atari Microcomputer Net Amateur Radio Operator Users' Group (volume 2 nos. 1 & 2) at a local used video game store. Before that, I was completely unaware of this publication but now I'm intrigued by the technical level of its articles. I've scanned my 2 copies and uploaded them to archive.org. Mr. Savetz has already archived volume 1 nos. 3 & 4 in 2017. For my scans, I created two versions of each: one that is strictly monochrome and one that is gray-scaled. Other versions were generated by archive.org including some with OCR. Inspect the archive.org Files section depending on your level of interest. Here are links to the 4 issues so far: v1n3: https://archive.org/details/AdAstraV1n3/ https://archive.org/download/AdAstraV1n3/Ad%20Astra%20v1n3.pdf v1n4: https://archive.org/details/AdAstraV1n4/ https://archive.org/download/AdAstraV1n4/Ad%20Astra%20v1n4.pdf v2n1: https://archive.org/details/AdAstraV2n1/ (mono): https://archive.org/download/AdAstraV2n1/Ad%20Astra%20v2n1%20mono.pdf (gray): https://archive.org/download/AdAstraV2n1/Ad%20Astra%20v2n1.pdf v2n2: https://archive.org/details/AdAstraV2n2/ (mono): https://archive.org/download/AdAstraV2n2/Ad%20Astra%20v2n2%20mono.pdf (gray): https://archive.org/download/AdAstraV2n2/Ad%20Astra%20v2n2.pdf Does anyone else own any other copies? It'd be cool to complete the run. - Michael S.
  4. As far as eking out another scan line per character to create a more readable font, the math may not support it. The PLATO terminal's character mode is 64x32 characters. With the 192 scan lines on the Atari, that leaves exactly 6 scan lines per character row - which is where it is now. ; .##..... ; #..#.... ; ####.... ; #..#.... ; #..#.... ; ........ I'm not a graphics expert so maybe there's some overscan tricks, but it'd need 32 additional scan lines to add one to each character row.
  5. Update: My attempt to quote tschak909 didn't work correctly. Posted by tschak909 on Mon Feb 19, 2018 8:17 PM Somebody took TLP and made an xex out of it, and it has a very odd bug, where just before it finishes drawing the password prompt, the cart somehow falls out into the weeds and jumps to warm start.... Not a bug. There is some copy-protection being employed here. At B863 exist 12 curious bytes. This is a bit of obfuscated code that is decrypted and copied from ROM to RAM in the subroutine at B84B. lda #<(LB863-1) ; Address of obfuscated code (well, minus 1) ldy #>(LB863-1) ldx #$0C ; Initialize counter to 12 jmp sub_b84b sub_b84b: sta off_EC ; Create pointer to obfuscated code sty off_EC+1 ; ldy #$00 ; Point to the first byte lda #$55 ; Decryption key 01010101 sec @LOOP: iny ; Increment pointer index rol a ; Rotate the key 01010101 -> 10101010 pha eor (off_EC),y ; Decrypt the byte using exclusive OR sta L3E33-1,y ; Save the byte to RAM pla dex ; Decrement counter bne :@LOOP ; Continue looping while counter not equal to 0 jmp L3E33 ; B860 4C 33 3E LB863: .byte $65,$AA,$12,$F7,$49,$D5,$25,$A9 .byte $19,$DC,$B2,$CD Here is the decrypted code. (Note: BFFC is in the ROM's address space and contains a 0). L3E33: DEC $BFFC ; Try to alter a ROM address from 0 to -1. LDA $BFFC ; Load "altered" value into CPU. BEQ $3E3E ; Still equal to 0? Yes, you're cool. RTS JMP COLDSV ; No? Stinking Pirates! Reboot RTS ; One de-protection solution is to change the 4C (JMP) at B860 to 60 (RTS) in the ROM file and re-convert it to an XEX. - Michael
  6. Hi Thom, I'm interested. While stepping through the disassembly, I often leave my connection open for a long time. I'd feel better doing that in a sandbox. Also I like the idea of worry-free filling up the pbnotes with Atari-specific threads. - Michael S.
  7. Thanks for the help. For sure, I am still finding this part confusing.
  8. https://archive.org/search.php?query=creator%3A%22Dorsett+Educational+Systems%22 Update: Sorry. I realize now you're asking about the Fractions package specifically.
  9. Here's a link to the code found in The Learning Phone. https://github.com/michaelsternberg/tlp/blob/50aada8a8fe7c7673f9b7feeb48bbd47c2647d04/tlp.asm#L3587
  10. While working on the disassembly, I had a hunch that the Microbits code might've been borrowed from MPP. Turns out the source code found between addresses A0AC to A1CF (Pages 7-9) of the Smart Term 4.1 cartridge were nearly copy/pasted into the Learning Phone. https://archive.org/details/MPPSmartTerminalv4.1
  11. I started working with the project's initial disassembly (tlp.asm) since it was the one used in the Makefile. My thinking was: since I am initially cleaning up data elements (character bitmaps and strings) my work could be used in either version. This is likely a moot point. I think you've decided to remove the dis6502 code in your pull request. - Michael
  12. I'll be happy help regarding a disassembly. I had the same thought about increasing the baud rate. Hopefully the Atari is able maintain its rendering chores at speeds higher than 1200.
  13. Kudos, Thom! I'm so impressed how quickly you and Steve solved the issues. Here's my personal hack.
  14. Thanks. I'm sure you're right. I connected by entering adtdcyberserv.org:5004 in the cart program, but it might've somehow found my 555-5555 tcpser option that points to 8005. But in the meantime, I was so intrigued by this screenshot of Moria from the PLATO ads. I'm so happy to see it in person.
  15. I was also able to connect to port 5004 (classic mode) but it doesn't change the wayward vectors. Some screens are still a mess.
  16. I was able to connect successfully on a real Atari thanks to Thom and Steve's conversation on PLATO. First thing was to change my flow control setting on my tcpser command line (from "&K0" to "&K1"). And second was to use the SHIFT-SUB key instead of SHIFT-STOP at the "group" signon screen. So amending my instructions from earlier: 1. ssh to the raspberry pi 2. On the pi, I run: tcpser -s 1200 -d /dev/ttyUSB0 -i "&K1" -n5555555=cyberserv.org:8005 3. On the Atari, disconnect any disk drives and ensure the 850 is connected and powered on. 4. On the Atari, boot "The Learning Phone" cartridge. If the R: handler is successfully downloaded from the 850, you should see "1200 baud" message, otherwise it might say "Microbit 300 baud". 6. On the Atari, I need to press <OPTION>+0 (zero) to disable local echo (otherwise double-characters appear). 7. On the Atari, I enter atdt5555555 and press return. (This phone number is registered to the cyber1 server in the tcpser command). 8. A reply from the PLATO service appears: "Press NEXT to begin". Press <START>+n. 9. At the clock screen, enter username and press <START>+n. 10. At the group screen, enter group and press <START>+<shift>+<=> - Michael S.
  17. After thinking about it a bit, another slightly simpler option to connect is: On the Pi, tcpser -s 1200 -d /dev/ttyUSB0 -i "&K0" And then on the Atari, atdtcyberserv.org:8005
  18. I had partial success connecting to cyber1 using my Atari 800 + 850 + The Learning Phone cart (on an Atarimax 8Mbit) + tcper running on a raspberry Pi. I recently received a cyber1 signon and group and am able to connect to cyber1 successfully using the Linux or Windows PTerm PLATO terminal emulators. Things fall apart for me when on the Atari when, after typing in the group name, you are required to press the SHIFT-STOP key on the PLATO terminal. This key is bound in PTerm as <shift>+<alt>+s or <shift>+<ctrl>+s. On the Atari Learning Phone cart, the key is bound to <shift>+<START>+s. But this doesn't appear to work during my Atari session. One of the other special PLATO terminal keys is the NEXT key. On PTerm it is <alt>+n or <RETURN>. On the Atari it is <START>+n. This *does* work on the Atari. So I'm baffled why I'm unable to successfully send the SHIFT-STOP key sequence. (I'll see if there's a way for me to capture the serial traffic emanating from the Atari). Attached are some photos. Note: You can press the <SELECT> key on the Atari to cycle through different background colors. Gray on my Applecolor composite monitor with the front-panel no-chroma button pressed is very readable. To get this far, I already had a Raspberry Pi (3), 850, some serial cable I made to connect the 850 to a Belkin Serial-to-USB adapter. I use this setup to connect to telnet-enabled BBSs. 1. ssh to the raspberry pi 2. On the pi, I run: tcpser -s 1200 -d /dev/ttyUSB0 -i "&K0" -n5555555=cyberserv.org:8005 3. On the Atari, disconnect any disk drives and ensure the 850 is connected and powered on. 4. On the Atari, boot "The Learning Phone" cartridge. If the R: handler is successfully downloaded from the 850, you should see "1200 baud" message, otherwise it might say "Microbit 300 baud". 6. On the Atari, I need to press <OPTION>+0 (zero) to disable local echo (otherwise double-characters appear). 7. On the Atari, I enter atdt5555555 and press return. (This phone number is registered to the cyber1 server in the tcpser command). 8. A reply from the PLATO service appears: "Press NEXT to begin". Press <START>+n. And so on... Like I said I can't get the SHIFT-STOP key press to be successfully sent/interpreted/whatever.
  19. Not sure if this has already been done before but I've had some success concatenating an Infocom Z-machine interpreter program for the Atari and a non-Infocom story file (Z-code). What I've done applies to small-ish story files (ones that don't require spanning disks). 1. Starting with the ATR image for Zork 1 (Serial 830929 Release 75), it's possible to search for the serial number to find the start of the Z-code. In Linux, it'd be something like: $ hexdump -C zork_i_830929_r75_z3.atr | grep 830929 -B3 -A2 00001bf0 85 e6 a9 20 85 e7 a2 24 20 62 1f 20 f7 1b 20 63 |... ...$ b. .. c| 00001c00 1c c9 9b d0 e6 4c c0 1b 00 00 00 00 00 00 00 00 |.....L..........| 00001c10 03 00 00 4b 4e 5b 4f 29 3b 3e 02 b0 22 6a 2e 60 |...KN[O);>.."j.`| 00001c20 00 00 38 33 30 39 32 39 01 f0 a5 c2 a3 86 00 00 |..830929........| 00001c30 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| Notice the serial number 830929 at file offset 0x1c22. 18 or 19 bytes before that (at 0x1c10) is an 03 (as in "version 3 Z-machine Interpreter Program"). That is the very beginning of the Z-code header. I've assumed everything before that to be the Infocom Z-machine Interpreter Program and boot code. 2. Extract the first 0x1c10 (7,184) bytes (offset 0x0000 thru 0x1c0f) from the ATR image, creating a file called info3a8.bin. This contains Infocom's Z-machine Interpreter Program for the Atari 8-bit. $ head --bytes $((16#1c10)) zork_i_830929_r75_z3.atr > info3a8.bin $ ls -l info3a8.bin -rw-r--r-- 1 michael michael 7184 Nov 12 21:00 info3a8.bin 3. Concatenate info3a8.bin with Z3 code created using Inform 6.1.5 and the mInform 1.1 or Inform 6/2 parser libraries. As far as how the Z-code is organized on the diskette, there's no trickery like sector interleaving as found on, say, the Apple II. The Inform6 object code can be written verbatim to the Atari disk image. $ cat info3a8.bin grue.z3 > grue_171019_r1_z3.atr $ ls -l grue_171019_r1_z3.atr -rw-r--r-- 1 michael michael 63504 Nov 12 21:01 grue_171019_r1_z3.atr 4. Fill the remainder of the disk image with zeros. A normal Atari ATR image is 92176 bytes. $ head --bytes $((92176-63504)) /dev/zero >> grue_171019_r1_z3.atr $ ls -l grue_171019_r1_z3.atr -rw-r--r-- 1 michael michael 92176 Nov 12 21:03 grue_171019_r1_z3.atr 5. Boot it. $ atari800 grue_171019_r1_z3.atr Unfortunately, most of the Inform-created story files out there are written for Z5 or Z8 interpreters. The example grue.z3 file is my back-port of Charles Mangin's "Grue" from Inform7 to Inform6. Not as easy as it sounds but doable. If you're sufficiently motivated to create your own Infocom-like text adventure for the Atari 8-bit, here are some resources: http://www.ifarchive.org/if-archive/infocom/compilers/inform6/manuals/old/designers_manual.pdf http://www.ifarchive.org/indexes/if-archiveXinfocomXcompilersXinform6Xexamples.html https://www.kansasfest.org/wp-content/uploads/apple_ii_inform_paper.pdf - Michael S. zork_i_830929_r75_z3.atr info3a8.bin grue_z3.zip grue_171019_r1_z3.atr
  20. Seems Warp Speed DOS XL isn't vaporware after all. When I started working on my Action!-related Retrochallenge project a couple weeks ago, I decided it would be fitting to use an OSS DOS. I have two physical OSS floppy+manuals I acquired a couple years ago from a now defunct used electronics seller near me. One is OS/A+ and the other is DOS XL. I haven't used them until now. After giving up on OS/A+ version 4 (having trouble enabling drives D3 and on), I started using the DOS XL instead and noticed my version number on the screen banner / title wasn't matching the ATR files found in the usual places (atariwiki.org, archive.org, atarimania.com). After searching around to find out more about the version, I came across this thread. Attached should be an .ATR of OSS Warp Speed DOS XL Ver. 2.42w. The DOS XL was side "B" to a Happy "Warp Speed Software" rev 6.6 floppy disk. I was unable to create a copy of the Warp Speed Software. The manual that accompanied the floppy has "Version 2.30" on it's title page, so I don't think there's anything new to be found there. There are some .DOC files that may yield some help. The label for the DOS XL diskette has the hand-written inscription "WS", presumably "Warp Speed". I don't know if this was added by the previous owner, OSS Inc., or Happy Computer, Inc. Besides a file called "HAPPY.DOC", there are 3 files in the directory listing with a "WS" prefix: WSBUG65.COM WSAXLON.COM WSRAMXE.COM Hope this fills a small hole in the Atari 8-bit universe. DOSXL242.ATR Contents of the text file HAPPY.DOC The WS in front of the BUG65,AXLON, and RAMXE files stands for WARP SPEED The obvious difference between OSS DOSXL and WARP SPEED DOSXL is the faster speed at which it works. One of the other changes is that we added density smart routines to automatically detect single or double density disks without having to hit the reset button when using the HAPPY 1050 enhanced drive. For those of you who own the MOSAIC RAMDISK, we're sorry but we don't have a version for you. We were unable to obtain a MOSAIC RAMDISK board set so we could not develop and support software for that configuration. IMPORTANT CAUTIONS The FAST WRITE WITH VERIFY is automatically turned on for HAPPY DRIVES. This means all writes are write with verify. Also you MUST NOT remove the disk from the drive, or open the door after writing, until the busy light goes off or else loss of data may occur. The drive flashes the busy light on and off when write or verify errors occur. If you press SYSTEM RESET after writing to the disk, you must wait until the drive busy light goes out before doing any other disk operation to ensure no loss of data. The drive busy light does NOT flash on and off for errors of this type. For those of you who also have the CONTROLLER installed in your 1050, DO NOT write to a disk when the slow/fast switch is in the SLOW position or you will get some incorrect data written! The only time you should switch to slow is when you are booting a protected disk that won't otherwise boot. Also DO NOT write to a disk that has the FORCE SLOW MODE on it or the same thing will happen.
  21. 16kRAM

    Side B - WS DOS XL

    From the album: Warp Speed DOS XL v2.42w

    Diskette label was marked by hand with "WS" (assuming "Warp Speed"). Unknown if that was written by previous owner or by OSS, Inc. or Happy Computers, Inc.
  22. From the album: Warp Speed DOS XL v2.42w

    Warp Speed DOS XL v2.42w Screen Shot
  23. No problem. Thanks for the archival work. People at the meetup were floored that something like this existed in the early home computer days. And the Strongbad Email was a hit.
  • Create New...