Enterprise Forever  |  :HUN  |  Programozás  |  Topic: EXOS kompatibilis memória kezelés
Author Topic: EXOS kompatibilis memória kezelés  (Read 8662 times)« previous next »
Zozosoft
EP addict
*
Offline Offline

Hungary

Posts: 5629


OS:
Java Platform Micro Edition
Browser:
Opera 9.50 (Opera Mini 4.1.11355)


View Profile WWW
New Posts
« Reply #45 on: 2008.November.23. 14:06:38 »

Így már nem hibás, de nem igazán értem, mit csinál ez a pár sor...    ds_icon_rolleyes

BFF4 - Sorparaméter-tábla Z80-as címe

Ez kimásolja az EXOS LPT táblából a Status sor LPB-jét, a paletta szinek nélkül. Mivel nem csak maga a status sor van máshol,hanem a karakterkészlet is, így egyben a legegyszerübb.
Ami fontos: a program elején EXOS változó irással kapcsoljuk be a status sort, és gondoskodjunk arról,hogy legalább egy videó megszakitás lefusson, mire ehhez a másolós részhez érünk.
Különben nem biztos,hogy a nekünk szükséges érvényes status sor adatok lesznek ott.(Ezzel szívtam egy darabig,míg rájöttem Smiley
Logged


Enterprise Forever
« Reply #45 on: 2008.November.23. 14:06:38 »

 Logged

Povi
EP user
*
Offline Offline

Hungary

Posts: 391


OS:
Windows XP
Browser:
Firefox 3.0.4


View Profile WWW
New Posts
« Reply #46 on: 2008.November.23. 17:11:36 »

és gondoskodjunk arról,hogy legalább egy videó megszakitás lefusson, mire ehhez a másolós részhez érünk.
Magyarul: a másolós rész elé tegyek egy HALT-ot?
Logged

*** Speicherplatz zu klein

Zozosoft
EP addict
*
Offline Offline

Hungary

Posts: 5629


OS:
Java Platform Micro Edition
Browser:
Opera 9.50 (Opera Mini 4.1.11355)


View Profile WWW
New Posts
« Reply #47 on: 2008.November.23. 17:31:10 »

Magyarul: a másolós rész elé tegyek egy HALT-ot?
Ez pl egy jó megoldás
Logged


Povi
EP user
*
Offline Offline

Hungary

Posts: 391


OS:
Windows XP
Browser:
Firefox 3.0.4


View Profile WWW
New Posts
« Reply #48 on: 2008.November.23. 20:46:43 »

Ami fontos: a program elején EXOS változó irással kapcsoljuk be a status sort
Nekem az a tapasztalatom, hogy a NAP bekapcsolja magának a status sort, nekünk nem kell vele foglalkozni.
Logged

*** Speicherplatz zu klein

Ferro73
EP user
*
Offline Offline

Hungary

Posts: 317

OS:
Windows XP
Browser:
Firefox 2.0.0.9


View Profile
New Posts
« Reply #49 on: 2009.September.27. 18:23:45 »

Elolvastam de nem találtam olyan lehetöséget bár már láttam valamely formáit
Elképzelésem
   ld a,255
  out (0b2h),a
  ld hl,(0bf91h)     ;exos  alsó határ
  ld a,(0bf9eh)
  cp 0
  jp z,nincsoszt
  cp 255
  jp nz,nemrencers
 
  ld bc,hl  ;ex hl,bc ; push hl  pop bc
  ld hl,0
  ld de,8000h
  ldir
  ld a,255
  out (0b0h),a
mivel nem találtam utalást az exos mennyi és meik részét használja a 255-ös szegmensböl
gondolok a tape: disk: és egyéb átmeneti tárakra.
A fenn maradó helyen valahol csak elférne az LPT tábla és akkor felszabadul az FC szegmens
Mivel  a 0-3fff között ugy is Rom van a ZX gépeken igy nem fogja semmi zavarni a rendszer memoriát /FF,FD,FC,FE/

ha jól emlékszek akkor a 0.rom visszafejtése könyv a végén taglalja a rendszer szegmens terület használatát megvan valakinek ez a könyv, nem találtam teljes e-könnyvet.
« Last Edit: 2009.September.29. 05:59:46 by Ferro73 » Logged

Zozosoft
EP addict
*
Offline Offline

Hungary

Posts: 5629


OS:
Windows XP
Browser:
Firefox 3.5.3


View Profile WWW
New Posts
« Reply #50 on: 2009.September.29. 10:55:39 »

Elolvastam de nem találtam olyan lehetöséget bár már láttam valamely formáit
Elképzelésem
Az elképzelés jó, de a gyakorlati megvalósításban több hiba is van.
Quote
 ld a,255
  out (0b2h),a
  ld hl,(0bf91h)     ;exos  alsó határ
  ld a,(0bf9eh)
Pl ezek máshol vannak EXOS 2.0 alatt, így nem érdemes közvetlenül vájkálni az EXOS lelkivilágában
Quote
  ld bc,hl  ;ex hl,bc ; push hl  pop bc
  ld hl,0
  ld de,8000h
  ldir
Hiányzik az ellenőrzés, hogy elférünk-e?
Quote
  ld a,255
  out (0b0h),a
Az EXOS-nak is meg kell mondani a változást, különben pl Reset esetén az eredeti nullás lapot lapozza vissza, és kész az elszállás.
Quote
mivel nem találtam utalást az exos mennyi és meik részét használja a 255-ös szegmensböl
gondolok a tape: disk: és egyéb átmeneti tárakra.
Ez folyamatos változik! Ezért kell lefoglalni megosztott szegmensként, majd megmondani, hogy MI mennyit használunk (felhasználói határ beállítása).
Quote
A fenn maradó helyen valahol csak elférne az LPT tábla és akkor felszabadul az FC szegmens
Mivel  a 0-3fff között ugy is Rom van a ZX gépeken igy nem fogja semmi zavarni a rendszer memoriát /FF,FD,FC,FE/
Így van, ez az amit már megcsináltam a Spectrum átiratos betöltőmben már vagy 3 éve
Itt van kiemelve a lényeg:
Code
PRGSIZE:   EQU 0B00H ;a programunk méretéhez kell választani, de 10H-ra kerek legyen
               LD SP,100H
               LD HL,HIBA
               LD (0BFF8H),HL
               LD A,12
               OUT (191),A
               LD BC,100H+26
               LD D,0
               EXOS 16
               LD BC,100H+28
               LD D,255
               EXOS 16
               LD BC,100H+27
               LD D,0
               EXOS 16
               HALT
               LD HL,(0BFF4H)
               SET 6,H
               LD B,4
ELPT            SRL H
               RR L
               DJNZ ELPT
               LD A,L
               LD (ELPTL),A
               LD A,H
               OR 0C0H
               LD (ELPTH),A
               LD HL,(0BFF4H)
               LD DE,STATUS
               LD BC,8
               LDIR
               CALL VID
               JP NZ,HIBA
               LD A,C
               CP 255
               JP Z,HIBA
               LD (VIDS),A
               LD DE,0
               RRA
               RR D
               RRA
               RR D
               LD (VIDCIM1),DE
               EXOS 24
               LD A,C
               LD (P2S),A
               JP NZ,HIBA
               EXOS 24
               JR Z,OKEP3
               CP 7FH
               JP NZ,HIBA
               LD A,C
               LD (LPTS),A
               OUT (0B3H),A
               CP 0FCH
               JP C,HIBA
               LD DE,PRGSIZE+200*16
               EXOS 23
               JP NZ,HIBA
               DI
               IN A,(0B0H)
               LD (P0S),A
               LD (P3S),A
               LD DE,PRGSIZE
               LD (VIDCIM2),DE
               LD HL,0
               LD DE,0C000H
               LD BC,PRGSIZE-1
               LDIR
               IN A,(0B3H)
               OUT (0B0H),A
               LD (0BFFCH),A
               LD A,(P3S)
               OUT (0B3H),A
               LD A,(LPTS)
               JR NEMHIBA1
OKEP3           LD A,C
               LD (P3S),A
               OUT (0B3H),A
               CALL VID
               JR Z,NEMHIBA
               CP 7FH
               JP NZ,HIBA
               LD DE,200+16
               EXOS 23
               JP NZ,HIBA
               LD C,255
NEMHIBA         LD A,C
               LD (LPTS),A
NEMHIBA1        CALL LPT
               LD A,(VIDS)
               OUT (0B1H),A
               LD A,(P2S)
               OUT (0B2H),A
               XOR A
               LD DE,(VIDCIM2)
               LD HL,VIDCIM2+1
               RRD
               RLCA
               RLCA
               RLCA
               RLCA
               LD (LPTL),A
               OUT (82H),A
               OR 0C0H
               RRD
               LD (LPTH),A
               OUT (83H),A
               LD (VIDCIM2),DE
 
Az LPT létrehozás, ami mint lentebb említettem változik az eredeti SpV-ben közöltekhez képest, mivel nem fix helyen van, így kezelni kell a változó videócímeket.
Code
LPT:            LD DE,(VIDCIM2)
               LD HL,0
               RRA
               RR H
               RRA
               RR H
               ADD HL,DE
               LD (VIDCIM2),HL
LPT2:           LD A,(LPTS)
               OUT (0B1H),A
               LD A,192
               LD DE,(VIDCIM2)
               RES 7,D
               SET 6,D
               EXX
               LD DE,(VIDCIM1)
               LD IX,VIDCIM1
               LD HL,(VIDCIM2)
               RES 7,H
               SET 6,H
               INC HL
               INC HL
               INC HL
               INC HL
               LD BC,13
L1              EX AF,AF'
               EXX
               LD HL,LINE
               LD BC,16
               LDIR
               EXX
               LD (HL),E
               INC HL
               LD A,D
               RRA
               RRA
               RRA
               AND 3
               OR 18H
               OR (IX+1)
               LD (HL),A
               INC HL
               LD (HL),E
               INC HL
               LD (HL),D
               ADD HL,BC
               INC D
               LD A,D
               AND 7
               JR NZ,L2
               LD A,E
               ADD A,32
               LD E,A
               CCF
               SBC A,A
               AND 0F8H
               ADD A,D
               LD D,A
L2              EX AF,AF'
               DEC A
               JR NZ,L1
               EXX
               LD HL,SYNC
               LD BC,HOSSZ
               LDIR
               RET
LINE            DB 255,14H,15,2FH,0,0,0,0
TABL            DB 0,36,121,88,130,182,219,63
SYNC            DB 0F5H,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0
STATUS          DB 247,8,11,73H,0B8H,0FEH,0E9H,1,0,216,216,0,0,0,0,0
               DB 217,12H,63,0,0,0,0,0,0,0,0,0,0,0,0,0
               DB 253,16,63,0,0,0,0,0,0,0,0,0,0,0,0,0
               DB 252,16,6,63,0,0,0,0,0,0,0,0,0,0,0,0
               DB 255,90H,63,32,0,0,0,0,0,0,0,0,0,0,0,0
               DB 252,12H,6,63,0,0,0,0,0,0,0,0,0,0,0,0
               DB 207,13H,63,0,0,0,0,0,0,0,0,0,0,0,0,0
HOSSZ           EQU $-SYNC
 
Logged

Tags:
Enterprise Forever  |  :HUN  |  Programozás  |  Topic: EXOS kompatibilis memória kezelés

Powered by SMF 1.1.2 | SMF © 2006-2007, Simple Machines LLC
Seo4Smf v0.2 © Webmaster's Talks

Template made by Mr.Prise
Page created in 0.167 seconds with 23 queries.
Google visited last this page 2012.May.12. 12:49:59
Follow ep4ever_news on Twitter