(hide navigation)
  • Swedish content
Fund my projects
Log in
Latest comments
RSS feed

Forum comments in chronological order

Disclaimer: I am not responsible for what people (other than myself) write in the forums. Please report any abuse, such as insults, slander, spam and illegal material, and I will take appropriate actions. Don't feed the trolls.

Jag tar inget ansvar för det som skrivs i forumet, förutom mina egna inlägg. Vänligen rapportera alla inlägg som bryter mot reglerna, så ska jag se vad jag kan göra. Som regelbrott räknas till exempel förolämpningar, förtal, spam och olagligt material. Mata inte trålarna.

Aug 2020

GCR decoding on the fly

Tue 4-Aug-2020 01:28
" Then it clears the flag in anticipation of the next byte. "

This is a common misconception.
CLV resets the external shift register. The external shift register sets again SOE upon completition of 8 shifts since the CLV. It's not "anticipation" but exactly where it should be.
Tue 4-Aug-2020 01:44
Great article! I have integrated the code into my disk utility and it allows me to scan the entire disk in 21 seconds using an interleave of 2 sectors!! I only send the first 4B and an error byte from each sector back to the C64, so that's why I can hit interleave of 2. I used the short checksum snipet from Shards of Fancy. I also noticed in Shards of Fancy that you use the "nop" for density 0 and 1 (Tracks 25-35), not just the slowest ones (31-35).

Now for some improvements!!
1) instead of storing $0100,$01FF->$0101, I store $01FF->$0100 so the data does not have a wrap. This is accomplished by starting the stack at $FF instead of $00, and also changing the final few instructions in the zero-page from pha before tsx to tsx before pha. This works because pha does not change the zero flag.
2) if the first byte of data is not $55, I give up after 3 tries and report error 04 for that sector and move on. also, if parity fails, give up after 3 tries and report error 05. This is because my project is a disk utility and not a loader :) I cannot "hang" trying forever.
3) save/restore the last 8B of stack, and SP, just before/after this routine, so I can still jsr/rts everywhere else in the code.
4) save/restore a portion of ZP before/after reading all the sectors I wanted, so I can return to KERNAL when done. Returning to KERNAL is important for my utility project. I am using $86-$E5 for the ZP code and only save/restore $99-$B4 -- the rest is just zero'd out.


where can we find this disk utility?


Fri 7-Aug-2020 00:13
Emulated by MAME as of MAME 0.223. :-)

The TTY demystified

Fri 7-Aug-2020 13:10


Sat 15-Aug-2020 13:57
Am I missing something? The third example in Chapter4 Items doesn't appear to work. As shown the amethyst is not in the bowl. Adding (* is #in #bowl) to the amethyst seems to fix this. All of the options for multiple stones now work. Latest windows version.
Sun 16-Aug-2020 17:01
Okay, does this example need updating? Changing ((stone to (*(stone in line 39 seems to fix this.

The TTY demystified

Tue 18-Aug-2020 07:18


Linus Åkesson
Thu 20-Aug-2020 10:10
Okay, does this example need updating? Changing ((stone to (*(stone in line 39 seems to fix this.

Thanks for reporting this! There was a change in the language definition a while back, and this example should have been updated. I'll fix it.

The TTY demystified

Mon 31-Aug-2020 23:52
Great article, thank you for putting this together!