NEW AUTO 3,1 .LIST OFF */-------------------------------------- * # tuiInit * Initialize screen & create a new context * ## C * `short int hCTX tuiInit();` * ## ASM * `>LIBCALL hLIBTUI,LIBTUI.Init` * ## RETURN VALUE * CC = success, A = hCTX *\-------------------------------------- CTX.Init >LDYA L.SEQ.INIT jsr IO.fputs bcs .99 >LDYAI S.CTX >SYSCALL2 GetMem bcs .99 >STYA ZPCtxPtr txa >PUSHA hCTX lda #0 >PUSHA Init Counter ldy #S.CTX-1 .10 sta (ZPCtxPtr),y dey bpl .10 jsr IO.GetC.Reset .1 jsr IO.GetC bcs .98 .2 ldy #S.CTX.W lda (ZPCtxPtr),y bne .8 .3 lda (pStack) dec sta (pStack) bne .1 lda #80 ldy #S.CTX.W sta (ZPCtxPtr),y lda #24 iny S.CTX.H sta (ZPCtxPtr),y .8 inc pStack Discard counter >PULLA hCTX clc .99 rts .98 pha inc pStack Discard counter >PULLA hCTX >SYSCALL2 FreeMem pla sec rts */-------------------------------------- * # tuiClose * destroy context * ## C * `void fastcall tuiClose(short int hCTX);` * ## ASM * `lda hCTX` * `>LIBCALL hLIBTUI,LIBTUI.Close` * ## RETURN VALUE * CC = success *\-------------------------------------- CTX.Close pha >SYSCALL2 GetMemPtr >STYA ZPCtxPtr lda (ZPCtxPtr) S.CTX.hSCRN beq .1 jsr LIB.Destroy .1 pla >SYSCALL2 FreeMem >LDYA L.SEQ.CLOSE jsr IO.fputs clc CTX.Close.RTS rts *-------------------------------------- MAN SAVE usr/src/lib/libtui.s.ctx LOAD usr/src/lib/libtui.s ASM