1 REM Ins{nd av Kristoffer Eriksson <5357>    1986-06-04 00.28.26
; Fil: CAPSONLY.ASM 
; Av:  Kristoffer Eriksson, "SKE" <5357>, 1986. 
; F|r: ABC800-serien. 
; 
;-Ver--/-Datum----/-Sign-/-Kommentar---------------------------------- 
; 1.00 / 86-06-03 / SKE  / 
; 
; L{gger in en liten rutin som konverterar alla sm} bokst{ver man skriver in 
; p} tangentbordet, till stora. 

CONWRITE:   = 11 
Y.BOTM:     = 65292 
Y.COMTOP:   = 65328 
CONSI:      = 65424 

CONSRUT:    CALL  0                   ; Gamla CONSI l{ggs in h{r. 
$$GL]G:     CP    "`" 
            RET   C                   ; Om tecknet i reg A {r en gemen bokstav 
$$GH\G:     CP    "~"+1               ; konverteras det till en versal. 
            RET   NC 
            SUB   32 
            RET 

; Initieringsrutin 
INIT:       CALL  CHAIN.CLR 
            CALL  CLINEPAR            ; Hitta parametrar p} kommandoraden. 
            JR    C L[NKAIN 
            CP    "-"                 ; "-" f}r inleda option. 
            JR    NZ I.X1 
            INC   HL 
            LD    A,(HL) 
I.X1:       PUSH  AF 
            CP    ";" 
            JR    Z I.X2 
            INC   HL 
I.X2:       CALL  CHAIN.LOAD          ; L{s av angiven chain-fil. 
            POP   AF 
            LD    B,A 
            CP    ";" 
            JR    Z L[NKAIN           ; Hoppa om inga optioner angvna. 
            AND   255-32              ; Klassificera optionen. 
            CP    "S" 
            JR    Z I.SOPT 
            CP    "U" 
            JR    Z I.SOPT 
            CP    "V" 
            JR    Z I.VER 
            LD    A,B 
            LD    (FELOPT),A 
            LD    HL,FELOPT.TXT 
            LD    BC,FELOPTE.TXT-FELOPT.TXT 
            JP    CONWRITE            ; \vr opt: Felmeddelande. 

I.VER:      LD    HL,VER.TXT 
            LD    BC,VERE.TXT-VER.TXT 
            JP    CONWRITE            ; Opt V: Visa fakta, ladda ej. 

I.SOPT:     LD    (SPR]K),A 

L[NKAIN:    LD    A,(SPR]K) 
            CP    "U" 
            JR    NZ L[NKACONS 
            LD    A,"a"               ; Gr{nser f|r alfabet a-z, i st f `-~. 
            LD    ($$GL]G+1),A 
            LD    A,"z"+1 
            LD    ($$GH\G+1),A 

L[NKACONS:  LD    HL,(CONSI+1)        ; L{nka in den nya CONSI-rutinen s} den 
            LD    (CONSRUT+1),HL      ; ligger "|ver" den gamla. 
            LD    HL,CONSRUT 
            LD    (CONSI+1),HL 
            LD    HL,INIT             ; Skydda minnesarean programmet ligger i 
            LD    (Y.BOTM),HL 
            LD    (Y.COMTOP),HL 
            RET 

            DEFB  255 
            DEFM  "PARM:Spr}k: Svenska (S) eller USA (U)?" 
            DEFB  0,4,"S","U",1       ; Typ: Tecken "S"-"U". 
SPR]K:      DEFB  "S"                 ; Optionsinsamling. S=Svenska, U=USA. 
OPTION:     DEFB  " "                 ; Tillf{llig lagring av optionstecknet. 

VER.TXT:    DEFM  "CAPSONLY Ver 1.00, Av Kristoffer Eriksson, Juni 1986." 
            DEFB  13,10 
            DEFM  "Syntax: RUN CAPSONLY (,(-)optioner) (;chainfil)" 
            DEFB  13,10 
            DEFM  "Optioner: V (visa version), S (svenska), U (usa)." 
            DEFB  13,10 
            DEFM  "Konverterar all inskriven text till versaler." 
            DEFB  13,10 
VERE.TXT: 
FELOPT.TXT: DEFM  "Ok{nd option: '" 
FELOPT:     DEFM  " '. Kolla info med RUN CAPSONLY,V" 
            DEFB  13,10 
FELOPTE.TXT: 

            INCLUDE CLINEPAR           ; Kommandoradsparameterrutiner 
            INCLUDE ENDINIT            ; Chainfilnamnshantering 
            INCLUDE ENDREL             ; Avsluta med ev CHAIN. 
