2 ; Christian Groessler, June 2004
4 ; this file provides an equivalent to the BASIC GRAPHICS function
6 ; int __fastcall__ _graphics(unsigned char mode);
13 .import __do_oserror,__oserror
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 __seterrno
57 tay ; move iocb # into Y
59 sta tmp3 ; name length + 1
65 bcs doopen ; C set: open needed
68 lda tmp2 ; get fd used
84 lda tmp1 ; get requested graphics mode
101 cioerr: jsr fddecusage ; decrement usage counter of fd as open failed
104 .endproc ; __graphics
109 scrdev: .byte "S:", 0