; TRS80_2-Page146.asm ; ; ***************** INPUT STRING SUBROUTINE ****************** ; INPUTS STRING OF CHARACTERS AT CURRENT COMMUNICATION AREA. ; TERMINATED BY ENTER. ; STARTING SCREEN ADDRESS IS 3C00h TO 3FFFh. ; ENTRY: (B) = MAXIMUM NUMBER. ; (CCRSR) = CURRENT CURSOR POSITION. ; EXIT: (B) = ACTUAL NUMBER INPUT. ; (HL) = FIRST CHARACTER LOCATION. ; NZ IF > MAXIMUM NUMBER. ; Z IF < MAXIMUM NUMBER. ; ALL REGISTERS SAVED EXCEPT HL, BC, A. ; ************************************************************* .ORG 0000h ENTER: .EQU 02h ; ADDED FOR TESTING PURPOSES. CCRSR: .EQU 3C00h ; ADDED FOR TESTING PURPOSES. LD SP, 0080h ; ADDED FOR TESTING PURPOSES. CALL INPUTS ; ADDED FOR TESTING PURPOSES. INPUTS: LD HL, (CCRSR) ; CURRENT CURSOR POSTION. PUSH HL ; SAVE. INC B ; BUMP MAXIMUM. LD C, 0 ; INITIALIZE COUNT OF CHARACTERS. INS010: PUSH BC ; SAVE COUNTS. CALL INPUTW ; GET CHARACTER.;;;;;;;;;;;;;;;;;; POP BC ; RESTORE COUNTS. CP ENTER ; TEST FOR DONE. JP Z, INS030 ; GO IF . INC C ; BUMP CHARACTER COUNT. CALL DISCHR ; DISPLAY CHARACTER. ;;;;;;;;;;;;; DJNZ INS010 ; DECREMENT B AND GO IF NOT MAXIMUM. LD A, 0FFh ; -1 TO A REGISTER. OR A ; RESET ZERO FLAG. INS030: POP HL ; RETRIEVE START. LD B, C ; GET CHARACTER COUNT. RET ; RETURN .END