;Screen Control Assembly Language Routines for Atari 400 & 800
;*** Incomplete - Copied from Oric-1 ***

; Display Colors
BLACK   EQU $00     Black
RED     EQU $00     Red
GREEN   EQU $00     Green
YELLOW  EQU $00     Yellow
BLUE    EQU $00     Blue
MAGENT  EQU $00     Magenta
CYAN    EQU $00     Cyan
WHITE   EQU $00     White

;ASCII Screen Control Characters
CHRBCK  EQU $7E     Backspace 
CHRBEL  EQU $FD     Beep (Buzzer)
CHRCLR  EQU $7D     Clear Screen
CHRDEL  EQU $FE     Delete (Character)
CHRDWN  EQU $1C     Cursor Down
CHRFLS  EQU $00     Flash On
CHRHOM  EQU $00     Home (None) 
CHRINS  EQU $FF     Insert (Character)
CHRLFT  EQU $1E     Cursor Left
CHRRGT  EQU $1F     Cursor Right
CHRRTN  EQU $9B     Return (End of Line)
CHRTAB  EQU $7F     Tab
CHRUP   EQU $1B     Cursor Up

;ATASCII Symbolic Characters
CHRBLK  EQU $A0   Block

;ASCII Box Drawing Characters
BOXBLC  EQU $0A   Bottom Left Corner
BOXBRC  EQU $03   Bottom Right Corner
BOXBCT  EQU $18   Bottom to Cetter Tee
BOXCTR  EQU $13   Center Cross
BOXHLN  EQU $12   Horizontal Line
BOXLCT  EQU $01   Left To Center T)
BOXRCT  EQU $04   Right To Center T 
BOXTLC  EQU $11   Top Left Corner
BOXTRC  EQU $05   Top Right Corner
BOXTCT  EQU $17   Top to Center T
BOXVLN  EQU $7C   Vertical Line (|)

;Set Background Color
;Args: A = Atari Color Code
;Uses: TEMP0 - Temporary Storage
;Affects: A,C,N,Z
SCRBKG: AND $07     ;Strip High Bits
        ORA $90     ;Convert to Control Character
        JMP PRCHR   ;Print Character and Return

;Set Text Color
;Args: A = Vic color code
;Affects: A,X,C,N,Z
SCRTXT: AND $07     ;Strip High Bits
        ORA $80     ;Convert to Control Character
        JMP PRCHR   ;Print Character and Return

;Clear Screen
;Affects A,C,N,Z
SCRCLR: LDA #CHRCLR  ;Load Clear Screen Character
        JMP PRCHR   ;Print it and Return

;Move Cursor Down
;Affects A,C,N,Z
SCRDWN: LDA #CHRDWN ;Load Cursor Down Character
        JMP PRCHR   ;Print it and Return

;Move Cursor To Home Position
;Affects A,C,N,Z
SCRHOM: LDA #0      ;Column 0
        TAY         ;Row 0
        BEQ SRCMOV  ;Move Cursor

;Move Cursor Left
;Affects A,C,N,Z
SCRLFT: LDA #CHRLFT ;Load Cursor Left Character
        JMP PRCHR   ;Print it and Return

;Move Cursor Right
;Affects A,C,N,Z
SCRRGT: LDA #CHRRGT ;Load Cursor Left Character
        JMP PRCHR   ;Print it and Return

;Move Cursor Up
;Affects A,C,N,Z
SCRUP:  LDA #CHRUP  ;Load Cursor Left Character
        JMP PRCHR   ;Print it and Return

;Move Cursor to Specified Coordinates
;Args: A = screen column (0 = top)   
;      Y = screen line (0 = left)
SCRMOV: RTS         ;Not Yet Implemented

;Get Cursor Position
;Returns: A = current cursor column
;         Y = current cursor row
SCRPOS: RTS         ;Not Yet Implemented

;Get Screen Size
;Returns: A = width of screen in columns
;         Y = height of screen in rows
SCRSIZ: RTS         ;Not Yet Implemented
