2 ; Christian Groessler, June 2004
4 ; this file provides an equivalent to the BASIC GRAPHICS function
6 ; int __fastcall__ _graphics(unsigned char mode);
18 .importzp tmp1,tmp2,tmp3
25 ; set new grapics mode
27 ; returns handle or -1 on error
28 ; uses tmp1, tmp2, tmp3, tmp4 (in subroutines)
33 ; and #15 ; get required graphics mode
35 ; bcs invmode ; invalid mode
37 ; and #$c0 ; invalid bits set?
41 sta tmp1 ; remember graphics mode
43 parmok: jsr findfreeiocb
44 beq iocbok ; we found one
46 lda #<EMFILE ; "too many open files"
47 seterr: jsr __mappederrno ; @@@ probably not correct to set errno here @@@
55 tay ; move iocb # into Y
57 sta tmp3 ; name length + 1
63 bcs doopen ; C set: open needed
66 lda tmp2 ; get fd used
82 lda tmp1 ; get requested graphics mode
99 cioerr: sty tmp3 ; remember error code
102 jsr CIOV ; close IOCB again since open failed
103 jsr fddecusage ; and decrement usage counter of fd
104 lda tmp3 ; put error code into A
107 .endproc ; __graphics
112 scrdev: .byte "S:", 0