
|
Mathpack routines MCCM/WR/JvdM, 00-00-00
;Als er 1 of meer eindspaties waren getypt, mag dit een programma niet
;verstoren. De volgende routine maakt een programma dus beter "gek bestendig"
;(DOS-routines verwijderen om dezelfde reden overtollige spaties)
;------------------------------------
;EINDSPATIES INPUT-STRING VERWIJDEREN
;Input: HL = Pointer naar input-$ (lengte byte)
;(Preserves HL)
;------------------------------------
LENGTE PUSH HL ;Save pointer $-lengte
LD B,#00
LD C,(HL) ;BC = Lengte ingetypte string
ADD HL,BC ;Bereken eindadres string
LD A,#20 ;Ascii voor spatie
LENG_1 CP (HL) ;Is laatste karakter een spatie ?
JR NZ,LENG_2 ;Nee
INC B ;Ja, tel eindspaties
DEC HL ;Pointer -1
JR LENG_1 ;Check next karakter
LENG_2 EX (SP),HL ;HL <-- pointer $-lengte, pointer einde-$ ---> stack
LD A,B ;Aantal gevonden eindspaties
OR A ;Spaties gevonden ?
JR Z,LENG_3 ;Nee
NEG ;Verander positief in negatief
LENG_3 LD C,(HL) ;Lengte ingetypte string
ADD A,C ;Korrigeer lengte als er eindspaties waren
LD (HL),A ;Al of niet aangepaste lengte weer opslaan
EX (SP),HL ;HL <-- pointer eind-$, pointer $-lengte --> stack
INC HL ;Einde string +1
LD (HL),#00 ;Plaats eindnul (Ascii-Z string)
POP HL ;Herstel pointer $-lengte
RET
;---------------------------------------------------------------
|