1
0
mirror of https://github.com/cc65/cc65.git synced 2024-12-25 02:29:52 +00:00
cc65/libsrc/apple2/mli.s
Oliver Schmidt a9a102b0e8 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
2018-09-08 23:29:59 +02:00

51 lines
863 B
ArmAsm

;
; Oliver Schmidt, 30.12.2004
;
; Apple ProDOS 8 MLI
;
.import __dos_type
.include "apple2.inc"
.include "mli.inc"
.bss
mliparam:.tag MLI
.data
callmli:
; Store parameters
sta call
stx mliparam
; Check for ProDOS 8
lda __dos_type
beq oserr
; 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
oserr: lda #$01 ; "Bad system call number"
sec
rts