; vid - TRS-80's video ; ; Implement PutC and GRID_SETCELL using TRS-80's SVC calls. .equ TRS80_COLS 80 .equ TRS80_ROWS 24 trs80PutC: push af push bc push de ; altered by SVC ld c, a ld a, 0x02 ; @DSP rst 0x28 pop de pop bc pop af ret trs80SetCell: push af push bc push hl ; HL altered by @VDCTL push de ; DE altered by @VDCTL ex de, hl bit 0, c ld c, a ; save A now jr z, .skip ; Z from BIT above. cursor not set ; set cursor ld a, 0x0f ; @VDCTL ld b, 3 ; move cursor fn rst 0x28 ; HL altered. ; Our Row/Col is our currently-pushed DE value. Let's take advantage of ; that. pop hl \ push hl ; HL altered. bring back from stack .skip: ld a, 0x0f ; @VDCTL ld b, 2 ; display char rst 0x28 pop de pop hl pop bc pop af ret ; This is a much faster version of gridPushScr. Use it in your glue code, but ; you need to set HL to GRID_BUF first. trs80PushScr: push af push bc ld a, 0x0f ; @VDCTL ld b, 5 ; move from RAM to vid ; HL is already set by caller rst 0x28 pop bc pop af cp a ; ensure Z ret