Mimo że nie byłem na party uważam że Grey wykonał niesamowitą, niepojętą wręcz dla mnie pracę. To jest fenomenalne że udało się zebrać tak wielu ludzi, zorganizować tak duży event. Pełen szacunek z mojej strony i wielkie wyrazy uznania. Szkoda że nie miałem możliwości uczestniczyć w tym zlocie.
Pozostaje jeszcze sprawa AD6502 i ogromnego zamieszania jakie się w związku z tym wydarzeniem stało, i przyznam że miałem nic nie pisać bo nie mam jakby żadnego prawa do oceniania tego całego zamieszania jeżeli chodzi o demo AD6502, ale zauważyłem przez przypadek jedną rzecz, gdy oglądając to demo w momencie gdy dojdzie się do końca pierwszej strony dysku i pojawia się screen zoom-rotatorem i napisem "flip disk and start", i gdy np. nie zmienimy dyskietki (nadal zostanie w stacji strona A, co też uczyniłem przez swoją pomyłkę), demo czyta sektor 361, robi się czarny ekran i następuję totalna "zwiecha", bardzo mnie to zainteresowało i dlatego postanowiłem zajrzeć do kodu.
Wspominana część dema, tuż po wciśnięciu start wykonuje parę akcji, ale to co ważne załączam poniżej:
org $52BF
jsr $82a ; xBIOS_SET_DEFAULT_DEVICE
jmp $608
...
org $0608
LDA $00 ; [$00] = $33
CMP $00 ; [$00] = $33
BEQ $060A ; wait for VBL (own NMI routine do INC $00)
; back to Atari OS-ROM
SEI
LDA #$00
STA NMIEN ; [$D40E]
STA DMACTL ; [$D400]
STA IRQEN ; [$D20E]
STA $0BEA ; [$0BEA]
LDA #$FF
STA PORTB ; [$D301]
LDA #$00
STA SDMCTL ; [$022F]
LDA #$5F
STA VVBLKI ; [$0222]
LDA #$62
STA VVBLKD ; [$0224]
LDA #$E4
STA VVBLKI+1 ; [$0223]
STA VVBLKD+1 ; [$0225]
LDA #$40
STA NMIEN ; [$D40E]
CLI
LDA RTCLOK+2 ; [$14] = $67
CMP RTCLOK+2 ; [$14] = $67
BEQ $0641
LDX #$06 ; > file_name
LDY #$4C ; < file_name
JMP $0806 ; xBIOS_LOAD_FILE
...
org $64c
dta c'ARS2PRT3 '
i teraz zaczynając analizy kodu, jak widać gdy xBIOS_LOAD_FILE się nie uda (np. nie znajdzie na dyskietce pliku o nazwie "ARS2PRT3", demo pójdzie totalnie w krzaki, powrót z xBIOS_LOAD_FILE prowadzi donikąd, (bo to powrót z JMP $806).
Wynika z tego że koder założył że nie nastąpi żaden błąd odczytu i że w stacji znajdzie się odpowiednia dyskietka. Jeżeli się nie znajduje rozumiem że xBIOS_LOAD_FILE wraca (RTS) z kodem błędu, tyle że po JMP $806 nie ma gdzie wracać i demo idzie w krzaki.
A co się stanie jeżeli w trakcie xBIOS_LOAD_FILE nastąpi jakikolwiek inny błąd (CRC, BAD sector, SIO overrun, czy framming error?). XBIOS będzie próbował odczytu do skutku czy wróci z jakimś kodem błędu?
Przy realnym hardware jest to jak najbardziej możliwa sytuacja, nawet długość kabla czy leżący obok tel. komórkowy (EMI) czy inne urządzenie może mieć wpływ na transmisję po kablu SIO, nie mówię już o fizycznych problemach z nośnikiem.
Dlaczego o tym wszystkim pisze? Ponieważ uważam że mogło się stać coś nieprzewidzianego, nawet przy użyciu SIO2SD. I cały flame o to co się stało nie ma najmniejszego sensu.