From: Oliver Schmidt Date: Sat, 8 Sep 2018 21:29:59 +0000 (+0200) Subject: Protect random counter against ProDOS. X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=a9a102b0e8fe5854b8e84769f81d15c270aea3d0;p=cc65 Protect random counter against ProDOS. Although documented nowhere (!!!) ProDOS trashes the random counter locations $4E/$4F. Is discovered this because my TCP connections didn't have random local ports. It's a really funny coincidence that David Finnigan discovered only 3 years ago the very same issue because of the very same reason: https://groups.google.com/forum/#!topic/comp.sys.apple2.programmer/1ciep_Oetvo --- diff --git a/libsrc/apple2/mli.s b/libsrc/apple2/mli.s index 3e4771400..891cbaa6b 100644 --- a/libsrc/apple2/mli.s +++ b/libsrc/apple2/mli.s @@ -6,6 +6,7 @@ .import __dos_type + .include "apple2.inc" .include "mli.inc" .bss @@ -23,10 +24,24 @@ callmli: lda __dos_type beq oserr - ; Call MLI and return + ; Save random counter + lda RNDL + pha + lda RNDH + pha + + ; Call MLI jsr $BF00 ; MLI call entry point call: .byte $00 .addr mliparam + + ; Restore random counter and return + tax + pla + sta RNDH + pla + sta RNDL + txa rts ; Load oserror code and return