1 REM Ins{nd av: Staffan Lantz <6650>    1987-10-11 17.47.06 (WRITE)
;Program: HITTA    Datum:871008     Version 1.0
; HL skall peka p} texten, DE skall peka p} ett ord, BC=s|k from position i HL.
; Programmet s|ker ord i text. Satt Z-flag=ord hittat.
; Texten och ordet skall b}da avslutas med CR.

        TITLE HITTA
        ORG 64000
; VARIABLER OCH KONSTANTER

L[NGD   EQU 80
ORD     DM "hitta",13
INTEXT  DS L[NGD

; HUVUDPROGRAM

START   LD HL,INTEXT
        LD BC,L[NGD
        CALL 5         ;L{s in en textrad.
        LD HL,INTEXT   ;Hl pekar p} texten.
        LD DE,ORD      ;De pekar p} ordet som skall letas upp.
        LD BC,0        ;S|k fr}n 1:a position (0,1,2,...)
        CALL INSTR     ;S|k. BC blir den position d{r ordet hittas.
        INC BC

        LD H,B
        LD L,C
        RET Z          ;Om ordet hittat hl<>0.
        LD HL,0        ;Ordet ej hittat hl=0.
        RET
;-----------------------------------------m-------------------------------------
INSTR   ADD HL,BC      ;S{tt r{tt startkolumn
        CALL S\KALLA
        RET

S\KALLA PUSH HL
        PUSH DE
        PUSH BC
        CALL STRSCN
        POP BC
        POP DE
        POP HL
        RET Z          ;Zero=Ord hittat.
        INC HL
        INC BC         ;\ka pekarna
        LD A,13
        CP (HL)
        JR NZ,S\KALLA
        CP A           ;Non Zero=Ord ej hittat.
        RET

;-------------------------------------------------------------------------------

STRSCN  LD A,(DE)      ;S|krutin: J{mf|r ordet endast med 'f|rsta' kolumn.
        CP 13
        RET Z          ;Samma, om CR {r ordet hittat.
        CP (HL)
        RET NZ         ;Ej samma, ordet ej hittat i den h{r kolumnen.
        INC HL
        INC DE         ;\ka pekarna.
        INC BC
        JR STRSCN

        END START
