Ebben a részben lehetne beszélgetni a cikkekhez kapcsolódva, észrevételeket tenni, megdícsérni a szerzőjét, stb., stb.

Pgyuri
Szerintem egyrészt akkoriban valószínűleg még nem voltak részletes tapasztalatok, hogy hogyan is hibásodnak meg a memóriák, hogyan is kéne tesztelni, másrészt itt szerintem csak arra törekedtek, hogy eldöntsék, 16-os vagy 48-as gép. (Tényleg 32K-s Spectrum konfig létezett? 16K-s gép plusz külső 16K-s bővítőre gondolok.) Két értékkel való tesztelésre úgy gondolhatták, az már tutira elégPgyuri írta: A 2-el és 1-el feltöltés milyen hibát szűrhet ki, miért elégedetthetett meg a programozó ezzel a megoldással ?
Kód: Egész kijelölése
;P1-en lévő RAM ellenőrzése és 0-val feltöltése.
;Eredmény: Z=0 lesz, ha hibátlan.
LC1FE: INC D ;nem működő szegmensek számának növelése
IN A,(0B1H) ;P1-en lévő szegmens száma A-ba
LD HL,0BED5H ;a vizsgálandó szegmens
CALL LC16A ;számának kiírása a képernyő
INC HL ;státuszsorába
CALL LC16A ;hexadecimális alakban
LD (0B909H),A ;szegmens száma, mint színkód
;a STATUS sor COL1 bájtjába
LD HL,4000H ;vizsgált szegmens P1-es kezdőcíme
LD BC,0C000H ;ROM0 P3-as kezdőcíme
LC214: LD A,(BC) ;átmásolás P3-ról
LD (HL),A ;P1-re
CP (HL) ;ellenőrzés
RET NZ ;hiba esetén visszatérés
CPL ;komplemens
LD (HL),A ;letárolás
INC HL ;címek
INC BC ;növelése
BIT 7,B ;cím vizsgálata
JR NZ,LC214 ;ugrás visza, ha még nincs
;vége a lapnak
;visszafelé haladva 0-val tölti fel a RAM-ot, és újra ellenőrzi a bájtokat.
LC220: DEC BC ;címek
DEC HL ;csökkentése
BIT 6,H ;ellenőrzött bájtok számának vizsgálata
RET Z ;visszatérés, ha a teljes szegmens hibátlan
LD A,(BC) ;ROM-ban lévő érték
ADD A,(HL) ;RAM-ban lévő érték hozzáadása,
;ami a ROM-beli érték komplemense
;hibátlan esetben az érték 255
INC A ;A növelése, hibátlan esetben A=0
LD (HL),A ;érték letárolása
RET NZ ;hibás RAM esetén visszatérés
JR LC220 ;feltöltés folytatása
Nem, mert a nem létező címekről általában 1-esek olvashatóak, ill. legtöbbször a döglött IC-kből is.Pgyuri írta: ha már ilyen "primitíven" gondolkoztak volna, akkor a 254, 255 magasan jobb lett volna
Én nem tudok semmilyen hw indokot, ami ennek értelmet adna.Nem lehet, hogy a %00000010 és a %00000001 érték olyan RAM IC-t vizsgál, ami valakiért kiemelt ?
Igen, itt lehetne pl. villogó keretszínnel jelezni a hibát, ahogy pl az EP esetén tették.Pgyuri írta: Valószínűleg a RAM hiba nem volt olyan gyakori, mert annyit se tettek meg, hogy megnézték, mi az a minimális érték, ami alatt felesleges bejelentkeztetni a Spectrumot.
Kód: Egész kijelölése
; ----------------------------
; THE 'INITIALIZATION' ROUTINE
; ----------------------------
; A holds $3F, HL holds $7FFF.
;; RAM-FILL
L0261: LD (HL),$01 ; fill location with 1 (null).
DEC HL ; decrement address.
CP H ; compare address high byte to $3F.
JR NZ,L0261 ; back, while higher, to RAM-FILL.
;; RAM-READ
L0267: INC HL ; address the next higher location.
DEC (HL) ; decrement to zero.
JR Z,L0267 ; back, if successful to RAM-READ.
; else we have encountered first unpopulated RAM location.
LD SP,HL ; initialize stack pointer at end.
Kód: Egész kijelölése
; -----------------------
; THE 'RAM CHECK' ROUTINE
; -----------------------
;
;
;; RAM-CHECK
L03CB: LD H,B ;
LD L,C ;
LD A,$3F ;
;; RAM-FILL
L03CF: LD (HL),$02 ;
DEC HL ;
CP H ;
JR NZ,L03CF ; to RAM-FILL
;; RAM-READ
L03D5: AND A ;
SBC HL,BC ;
ADD HL,BC ;
INC HL ;
JR NC,L03E2 ; to SET-TOP
DEC (HL) ;
JR Z,L03E2 ; to SET-TOP
DEC (HL) ;
JR Z,L03D5 ; to RAM-READ
;; SET-TOP
L03E2: LD ($4004),HL ; set system variable RAMTOP to first byte
; above the BASIC system area.