mirror of
https://github.com/cc65/cc65.git
synced 2024-08-19 02:29:33 +00:00
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
51 lines
863 B
ArmAsm
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
|