; TRS80_2-Page150.asm ; ; ************* DISPLAY CHARACTER SUBROUTINE ************* ; OUTPUTS ONE CHARACTER TO CURRENT CURSOR POSITION ON SCREEN. ; MOVE CURSOR TO NEXT POSITION UNLESS LAST CHARACTER POSITION OF LINE 11. ; IF LATTER, SCROLLS UP FIRST. ; STARTING SCXREEN ADDRESS WOULD BE 3C00h THROUGH 3FFFh. ; ENTRY: (CCRSR) - CURRENT CURSOR POSITION. ; (A) = CHARACTER TO BE OUTPUT. ; ALL REGISTERS SAVED. ; ********************************************************* CCRSR: .EQU 3C00h ; ADDED FOR TESTING PURPOSES. LD SP, 0080h ; ADDED FOR TESTING PURPOSES. CALL DISCHR ; ADDED FOR TESTING PURPOSES. DISCHR: PUSH BC ; SAVE REGISTERS. PUSH HL LD HL, (CCRSR) ; GET CHARACTER POSITION. LD (HL), A ; STORE CHARACTER. LD BC, 3C00h + 767 ; LAST CP OF LINE 11. INC HL ; BUMP CURSOR LD (CCRSR), HL ; STORE. OR A ; RESET CARRY. SBC HL, BC ; TEST FOR LAST. JP NZ, DIS010 ; RETURN IF NO SCROLL. CALL SCROLL ; SCROLL UP.;;;;;;;;;;;;;;;;;;;;;;;; DIS010: POP HL ; RESTORE REGISTERS. POP BC RET ; RETURN. .END