From a9a102b0e8fe5854b8e84769f81d15c270aea3d0 Mon Sep 17 00:00:00 2001 From: Oliver Schmidt Date: Sat, 8 Sep 2018 23:29:59 +0200 Subject: [PATCH] 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 --- libsrc/apple2/mli.s | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) 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