Robotrontechnik-Forum

Registrieren || Einloggen || Hilfe/FAQ || Suche || Mitglieder || Home || Statistik || Kalender || Admins Willkommen Gast! RSS

Robotrontechnik-Forum » Technische Diskussionen » Frage zu SCP nach Brosig auf dem Z1013 » Themenansicht

Autor Thread - Seiten: -1-
000
31.07.2016, 15:52 Uhr
Lötspitze



Mal eine Frage an die Z1013-Spezialisten: wird beim Starten des SCP ein Schreibbefehl auf die I/O-Adresse 04 (System-PIO=/IOSEL1) erzeugt? Ich habe eine FF-Schaltung (ähnlich der Petersplatine), wo die FlipFlops beim SCP-Start umschalten, obwohl sie das zu diesem Zeitpunkt gar nicht sollen. Beim Start anderer Programme passiert das nicht.

Matthias
--
___________________
...geboren, um zu löten.

Wer rennen soll, muß auch mal stolpern dürfen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
001
31.07.2016, 18:36 Uhr
Buebchen



Hallo Matthias!
Es ist zwar lange her, aber ich glaube mich erinnern zu können, das das so gewollt ist.
Hier; http://buebchen.jimdo.com/selbst-gebaut-diy-homebrew-feito-por-mim/z1013/
findest Du die Beschreibung zu Peters Platine. Ich hoffe das was Du suchst steht da drin. Weiter unten unter 64Zeichen-BS.
Habe eben dort nachgelesen. CPM Start schaltet den ROM ab und der Z1013 Läuft als RAMMaschine. Dazu sollte aber der Urlader-ROM gesteckt sein, damit die Laderoutine von Floppy angesprungen werden kann. Findest Du wohl auch dort. Ist wie gesagt lange her.
Wolfgang

Dieser Beitrag wurde am 31.07.2016 um 18:47 Uhr von Buebchen editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
002
01.08.2016, 08:53 Uhr
Lötspitze



Hallo Wolfgang und "Z1013er",

man kann daraus leider nicht herauslesen, ob das SCP automatisch beim Start z.B. auf die ROM-Abschaltung (D4) und den 2. Zeichensatz (D5) umschaltet. Bis jetzt bin ich immer davon ausgegangen, daß man das nach dem SCP-Start selbst umschalten muß.
Falls das doch im SCP schon drin steckt - wo wäre dann die Möglichkeit, das zu beeinflussen bzw. auszuschalten? Hat da jemand Erfahrungen/Kenntnis?

Matthias
--
___________________
...geboren, um zu löten.

Wer rennen soll, muß auch mal stolpern dürfen.

Dieser Beitrag wurde am 01.08.2016 um 08:59 Uhr von Lötspitze editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
003
01.08.2016, 09:09 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Hallo Matthias,
welche Version des SCP setzt Du ein?

In Version 5.(03)
steht

HWMODI EQU 4 ;LATCHADR. HARDWAREMODIFIK.
BOOT:
...
IN A,(HWMODI)
RES 5,A ;ZG1 EIN
OUT (HWMODI),A

WBOOT:
...
;ZELLENANFANGSBELEGUNG BEI KALT UND WARMSTART
;
ZANFB: IN A,(HWMODI)
OR 11010000B ;6 MHz, 64 Z/Z, ROM AUS
OUT (HWMODI),A ;HARDWARE MODIFIKATION
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
004
01.08.2016, 09:51 Uhr
Lötspitze



Hallo Volker,

ich schicke Dir gleich mal per Mail das SCP, was ich verwende.

VG Matthias
--
___________________
...geboren, um zu löten.

Wer rennen soll, muß auch mal stolpern dürfen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
005
01.08.2016, 10:14 Uhr
volkerp
Default Group and Edit
Avatar von volkerp

Das ist das SCP 2.40M von derTagungskassette Leipzig Mai 1989.

In der Anleitung dazu steht

"Auf DE3FH kann durch Eintragen einer 2 oder 4 die Taktfrequenz
des Rechners fuer 9600 bit/s angepasst werden, sofern diese
nicht durch das Ruecklesen des Bit 6 der IO-Adr. 4 erfolgen
kann (dann ist auf DE3FH eine 0 zu setzen)."

d.h. Port 4 wird voll beachtet. Ich nehme an, dass hier schon derselbe Code drinsteckt wie in der späteren Version 5, hab das aber auf die Schnelle nicht extra reassembliert.
--
VolkerP

http://hc-ddr.hucki.net
(Z9001, Z1013, LC-80, ...)
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
006
01.08.2016, 10:29 Uhr
Lötspitze



Ja, das mit DE3Fh hatte ich gelesen und bei mir ist dort eine 2 eingetragen.
Ich habe ja die BIOS-Quelldatei von dieser Version. Leider ist die nicht so umfangreich kommentiert. Aber vielleicht finde ich jetzt mit Deinen o.g. Programmschnipseln die Stelle, wo ich etwas anpassen kann.

Matthias
--
___________________
...geboren, um zu löten.

Wer rennen soll, muß auch mal stolpern dürfen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
007
01.08.2016, 18:54 Uhr
Lötspitze



Ich habe einen Schnipsel in der mir vorliegenden Quelle gefunden, wo ich das Problem vermute:


Quellcode:

BOOT:    LD    SP,80H
    IN    4
    SET    7,A
    OUT    4    ;64*16    
    XOR    A
    LD    (AKTLW),A
    LD    A,8
    LD    (TAPUF),A
    LD    DE,MT1
    CALL    OUT$    



Da ich abweichend zur Petersplatine keinen DL257-Ausgabepuffer der FlipFlops habe, wird wahrscheinlich beim Auslesen der I/O-Adresse 4 (IN 4) Fxh erfaßt, dann Bit 7 aktualisiert und alles wieder auf I/O 4 geschrieben (OUT 4). Dabei sind D4-D6 ungewollt High und die FF schalten um.
Da mich im Moment nur Bit 4 und 5 interessiert, würde ich zum ersten Test nach o.g. "SET 7,A" noch folgendes ergänzen: SET 4,0 und SET 5,0.
Das sollte doch funktionieren, oder?

Matthias

Edit: ich habe noch mal in die Assembler-Befehle geschaut und gehe davon aus, daß es eher RES 4,A und RES 5,A heißen muß, d.h. im Byte A werden Bit 4 und 5 zurückgesetzt auf Null. Bei UP "SAV1" muß das auch noch mal eingefügt werden.
--
___________________
...geboren, um zu löten.

Wer rennen soll, muß auch mal stolpern dürfen.

Dieser Beitrag wurde am 01.08.2016 um 19:57 Uhr von Lötspitze editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
008
01.08.2016, 20:36 Uhr
jmueller



Im JKCEMU-Debugger kannst du einen Haltepunkt auf die Ausgabeadresse 4 legen,
vorausgesetzt du kannst dein Z1013-SCP im Emulator laufen lassen.
Da siehst du dann ganz genau, wann und wo was ausgegeben wird.
Das im JKCEMU enthaltene Z1013-CP/M schreibt beim Booten
mehrmals was auf die IO-Adresse 4.

Jens
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
009
01.08.2016, 21:24 Uhr
Lötspitze



Ich habe jetzt unter UP "BOOT" und "SAV1" das RES 4,A sowie RES 5,A eingetragen. Das waren die zwei Stellen, wo ich in der Quelldatei OUT-Befehle auf Adresse 04h gefunden habe. Nun funktioniert es!
Ich hoffe, das bleibt so. Besten Dank an alle, die Tips und Anregungen gegeben haben.

Matthias
--
___________________
...geboren, um zu löten.

Wer rennen soll, muß auch mal stolpern dürfen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
010
01.08.2016, 21:30 Uhr
Alwin

Avatar von Alwin

Was bastelst du schonwieder schönes?
--
...Z1013, KC87, KC85/5, KC Compact, C64
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
011
26.02.2023, 12:53 Uhr
Lötspitze



Hallo miteinander,

ich habe mal wieder ein Problem mit dem SCP 2.40M und zwar bei der Umstellung auf eine BWS-Auflösung von 80x24 (mit Heikos BWS).
In den Quellen ist die Variable "SPALT" von 64 (dieses SCP funktioniert 1A) auf 80 umgestellt und auch den BWS-Speicher habe ich nun um die 128 Byte gekürzt, die bei 80x24 weniger gebraucht werden als bei 64x32, d.h. neu jetzt E800h-EF7Fh (ich dachte, ggf. kommt das Problem daher). Funktioniert aber immer noch nicht. Beim ENTER drücken werden immer im Wechsel 3x 16 Spalten ausgegeben und danach 1x 80 Spalten.
Hat jemand eine Idee, an was das liegen könnte? Ich habe in den Quellen nichts weiter gefunden, was man umstellen müßte. Aber ggf. habe ich auch etwas übersehen.

VG Matthias
--
___________________
...geboren, um zu löten.

Wer rennen soll, muß auch mal stolpern dürfen.

Dieser Beitrag wurde am 26.02.2023 um 12:53 Uhr von Lötspitze editiert.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
012
26.02.2023, 19:08 Uhr
KC_Freund



Hallo Matthias

Hatte bei meinen Änderungen am Monitor des Z1013 2.02 genau auch
dieses Problem. Es liegt daran wie in der Bildausgabe der Zeilenanfang ermittelt wird.

czlcr: push HL ;18h Zeile ab Cursor loeschen + CR
ld A,L
and BWSAZ
ld L,A
ld (curso),HL

BWSAZ muss für 32(20H) Zeilen 0xC0H und für 64(40H) Zeilen 0xE0H sein. Diese Methode
zur Ermittlung des Zeilenanfangs ist für 80(50H) Zeilen nicht anwendbar.

Viele Grüße

Tino
--
Fremdwörter sind mein Tresor, da kann mir keiner imprägnieren - ich habe immerhin 3 Sylvester an der Humbug-Nervosität storniert! Von meinem Wissen können noch Generatoren profilieren!
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
013
26.02.2023, 20:34 Uhr
Lötspitze



Guten Abend Tino,

na das ist doch schon mal ein Anfang. Ich bin leider nicht der große Assembler-Programmierer. Könntest Du mir deshalb bitte erklären, was BWSAZ ist und wo die Werte 0xC0h und 0xE0h herkommen bzw. auf welche Art und Weise sie der unterschiedlichen Spaltenanzahl zugeordnet wurden?

Im SCP werden hier ja auch Werte definiert, u.a. 0x0Dh für CR und 0x0Ah für LF:


Quellcode:
KTAB:    DB    8    ;BACKSTEP
    DB    9    ;CURSOR RECHTS
    DB    0CH    ;CLS
    DB    16H    ;LOESCHEN ZEILENREST
    DB    18H    ;LOESCHEN ZEILE,CURSOR ANF.Z.
    DB    1AH    ;CURSOR NACH OBEN
    DB    14H    ;LOESCHEN BILDSCHIRMREST
    DB    82H    ;KURSOR EIN
    DB    83H    ;KURSOR AUS
    DB    0DH    ;CR
    DB    0AH    ;LF
    DB    1    ;CURSOR LINKS OBEN
    DB    7    ;BEEP
    DB    15H    ;CURSOR RECHTS
    DB    84H    ;ZEICHEN NORMAL
    DB    85H    ;ZEICHEN INVERS
    DB    86H    ;ZEICHEN INTENSIV
    DB    87H    ;ZEICHEN INTENSIV INVERS




Verwendet wird das (0Ch, 0Dh und 0Ah) u.a. bei der Ausschrift während des SCP-Kaltstarts:


Quellcode:
;KALTSTART
;
MT1:    DB    0CH,0DH,0AH,0AH
    DB    ' CP/M 2.2 Z1013 IG-HC',0DH,0AH,0AH
    DB    ' mit 2*256K RAM-Floppy V. 2.4',0DH,0AH,0AH,0AH
    DB    'RAM-Floppy loeschen? (K)',0DH,0AH
    DB    'RAM-Floppy laden?    (L) :',0
MT2:    DB    0DH,0AH,'A oder B ? :',0
MT3:    DB    0DH,0AH,0AH,'weiter mit CP/M? (N)',0
MT4:    DB    0DH,0AH,0AH,'RAM-Floppy laden? (Y)',0
MT5:    DB    0DH,0AH,0AH,'RAM-Floppy saven? (Y)',0
MT6:    DB    0DH,0AH,0AH



Auch das funktioniert dann aber bei 80x24 schon nicht mehr richtig. Die Ausschriften sind nicht mehr am linken Bildrand wie bei 64x32.

Nun noch mal der gesamte Ausschnitt der Cursor-Steuerung. Ich denke, irgendwo hier liegt das Problem:


Quellcode:
;ZEICHEN VON TASTATUR <A>
;
CONIN:    CALL    CHIT
    RST    20H
    DB    1
    PUSH    AF
    CALL    CHTI
    POP    AF
    RET
;
;CHANGE AKTLWE/TAPUF
;
CHIT:    LD    A,(AKTLW)
    LD    (IOBPF),A
    LD    A,(TAPUF)
CHRET:    LD    (AKTLW),A
    RET
;
CHTI:    LD    A,(AKTLW)
    LD    (TAPUF),A
    LD    A,(IOBPF)
    JR    CHRET
;
;ZEICHEN AUF BILDSCHIRM <C>
;
COOUT:    PUSH    AF
    PUSH    HL
    PUSH    BC
    PUSH    DE
    CALL    ZAG
    POP    DE
    POP    BC
    POP    HL
    POP    AF
    RET
;
ZAG:    LD    A,(MLZBS)    ;MERKE LETZTES ZEICHEN
    CP    1BH
    JP    Z,ANKXY
    LD    A,1BH
    CP    C
    JP    Z,MESC
    LD    A,C
    OR    A
    RET    Z
    CP    88H
    JR    C,ZAG5
    AND    7FH
ZAG5:    LD    HL,KTAB
    LD    BC,LKTAB-KTAB    ;Laenge
    CPIR        ;SUCHEN NACH ST.-ZEICHEN
    JR    NZ,ZAG1
    DEC    HL
    LD    BC,KTAB
    AND    A    ;CY=0
    SBC    HL,BC
    SLA    L
    LD    BC,FTAB
    ADD    HL,BC
    LD    C,(HL)
    INC    HL
    LD    H,(HL)
    LD    L,C
    JP    (HL)

KTAB:    DB    8    ;BACKSTEP
    DB    9    ;CURSOR RECHTS
    DB    0CH    ;CLS
    DB    16H    ;LOESCHEN ZEILENREST
    DB    18H    ;LOESCHEN ZEILE,CURSOR ANF.Z.
    DB    1AH    ;CURSOR NACH OBEN
    DB    14H    ;LOESCHEN BILDSCHIRMREST
    DB    82H    ;KURSOR EIN
    DB    83H    ;KURSOR AUS
    DB    0DH    ;CR
    DB    0AH    ;LF
    DB    1    ;CURSOR LINKS OBEN
    DB    7    ;BEEP
    DB    15H    ;CURSOR RECHTS
    DB    84H    ;ZEICHEN NORMAL
    DB    85H    ;ZEICHEN INVERS
    DB    86H    ;ZEICHEN INTENSIV
    DB    87H    ;ZEICHEN INTENSIV INVERS
LKTAB:    
FTAB:    DW    BSTP
    DW    CURR
    DW    CLS
    DW    DELLN
    DW    INSLN
    DW    ZRET
    DW    CLCU
    DW    CZSET
    DW    PUABL
    DW    CR
    DW    OUTLF
    DW    CHOME
    DW    BEEPA
    DW    CURR
    DW    NORM
    DW    INV
    DW    ND
    DW    ND    
;
;AUSGABE ZEICHEN <> STEUERET ZEICHEN
;
ZAG1:    AND    7FH
    LD    HL,(CURSR)
    PUSH    AF
    LD    A,(MINV)
    LD    B,A
    POP    AF
    OR    B    ;INVERS, WENN 80H
    LD    M,A
    INC    HL
    EX    DE,HL
    LD    HL,BWSE+1
    XOR    A
    SBC    HL,DE
    EX    DE,HL
    JR    NZ,ZAG2
ZAG3:    LD    DE,BWSA
    LD    HL,BWSA+SPALT
    LD    BC,BWSE-BWSA+1-SPALT
    LDIR
    PUSH    DE
    POP    HL
    PUSH    HL
    INC    DE
    LD    (HL),' '
    LD    BC,SPALT-1
    LDIR
    LD    HL,(SOIL)
    LD    DE,SPALT
    XOR    A
    SBC    HL,DE
    LD    (SOIL),HL
    POP    HL
ZAG2:    LD    A,(HL)
    LD    (CZSP),A
    LD    (HL),0FFH
    LD    (CURSR),HL
ND:    RET
;
;BACKSTEP
BSTP:    CALL    PUABL
    DEC    HL
    JR    ZAG2
;
;CURSOR RECHTS
CURR:    CALL    PUABL
    INC    HL
    LD    DE,BWSE
    EX    DE,HL
    OR    A
    SBC    HL,DE
    EX    DE,HL
    LD    A,' '
    JP    C,ZAG1
    JR    ZAG2    
;
;BS-LOESCHEN
CLS:    LD    HL,BWSA
    LD    (HL),' '
    LD    BC,BWSE-BWSA
    LD    DE,BWSA+1
    LDIR
    LD    A,' '
    LD    (CZSP),A
    JP    CHOME    
;
;WAGENRUECKLAUF
CR:    LD    HL,(CURSR)
    LD    A,SPALT-1
    CPL
    AND    L
    LD    L,A
    JP    SETCU
;
;BEEP-AUSGABE
BEEPA:    LD    BC,0A040H    ;BEEP ARG.
    CALL    BEEP
    RET
;
;LINE-FEED
OUTLF:    LD    DE,BWSE
    LD    HL,(CURSR)
    LD    BC,SPALT
    ADD    HL,BC
    EX    DE,HL
    SBC    HL,DE    ;ENDE-NEUE
    EX    DE,HL
    JP    NC,SETCU
    CALL    PUABL    ;PUFFER AUFBLENDEN
    CALL    ZAG3
    RET
;
;CURSOR-HOME
CHOME:    LD    DE,BWSA
    LD    HL,(CURSR)
    OR    A
    SBC    HL,DE
    RET    Z
    EX    DE,HL
    JP    SETCU
;
;LOESCHEN BS AB CURSOR
CLCU:    LD    BC,(CURSR)
    LD    HL,BWSE
    SBC    HL,BC    ;HL:=ANZ.ZEICH.BIS BWS-ENDE
MDFAA:    LD    DE,1
    LD    A,' '
    LD    BC,(CURSR)
MDFB3:    LD    (BC),A
    INC    BC
    SBC    HL,DE
    JP    NZ,MDFB3
MDFBA:    LD    HL,(CURSR)
    LD    (HL),0FFH    ;CURSOR
    RET
;
;LOESCHEN ZEILE
DELLN:    LD    HL,(CURSR)
    LD    A,L
    AND    SPALT-1    ;A=SPALTENPOS.
    LD    B,A
    LD    A,SPALT-1
    SUB    B
    RET    Z
    LD    B,A    ;ANZ.BIS ENDE ZEILE    
    LD    A,' '
    LD    (CZSP),A
DELL1:    INC    HL
    LD    (HL),' '
    DJNZ    DELL1
    RET
;
;INSERT IN ZEILE
INSLN:    CALL    CR
    LD    A,(CZSP)
    LD    (HL),A
    LD    D,H
    LD    E,L
    INC    DE
    LD    BC,SPALT-1
    LDIR
    LD    HL,(CURSR)
    LD    (HL),0FFH
    LD    A,' '
    LD    (CZSP),A
    RET
;
ZRET:    LD    B,SPALT
ZR1:    PUSH    BC
    CALL    BSTP
    POP    BC
    DJNZ    ZR1
    RET
;
CZSET:    LD    A,0FFH
CZS1:    LD    HL,(CURSR)
    LD    (HL),A
    RET
;
PUABL:    LD    A,(CZSP)
    JR    CZS1
;
;
INV:    LD    A,80H
INV1:    LD    (MINV),A
    RET
;
NORM:    XOR    A
    JR    INV1
;    
;MERKE ESCAPE-ANKUENDIGUNG
MESC:    LD    A,C
    LD    (MLZBS),A
    RET
;
;CURSOR-DIREKT-POSITIONIERUNG
ANKXY:    LD    A,(MSEQU)
    CP    0FFH
    JP    Z,SETXY
    LD    A,0FFH
    LD    (MSEQU),A
    LD    A,C
    AND    5FH
    LD    (MZEIP),A
    RET
;
SETXY:    LD    A,C
    CP    3DH    ;ADM3A-TERMINAL
    RET    Z
    CP    59H
    RET    Z
    AND    7FH    
    LD    (MSPAP),A
    LD    C,A
    XOR    A
    LD    (MLZBS),A
    LD    (MSEQU),A
    LD    HL,BWSA
    LD    B,0
    ADD    HL,BC
    LD    A,(MZEIP)
    OR    A    ;ZEILE 0?
    JP    Z,SETCU
    LD    C,0
    LD    B,A
    LD    D,0
    LD    E,SPALT    ;SPALTENZAHL
ZINC:    ADD    HL,DE
    DJNZ    ZINC
SETCU:    PUSH    HL
    LD    DE,BWSE
    SCF
    SBC    HL,DE
    POP    HL
    JR    C,SETC1
    EX    DE,HL
SETC1:    LD    DE,(CURSR)
    LD    A,(CZSP)
    LD    (DE),A
    LD    A,M    ;VERDECKTES ZEICHEN
    LD    (CZSP),A
    LD    M,0FFH    ;NEUER CURSOR
    LD    (CURSR),HL
    RET
;
;AUSGABE NEUE ZEILE
NL:    PUSH    BC
    PUSH    AF
    LD    C,0DH
    CALL    COOUT
    LD    C,0AH
    CALL    COOUT
    POP    AF
    POP    BC
    RET
;


--
___________________
...geboren, um zu löten.

Wer rennen soll, muß auch mal stolpern dürfen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
014
27.02.2023, 09:40 Uhr
KC_Freund



Hallo Matthias

Ok ich versuch mal das zu erklären, bin aber darin auch nicht so gut.

Was wird bei der ZAG ausgeführt wenn ein Enter eingegeben wird. (das Zeichen ist 0DH).

;WAGENRUECKLAUF 64 Spalten
CR: LD HL,(CURSR) ;zum Bsp EE5F
LD A,SPALT-1 ;wäre für 64 spalten dann 63 = 03FH
CPL ;ergibt 0C0H
AND L ;5FH AND C0H ergibt 01011111 AND 11000000 ---> 01000000 = 40H
LD L,A ;in HL steht dann der Zeielnanfang EE40H
JP SETCU:

Bei einem 64 Spaltensystem und der Anfangsadresse E800 sind die Zeilenanfänge immer um 40H weiter

E800 Anfang erste Zeilenanfänge
E840 2.
E880 3.
E8C0 4.
E900 5.
E940 usw.
EFC0 letzte.

versuchen wir das mal mit 80 Spalten

;WAGENRUECKLAUF 80 Spalten
CR: LD HL,(CURSR) ;zum Bsp EA5F
LD A,SPALT-1 ;wäre für 80 spalten dann 79 = 04FH
CPL ;ergibt 0B0H
AND L ;5FH AND C0H ergibt 01011111 AND 10110000 ---> 01000000 = 90H
LD L,A ;in HL steht dann der Zeielnanfang EA90H --> ist aber kein Zeilenanfang sondern mittendrin in der Zeile
JP SETCU:

Bei einem 80 Spaltensystem und der Anfangsadresse E800 sind die Zeilenanfänge immer um 50H weiter

E800 Anfang erste Zeilenanfänge
E850 2.
E8A0 3.
E900 4.
E950 5.
E9A0 usw.


Meine angewendete Lösung:

Ich speichere nicht nur die cursor Position sondern auch immer die aktuelle Spalte.

Für den Z1013-2.02 Monitor sieht das ganze dann so aus:

AZ: EQU 0002DH ;aktuelle Zeile
AS: EQU 0002EH ;aktuelle Spalte

;-------------------------------------------------------------------------------
;Ausgabe Zeichen auf Bildschirm
;-------------------------------------------------------------------------------
;
; Zeichenausgabe f. PRST7: Reset Bit 7
OUT0: AND A, 7FH
; Zeichenausgabe
OUTCH: push af
push bc
push de
PUSH HL
LD HL,(CUPOS)
PUSH AF
LD A,(BUFFA) ;Zeichen unter Cursor
LD (HL),A ;zurueckschreiben
POP AF
CP A, CR ;neue Zeile?
JR Z, OUT8
CP A, CLS ;Bildschirm loeschen?
JP Z, OUT10
CP A, 8 ;Cursor links?
JR Z, OUT7
CP A, 9 ;Cursor rechts?
JR Z, OUT2
LD (HL),A ;sonst Zeichen in BWS
OUT2: INC HL <---------------------------------hier
LD A,(AS)
INC A
cp 50h
JR NZ, OUT21
xor A
OUT21: LD (AS),A ;<--------------------------------hier
;
OUT3: EX DE,HL
LD HL,(WINDE)
XOR A ;Test, ob neue Cursor-
SBC HL,DE ;position schon
EX DE,HL ;ausserhalb Window
JR NZ, OUT6 ;nein
;
LD DE,(WINDA) ;scrollen um
LD HL,BWSCOL ;eine Zeile im Window
ADD HL,DE
LD BC,(WINDL) ;Windowlaenge
LD A,B
OR C ;=0?
JR Z, OUT5 ;ja --> kein Scrollen
LDIR
OUT5: PUSH DE ;letzte Zeile loeschen
POP HL
PUSH HL
INC DE
LD (HL),' '
LD BC,BWSCOL-1
LDIR
;
LD HL,(SOIL) ;SOIL um eine Zeile
LD DE,BWSCOL ;erhoehen
XOR A
SBC HL,DE
LD (SOIL),HL
POP HL
;
OUT6: LD A,(HL) ;Zeichen unter Cursor
LD (BUFFA),A ;sichern
LD (HL),0FFH ;Cursor setzen
LD (CUPOS),HL
POP HL
POP DE
POP BC
POP AF
RET
;Cursor links
OUT7: DEC HL
LD A,(AS) ;<---------------------------hier
DEC A
cp 0FFH
JR NZ,OUT71
LD A,4Fh
OUT71: LD (AS),A ;<---------------------------hier
JR OUT3
;neue Zeile
OUT8: LD A,(AS) ;<---------------------------hier
LD C,A
xor A
LD (AS),A
LD A,L
SUB C
ADD A, BWSCOL ;A=NWB der Position
LD C,A ;eine Zeile tiefer
OUT9: LD (HL),' ' ;Rest der Zeile ab
INC HL ;ENTER loeschen
LD A,L
CP A, C
JR NZ, OUT9
JR OUT3
;
;Window loeschen
OUT10: PUSH AF
XOR A
LD (AS),A ;Spalte zurücksetzen
POP AF
LD HL,(WINDL)
LD BC,BWSCOL-1
ADD HL,BC
PUSH HL
POP BC
LD HL,(WINDA)
PUSH HL
LD (HL),' '
PUSH HL
POP DE
INC DE
LDIR
POP HL
JR OUT6
;

Du kannst für erste Test's auch ZAG durch diesen Codeschnipsel ersetzen.

Viele Grüße
Tino
--
Fremdwörter sind mein Tresor, da kann mir keiner imprägnieren - ich habe immerhin 3 Sylvester an der Humbug-Nervosität storniert! Von meinem Wissen können noch Generatoren profilieren!
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
015
27.02.2023, 10:47 Uhr
KC_Freund



Hallo

Hab mich hier leicht vertan

Bei einem 80 Spaltensystem und der Anfangsadresse E800 sind die Zeilenanfänge immer um 50H weiter

E800 Anfang erste Zeilenanfänge
E850 2.
E8A0 3.
E900 4.
E950 5.
E9A0 usw.

RICHTIG IST

e800
e850
e8a0
e8f0
e940
e990 usw.

Grüße
Tino
--
Fremdwörter sind mein Tresor, da kann mir keiner imprägnieren - ich habe immerhin 3 Sylvester an der Humbug-Nervosität storniert! Von meinem Wissen können noch Generatoren profilieren!
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
016
03.03.2023, 22:11 Uhr
Lötspitze



Das SCP für die Auflösung 80x24 funktioniert jetzt. Besten Dank an alle, die Tips gegeben haben und speziell an Klaus (rowikla), der mir auf Basis des NANOS den entscheidenden Anstoß bzgl. der Codeänderung für die korrekte CR-Routine gegeben hat.

VG Matthias
--
___________________
...geboren, um zu löten.

Wer rennen soll, muß auch mal stolpern dürfen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
017
04.03.2023, 16:01 Uhr
KC_Freund



Hallo Matthias

Super, gratuliere dazu.
Wäre es möglich mir das mal zu kommen zu lassen. Möchte
ja auch dazu lernen.

VG

Tino
--
Fremdwörter sind mein Tresor, da kann mir keiner imprägnieren - ich habe immerhin 3 Sylvester an der Humbug-Nervosität storniert! Von meinem Wissen können noch Generatoren profilieren!
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
018
04.03.2023, 18:04 Uhr
Lötspitze



Hallo Tino,

hier ist mal der Vergleich der alten und neuen CR-Routine:


Quellcode:
;WAGENRUECKLAUF ALT
;CR:    LD    HL,(CURSR)
;    LD    A,SPALT-1
;    CPL
;    AND    L
;    LD    L,A
;    JP    SETCU
;
;**************************************************
;--- CR (0DH) - Cursor an Zeilenanfang --- NEU (Ursprung NANOS)
CR:    LD    DE,(CURSR)    ;CR war SCCR, Rest aus Wagenruecklauf
    ld    bc,SPALT            ;SPALT war ZLEN, Zeilenlaenge
        ld    hl,BWSE        ;BWSE war SCEND, BWS Ende, war BWSE-1
sccr1:    sbc    hl,bc        ;find the next lower or equal line start
        push    hl
        sbc    hl,de                ;is it the next lower or equal ?
        pop    hl
        jr    nc,sccr1
        inc    hl
    JP    SETCU




VG Matthias
--
___________________
...geboren, um zu löten.

Wer rennen soll, muß auch mal stolpern dürfen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
019
04.03.2023, 18:38 Uhr
KC_Freund



Hallo Matthias

Diese Methode scheint mir besser als meine
Spaltenzählerei. Weniger Code und effizienter.

Prima bringt mich auch wieder ein Stück weiter.

Danke Dir .

VG

Tino
--
Fremdwörter sind mein Tresor, da kann mir keiner imprägnieren - ich habe immerhin 3 Sylvester an der Humbug-Nervosität storniert! Von meinem Wissen können noch Generatoren profilieren!
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
020
05.03.2023, 12:19 Uhr
Lötspitze



Es bietet sich nun an, auch das CPA von Volker an die Auflösung 80x24 anzupassen. Die neue Include-Datei "con_8024hp.inc" steht schon in Anlehnung an die Änderungen im CP/M bzw. SCP. Allerdings funktioniert es nicht, weil es sich mit einer CONOUT-Routine im BDOS vom CPA beißt. Es sieht so aus, als ob die INC-Datei gar nicht richtig eingebunden wird (vielleicht ist das auch der Grund, warum die INC-Routine für 32x32 auch nicht funktioniert, sondern nur 64x32, was augenscheinlich identisch zur Grundeinstellung vom CPA ist - deshalb fällt das nicht auf).
Ich werde jetzt mal versuchen, die CPA-Routine CONOUT komplett auf die Routine COOUT inklusive des korrigierten CR aus der INC-Datei umzuleiten. Mal sehen, ob das was bringt.
Wer sich schon mal damit beschäftigt hat und helfen könnte, kann sich gern melden.

VG Matthias
--
___________________
...geboren, um zu löten.

Wer rennen soll, muß auch mal stolpern dürfen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
021
06.03.2023, 19:51 Uhr
KC_Freund



Hallo

Hab mal eine erste Anpassung der conout.inc für 24x80 gemacht.
wie man auf dem Bild sehen funktioniert das schon. Da Volker sein CPA
auf meinem basiert sollte es auch da funktioneren. Einfach ZAG durch conout.inc
ersetzen.



Quelltext conout.inc kann ich anbieten. Die Änderung basiert auf das einfügen der CR-Routine aus (018). Außerdem müssen alle Zeilenlängen von 40H auf 50H geändert.
Es darf auch nicht vergessen werden in der Coldstart-routine des CPA den Bildschirnmodus 24x80 einzustellen.

VG

Tino
--
Fremdwörter sind mein Tresor, da kann mir keiner imprägnieren - ich habe immerhin 3 Sylvester an der Humbug-Nervosität storniert! Von meinem Wissen können noch Generatoren profilieren!
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
022
06.03.2023, 22:25 Uhr
Lötspitze



Hallo Tino,

die ZAG geht bei mir schon über eine INC-Datei für den BWS. Dort muß ich dann auch die Einstellungen machen für die Auflösung, die I/O-Adresse des BWS usw.
In der Kaltstartroutine hatte ich keine Einstellung für 80x24 gefunden und deshalb einen Sprung zu INI/CLS des BWS in o.g. Include-Datei für 80x24 gemacht; kurz vor den ersten Ausschriften auf dem Bildschirm.

Wahrscheinlich habe ich aber ganz woanders das Problem. Nachdem keine meiner Anpassung eine Wirkung gezeigt hatte (auch nicht der o.g. Sprung zum CLS), bin ich stutzig gewurden und habe die neuerstellten Z80-Dateien mit den alten verglichen. Die sind bis auf´s letzte Byte identisch, was ja nicht sein kann. Ich habe in der CPA-Datei was angepaßt und auch in der INC u.a. die Änderung der BWS-Adresse. Da muß letztendlich was unterschiedliches rauskommen. Ich nutze den AS-Assembler mit einer WIN-Batch-Datei. Die Umwandlung in eine Z80-Datei erfolgt mit PERL.
(das SCP hatte ich dagegen mit M80MS/L80MS über den JKCEMU übersetzt und dort hat es ja funktioniert)

Ich muß jetzt erst einmal schauen, was beim Erstellen der Dateien über den AS schief läuft. Er hat zwar neue Z80-Dateien und die @Z1013 erzeugt, aber vorher die BIN nicht geändert und immer wieder die alte genommen. Das war mir leider nicht aufgefallen, weil ich die nicht weiter verwende.

VG Matthias
--
___________________
...geboren, um zu löten.

Wer rennen soll, muß auch mal stolpern dürfen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
023
06.03.2023, 23:33 Uhr
Lötspitze



BINGO - es läuft
Das Ganze hat mir keine Ruhe gelassen und ich habe noch mal den AS gecheckt. Da lag der Fehler. Jetzt noch mal neu assembliert und CPA funktioniert in 80x24:



VG Matthias
--
___________________
...geboren, um zu löten.

Wer rennen soll, muß auch mal stolpern dürfen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
024
07.03.2023, 09:23 Uhr
KC_Freund



Hallo Matthias

Schön das du es hinbekommen hast.
Mich würde mal interressieren ob bei dir jetzt auch der Filecommander(0.95k) läuft. Bei mir nicht. auf dem KC87 im 24x80 läuft er und ich dachte er sollte jetzt auch so auf dem Z1013 laufen. Muss mir dazu noch mal die Fc.ini anschauen
und wahrscheinlich anpassen, hatte sie direkt vom KC87 übernommen.

VG Tino
--
Fremdwörter sind mein Tresor, da kann mir keiner imprägnieren - ich habe immerhin 3 Sylvester an der Humbug-Nervosität storniert! Von meinem Wissen können noch Generatoren profilieren!
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
025
08.03.2023, 20:33 Uhr
Lötspitze



Hallo Tino,

die FC80.COM, die ich mir mal irgendwo mit heruntergeladen hatte, funktioniert auch nicht. Von "loschka" habe ich aber eine bekommen, die läuft:



VG Matthias
--
___________________
...geboren, um zu löten.

Wer rennen soll, muß auch mal stolpern dürfen.
Seitenanfang Seitenende
Profil || Private Nachricht || Suche Zitatantwort || Editieren || Löschen
Seiten: -1-     [ Technische Diskussionen ]  



Robotrontechnik-Forum

powered by ThWboard 3 Beta 2.84-php5
© by Paul Baecher & Felix Gonschorek