To może ktoś się pokusi o zrobienie "testera" który sprawdzi z jaką maszyną mamy do czynienia?
Test miałby polegać na sprawdzeniu banków (wolne/szybkie) oraz długości ramki, w efekcie czego dostajemy informację typu:
1 - 128k
2 - banki parzyste szybkie / nieparzyste wolne
3 - ilość taktów na ramkę = xxxxx
4 - prawdopodobnie Pentagon 128
albo
1 - 48k
2 - brak
3 - ilość taktów na ramkę = xxxxx
4 - prawdopodobnie ZX Spectrum 48/+
Nie wiem czy jest do sprawdzenia czy komputer posiada 2 ekrany. Pamiętam natomiast, że nie da się chyba wykryć obecności AY.
Kawałek kodu najlepiej jakby zwracał w jakimś bajcie (rejestrze) typ kompa, który można by sobie dopasować wg tabelki.
1 - ZX 48/+
2 - ZX 48/+ przerobiony na 128k
3 - ZX Spectrum 128k/+2
4 - ZX Spectrum 128k+2A/+3
5 - Timex TC2048
6 - Timex TC2128
7 - Pentagon 128
8 - ZS Scorion
itd.
Program niewątpliwie pomógł by w dostosowaniu swoich produkcji np. aby na każdym kompie efekt multikoloru czy na ramce wyświetlał się prawidłowo. Mam niby "gotowe rozwiązanie" napisane/dostosowane przez Yarka Adamskiego, ale nijak nie wiem o co tam chodzi i gdzie dostaję "odpowiedź" :p
Oto źródło (mam nadzieję, że mogę "zacytować").
BankTest:*L+
*M+
;banktest
*I ULATEST.GI
start EQU #8000
topbank EQU #D000
;#C000 nie mo§e byŤ, bo si‘ strony w banku 2 pokrywaj†
DEFB #03
DEFW bend-bbeg,start,#FFFF,#FFFF
ORG start
bbeg EQU $
JP ulaC
LD HL,goesup
LD DE,topbank
LD BC,ulaDe-ulaD
LDIR
JP topbank
ulaC ULATEST
DEFM "KONIEC"
goesup EQU $
ORG topbank
ulaD ULATEST
ulaDe EQU $
ORG $-topbank+goesup
bend EQU $
ULAtest:
*L+
;ULA type test for ZXVGS purposes
;Last modification: 2003-04-22 by Yarek
*L-
; doesn't recognize ZX48, TC2048 and Scorpion; also ZX128, +3
; checking for slow banks speed?
;030422 based on Float Spy (C) 2002 Ramsoft
;returns the same values as Float Spy by Ramsoft
;macro because ULA can be tested at #8000 and #C000 to detect slow banks
uttT68 EQU #0CB9 ;3257 TC2068 60Hz
utt48 EQU #0F27 ;3879 ZX Spectrum 48kB, TC2048, Scorpion slow
utt128 EQU #0F60 ;3936 ZX Spectrum 128kB, +2, +3
uttPen EQU #0F8B ;3979 Pentagon
uttSam EQU #15BC ;5564 Sam Coupé
uttSco EQU #1E52 ;7762 Scorpion in fast mode
ULATEST MACRO
;some math
uth@$YM EQU $ .AND. #FF00 ;current page
utt@$YM EQU uth@$YM+#0100 ;next page
uti@$YM EQU uth@$YM .SHR. 8 ;byte written to jump table
;setup
ut0@$YM DI
LD HL,utj@$YM
LD (utt@$YM+#00FF),HL ;write address to IM2 table
LD HL,ut1@$YM
LD (utj@$YM+1),HL ;set jump to first service
LD A,utt@$YM .SHR. 8
LD I,A
IM 2
LD BC,#0000 ;counter starts from 0
EI
HALT
INC BC
JR $-1 ;one label less
;jump to correct service
utj@$YM JP ut1@$YM
;first service sets the second service
;3 times INC BC is before EI because longer /INT in Sam
ut1@$YM LD HL,ut2@$YM
LD (utj@$YM+1),HL
INC BC
JR $+2
INC BC
JR $+2
INC BC
JR $+2
EI
RET
;second service stops counter
ut2@$YM POP HL
IM 1
EI
RET
ENDM
;
; End of file ULATEST.GI
;
W moim przypadku problemem jest niezrozumienie samego tekstu pod ów kompiler, który to niby rozumie. Ja operuję jeszcze na przyzwyczajeniach z GENS czy Prometheus i niektórych komend w ogóle nie łapię. Może ktoś pomoże?