1 REM Ins{nd av Bj|rn Linderson <5829>    1986-05-03 03.51.37
        ; DETTA PROGRAM [R SKRIVET AV BJ\RN LINDERSON
        ; OCH [R EN SK[RMEDITOR MED SAMMA TANGENTER SOM ORD800.
        ; F]R FRITT KOPIERAS OCH [VEN ANV[NDAS F\R KOMERSIELLT BRUK.
        ; UTVECKLAT AV SOFTWORKS / SOFTWORKS DATACENTRAL
        ; NORRK\PING
        ; 25 RADER A' 80 TECKEN EDITERAS.
        ;



        ; IX + 1        XLED    FFFB
        ; IX + 2        YLED    FFFC
        ; IX + 3        SIGN    FFFD
        ; IX + 4        WRTCHAR FFFE
        ; IX + 5        YROW    FFFF

        ORG     50000

        CALL    INIT            ; MACRO SUB CALL
        CALL    MAIN            ; MACRO SUB CALL
        RET                     ; RETURN

MAIN    CALL    FETCH           ; MACRO SUB CALL
        CALL    KEYTEST         ; MACRO SUB CALL
        CALL    BORDER          ; MACRO SUB CALL
        LD      A,(IX+3)        ; INDEX REGISTER OP
        CP      1               ; COMPARE X TO ACCU
        JR      Z,MAIN          ; JR CONDITION
        LD      A,(IX+4)        ; INDEX REGISTER OP
        CP      3               ; COMPARE X TO ACCU
        RET     Z               ; RETURN CONDITION
        CALL    WRITE           ; MACRO SUB CALL
        INC     (IX+1)          ; INDEX REGISTER OP
        JR      MAIN            ; JR ABSOLUTE

INIT    LD      HL,65530        ; 16 BIT LOAD
        LD      B,5             ; B REGISTER LOAD
Q       LD      (HL),0          ; LOAD POINT OP
        INC     HL              ; REGISTER INC
        DJNZ    Q               ; JR CONDITION
        LD      A,6             ; ACCUMULATOR LOAD
        OUT     (56),A          ; I/O PAC OP
        LD      A,25            ; ACCUMULATOR LOAD
        OUT     (57),A          ; I/O PAC OP
        LD      IX,65530        ; 16 BIT LOAD
        CALL    CLS             ; MACRO SUB CALL
        LD      A,1             ; ACCUNULATOR LOAD
        OUT     (99),A          ; I/O PAC OP
        RET                     ; RETURN

FETCH   LD      (IX+4),0        ; INDEX REGISTER OP
        LD      (IX+3),0        ; INDEX REGISTER OP
        CALL    CURSON          ; MACRO SUB CALL
        LD      HL,65507        ; 16 BIT LOAD
        LD      (HL),0          ; LOAD POINT OP
L1      LD      A,(HL)          ; LOAD POINT OP
        CP      0               ; COMPARE X TO ACCU
        JR      Z,L1            ; JR CONDITION
        LD      (IX+4),A        ; INDEX REGISTER OP
        CALL    CURSOFF         ; MACRO SUB CALL
        RET                     ; RETURN

KEYTEST LD      A,(IX+4)        ; INDEX REGISTER OP
        LD      (IX+3),1        ; INDEX REGISTER OP
        CP      192             ; COMPARE X TO ACCU
        JP      Z,INSERT        ; JP CONDITION
        CP      193             ; COMPARE X TO ACCU
        JP      Z,DELETE        ; JP CONDITION
        CP      196             ; COMPARE X TO ACCU
        JP      Z,UP            ; JP CONDITION
        CP      198             ; COMPARE X TO ACCU
        JP      Z,DOWN          ; JP CONDITION
        CP      8               ; COMPARE X TO ACCU
        JP      Z,LEFT          ; JP CONDITION
        CP      9               ; COMPARE X TO ACCU
        JP      Z,RIGHT         ; JP CONDITION
        CP      13              ; COMPARE X TO ACCU
        JP      Z,CRLF          ; JP CONDITION
        CP      215             ; COMPARE X TO ACCU
        JP      Z,CLS           ; JP CONDITION
        LD      (IX+3),0        ; INDEX REGISTER OP
        RET                     ; RETURN

UP      DEC     (IX+2)          ; INDEX REGISTER OP
        RET                     ; RETURN

DOWN    INC     (IX+2)          ; INDEX REGISTER OP
        RET                     ; RETURN

LEFT    DEC     (IX+1)          ; INDEX REGISTER OP
        RET                     ; RETURN

RIGHT   INC     (IX+1)          ; INDEX REGISTER OP
        RET                     ; RETURN

CRLF    CALL    CURSOFF         ; MACRO SUB CALL
        INC     (IX+2)          ; INDEX REGISTER OP
        LD      (IX+1),0        ; INDEX REGISTER OP
        CALL    CURSON          ; MACRO SUB CALL
        RET                     ; RETURN

CALC    EXX                     ; SWAP REGISTERS
        LD      B,(IX+2)        ; INDEX REGISTER OP
        LD      HL,30640        ; 16 BIT LOAD
        LD      DE,80           ; 16 BIT LOAD
        INC     B               ; REGISTER INC
L2      ADD     HL,DE           ; ADDITION
        DJNZ    L2              ; JR CONDITION
        LD      B,(IX+1)        ; INDEX REGISTER OP
        INC     B               ; REGISTER INC
        DEC     HL              ; REGISTER DEC
L3      INC     HL              ; REGISTER INC
        DJNZ    L3              ; JR CONDITION
        PUSH    HL              ; STACK OPERATION
        EXX                     ; SWAP REGISTERS
        POP     HL              ; STACK OPERATION
        RET                     ; RETURN

CURSOFF CALL    CALC            ; MACRO SUB CALL
        LD      A,(HL)          ; LOAD POINT OP
        RES     7,A             ; BIT TEST
        LD      (HL),A          ; LOAD POINT OP
        RET                     ; RETURN

CURSON  CALL    CALC            ; MACRO SUB CALL
        LD      A,(HL)          ; LOAD POINT OP
        SET     7,A             ; BIT TEST
        LD      (HL),A          ; LOAD POINT OP
        RET                     ; RETURN

BORDER  LD      A,(IX+1)        ; INDEX REGISTER OP
        CP      255             ; COMPARE X TO ACCU
        CALL    Z,MIN           ; CALL CONDITION SUB
        CP      80              ; COMPARE X TO ACCU
        CALL    Z,OEKA          ; CALL CONDITION SUB
        LD      A,(IX+2)        ; INDEX REGISTER OP
        CP      255             ; COMPARE X TO ACCU
        CALL    Z,OEKA1         ; CALL CONDITION SUB
        CP      25              ; COMPARE X TO ACCU
        CALL    Z,NIK           ; CALL CONDITION SUB
        RET                     ; RETURN

MIN     DEC     (IX+2)          ; INDEX REGISTER OP
        LD      (IX+1),79       ; INDEX REGISTER OP
        RET                     ; RETURN
 
OEKA    INC     (IX+2)          ; INDEX REGISTER OP
        LD      (IX+1),0        ; INDEX REGISTER OP
        RET                     ; RETURN

OEKA1   INC     (IX+2)          ; INDEX REGISTER OP
        RET                     ; RETURN

NIK     DEC     (IX+2)          ; INDEX REGISTER OP
        RET                     ; RETURN

WRITE   CALL    CALC            ; MACRO SUB CALL
        LD      A,(IX+4)        ; INDEX REGISTER OP
        LD      (HL),A          ; LOAD POINT OP
        RET                     ; RETURN

CLS     LD      HL,30720        ; 16 BIT LOAD
        LD      DE,30721        ; 16 BIT LOAD
        LD      BC,2000         ; 16 BIT LOAD
        LD      (HL),32         ; LOAD POINT OP
        LDIR                    ; LOAD
        LD      (IX+1),0        ; INDEX REGISTER OP
        LD      (IX+2),0        ; INDEX REGISTER OP
        RET                     ; RETURN

INSERT  CALL    CALC            ; MACRO SUB CALL
        INC     HL              ; INC REGISTER
        LD      DE,32721        ; 16 BIT LOAD
        EX      DE,HL           ; SHIFT DE & HL
        SBC     HL,DE           ; SUBTRACTION
        PUSH    HL              ; STACK OPERATION
        POP     BC              ; STACK OPERATION
        LD      DE,32720        ; 16 BIT LOAD
        LD      HL,32719        ; 16 BIT LOAD
        LDDR                    ; DOWNLOAD
        INC     HL              ; INC REGISTER
        LD      (HL),32         ; LOAD POINT OP
        RET                     ; RETURN

DELETE  CALL    CALC            ; MACRO SUB CALL
        PUSH    HL              ; STACK OPERATION
        LD      DE,32720        ; 16 BIT LOAD
        EX      DE,HL           ; EX DE & HL
        SBC     HL,DE           ; SUBTRACTION
        PUSH    HL              ; STACK OPERATION
        POP     BC              ; STACK OPERATION
        POP     HL              ; STACK OPERATION
        PUSH    HL              ; STACK OPERATION
        INC     HL              ; REGISTER INC
        POP     DE              ; STACK OPERATION
        LDIR                    ; LOAD
        LD      (HL),32         ; LOAD POINT OP
        RET                     ; RETURN











