Welcome to Schneider / Amstrad CPC Forum. Please login or sign up.

28. April 2024, 00:37:00

Login with username, password and session length

Shoutbox

TFM

2024-04-08, 20:42:44
Happy Sonnenfinsternis!  :)

TFM

2024-01-15, 17:06:57
Momentan billige Farbbänder auf Ebay für PCW

Devilmarkus

2023-07-09, 10:37:40
Zweiter 👋😂🤣

TFM

2023-06-13, 14:21:49
Sommerloch!

TFM

2023-05-30, 17:00:20
Erster ;-)

Recent

Members
  • Total Members: 221
  • Latest: scorp73
Stats
  • Total Posts: 11,718
  • Total Topics: 1,341
  • Online today: 285
  • Online ever: 1,724
  • (16. January 2020, 00:18:45)
Users Online
Users: 0
Guests: 239
Total: 239

239 Guests, 0 Users

Mode 1 einstellen

Started by cpcman, 05. January 2024, 19:55:48

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

cpcman

Hallo,guten Tag.
Ich möchte bitte den Mode 1 einstellen mit Textausgabe.
Und den Screen $c000 selber bearbeiten mit Grafik und den Text.
Ich weiss jetzt nicht ob mir dann der Screen Mode 1 auch zur Verfügung steht für die freie Gestaltung.

Finde keine aufklärende Lösung bei FutureOs.
Ich habe Demos nur mit Mode 2.
Diese beiden Dinger geben mir keine aufklärende Lösung dafür.
---------------------
#EQU-API.DEU.txt
#OS-VAR.DEU.txt
---------------------
Gibt es dafür keine keine ausreichende Beschreibung im Tresor bei
Euch?

Danke.

-----------------------------------
ORG &8000

LS_INIT        ;Label bezeichnet Anfang des Programs

LD A,&82      ;Dieser Wert symbolisiert MODE 2 (siehe Bits 1 und 0)
                ;Beide ROMs sind eingeschalten (Bits 3 und 2)
LD (RAMCHAR),A ;Wert aus Register A in OS RAM-Variable RAMCHAR schreiben

LD B,&7F      ;Via Port &7Fxx ist das Gate-Array erreichbar

OUT (C),A      ;Wert aus Register A an Port in BC (=&7Fxx) schicken
                ;Damit auf MODE 2 und ROM Zeichensatz schalten

LD HL,S80X25 ;Zeiger auf OS Funktion S80X25 (im ROM A)
              ;Setzt Bildschirm auf 80 Zeichen und 25 Zeilen

CALL ROM_A  ;API aufrufen, um S80X25 (Register HL) in ROM A zu benutzen
              ;Nach dem Aufruf von "ROM_A" bleibt ROM A eingeblendet

LD IX,LESC  ;Die OS Funktion LESC loescht den Bildschirm schnell

CALL ROM_A2C ;OS ROM C einblenden, dort OS Funktion aus Register IX (LESC)
              ;aufrufen, und dann wieder OS ROM A einblenden

call scrmuster   
         
LS_LOOP_2
JP LS_LOOP_2             

;--------- Unterprogramme ---------

scrmuster:
ld hl,&c000
ld a,255
ld (hl),a

inc HL
ld a,0
ld (hl),a

inc HL
ld a,255
ld (hl),a

inc HL
ld a,0
ld (hl),a

inc HL
ld a,255
ld (hl),a
RET 
 
;Variablen des FutureOS System RAMs
RAMCHAR EQU &B847

;OS Funktionen in ROM A
S80X25 EQU &D60E

;OS Funktionen in ROM C
LESC EQU &C017

;Einspruenge ins API (Programmier-Schnittstelle)
ROM_A  EQU &FF00 ;OS ROM einblenden und OS Funktion aufrufen
ROM_D  EQU &FF12 ;
ROM_A2C EQU &FF2A ;OS ROM einblenden, OS Funktion aufrufen, altes ROM ein
---------------------------------------

TFM

#1
MODE 1 einstellen geht so:

LD  B,&7F      ;Gate Array
LD  A,&81      ;(ROM Zeichen) oder LD A,&85 (RAM Zeichensatz an, falls vorhanden!)
OUT (C),A      ;MODE 1 (mit oder ohne unterem ROM) einschalten
LD  (RAMCHAR),A ;und für das OS vermerken

RAMCHAR ist in #OS-VAR.DEU.txt erklärt und im Handbuch. Aber Danke für den Hinweis, die Erklärungen werde ich darin dann mal ausführlicher machen.

Werde mir Dein Programm mal ansehen...

EDIT:
Also erstmal Glückwunsch zu Deinem ersten FutureOS Programm. In MODE 2 läuft es perfekt.

Und um auf MODE 1 umzuschalten bitte einfach folgende Zeile:

LD A,&82      ;Dieser Wert symbolisiert MODE 2 (siehe Bits 1 und 0)

ersetzen durch:

LD A,&81      ;Dieser Wert symbolisiert MODE 1 (siehe Bits 1 und 0)
TFM of FutureSoft
http://www.futureos.de --> Das Betriebssystem FutureOS (Update: 20.12.2023)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 26.12.2021)

cpcman

#2
Beim diesem Programm habe ich die Linien-y 0-199 in eine Tabelle gelegt um diese abzurufen zu können.
Wir wissen ja das eine nächste Linie-y erst ab der nächsten 8. Zeile beginnt beim CPC. Hier kann man das gut gebrauchen um Grafiken schneller darzustellen. Alles läuft in Mode 2.
Meine Tabelle kann frei verwendet werden.

Als Demo habe ich oben links ein Viereck 1 Byte breit und 8 Byte hoch. Und  das noch einmal ganz unten links.

Ist auch gut zu verwenden für neue eigene Buchstaben.

Bei Mode 1 sind auch Farben da.
Muss nur mal schauen wie die jetzt dem Byte zugeordnet sind.

Danke.

-------------------------------------------
ORG &8000

LS_INIT        ;Label bezeichnet Anfang des Programs

LD  B,&7F      ;Gate Array
LD  A,&82      ;(ROM Zeichen)
OUT (C),A      ;MODE 2 (mit oder ohne unterem ROM) einschalten
LD  (RAMCHAR),A ;und für das OS vermerken

LD IX,LESC  ;Die OS Funktion LESC loescht den Bildschirm schnell
CALL ROM_A2C ;OS ROM C einblenden, dort OS Funktion aus Register IX (LESC)
              ;aufrufen, und dann wieder OS ROM A einblenden

call scr

LS_LOOP_2
JP LS_LOOP_2             

;--------- Unterprogramme ---------

scr:
ld hl,(linie)
ld a,255
ld (hl),a

ld hl,(linie+2)
ld a,129
ld (hl),a

ld hl,(linie+4)
ld a,129
ld (hl),a

ld hl,(linie+6)
ld a,129
ld (hl),a

ld hl,(linie+8)
ld a,129
ld (hl),a

ld hl,(linie+10)
ld a,129
ld (hl),a

ld hl,(linie+12)
ld a,129
ld (hl),a

ld hl,(linie+14)
ld a,255
ld (hl),a

;

ld hl,(linie+384)
ld a,255
ld (hl),a

ld hl,(linie+386)
ld a,129
ld (hl),a

ld hl,(linie+388)
ld a,129
ld (hl),a

ld hl,(linie+390)
ld a,129
ld (hl),a

ld hl,(linie+392)
ld a,129
ld (hl),a

ld hl,(linie+394)
ld a,129
ld (hl),a

ld hl,(linie+396)
ld a,129
ld (hl),a

ld hl,(linie+398)
ld a,255
ld (hl),a
RET 

linie:
defw &C000, &C800, &D000, &D800, &E000, &E800, &F000, &F800
defw &C050, &C850, &D050, &D850, &E050, &E850, &F050, &F850
defw &C0A0, &C8A0, &D0A0, &D8A0, &E0A0, &E8A0, &F0A0, &F8A0
defw &C0F0, &C8F0, &D0F0, &D8F0, &E0F0, &E8F0, &F0F0, &F8F0
defw &C140, &C940, &D140, &D940, &E140, &E940, &F140, &F940
defw &C190, &C990, &D190, &D990, &E190, &E990, &F190, &F990
defw &C1E0, &C9E0, &D1E0, &D9E0, &E1E0, &E9E0, &F1E0, &F9E0
defw &C230, &CA30, &D230, &DA30, &E230, &EA30, &F230, &FA30
defw &C280, &CA80, &D280, &DA80, &E280, &EA80, &F280, &FA80
defw &C2D0, &CAD0, &D2D0, &DAD0, &E2D0, &EAD0, &F2D0, &FAD0
defw &C320, &CB20, &D320, &DB20, &E320, &EB20, &F320, &FB20
defw &C370, &CB70, &D370, &DB70, &E370, &EB70, &F370, &FB70
defw &C3C0, &CBC0, &D3C0, &DBC0, &E3C0, &EBC0, &F3C0, &FBC0
defw &C410, &CC10, &D410, &DC10, &E410, &EC10, &F410, &FC10
defw &C460, &CC60, &D460, &DC60, &E460, &EC60, &F460, &FC60
defw &C4B0, &CCB0, &D4B0, &DCB0, &E4B0, &ECB0, &F4B0, &FCB0
defw &C500, &CD00, &D500, &DD00, &E500, &ED00, &F500, &FD00
defw &C550, &CD50, &D550, &DD50, &E550, &ED50, &F550, &FD50
defw &C5A0, &CDA0, &D5A0, &DDA0, &E5A0, &EDA0, &F5A0, &FDA0
defw &C5F0, &CDF0, &D5F0, &DDF0, &E5F0, &EDF0, &F5F0, &FDF0
defw &C640, &CE40, &D640, &DE40, &E640, &EE40, &F640, &FE40
defw &C690, &CE90, &D690, &DE90, &E690, &EE90, &F690, &FE90
defw &C6E0, &CEE0, &D6E0, &DEE0, &E6E0, &EEE0, &F6E0, &FEE0
defw &C730, &CF30, &D730, &DF30, &E730, &EF30, &F730, &FF30
defw &C780, &CF80, &D780, &DF80, &E780, &EF80, &F780, &FF80 
 
;Variablen des FutureOS System RAMs
RAMCHAR EQU &B847

;OS Funktionen in ROM C
LESC EQU &C017

;Einspruenge ins API (Programmier-Schnittstelle)
ROM_A2C EQU &FF2A ;OS ROM einblenden, OS Funktion aufrufen, altes ROM ein
-------------------------------------

TFM

Anstelle von diesen beiden Zeilen:

LS_LOOP_2
JP LS_LOOP_2


könntest Du auch folgendes machen:

 LD HL,WATA:CALL ROM_C ;Auf Tastendruck warten
 LD HL,TUR_E:JP ROM_D  ;Ins Desktop zurück springen

ROM_C EQU &FF0C
ROM_D EQU &FF12
WATA  EQU &FD38
TUR_E EQU &FE9D
TFM of FutureSoft
http://www.futureos.de --> Das Betriebssystem FutureOS (Update: 20.12.2023)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 26.12.2021)

cpcman

Hallo, danke für den Tipp.

Funktioniert wunderbar.