;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;:::::::::: F L O P P Y G A M E __ I N S T A L A T O R ::::::::::: ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;::::::::::::::::::::::::::: (c) 1991,Svatopluk Svec :::::::::::::::: ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ; soubor slouzi jako setup pro spousteni vicedilnych her na floppy disku ; prenese sytemove parametry jednotky A: do souboru xxxxx.com .Z80 ASEG ORG 100h BDOS EQU 5 RAM EQU 0D000H SYSD EQU 0EA37H ; drive No.0 A: - flag_byte MOTR EQU 0EA3BH ; rozbeh motoru SETL EQU 0EA3DH ; settling time KROK EQU 0EA3EH ; step time FDMMOTR EQU 075H FDMSETL EQU 073H FDMKROK EQU 072H CHSUM EQU 5 ; poÃet menenÙch parametru start: ld hl,MST ld de,RAMSTART ld bc,RAMEND - RAMSTART ldir jp RAMSTART MST: .phase RAM RAMSTART: ld de,uvod ld c,9 call 5 ; tisk zpravy ld a,(80h) or a jr nz,action ld de,jeste ld c,9 call 5 jp 0 action: ld hl,100h ld de,101h ld bc,RAM - 100h ld (hl),l ldir ; vymaz RAM call READ ; nahraj soubor call NAJDIF3 ; najdi misto pro setup call SETUP ; setup parametru call WRITE ; uloz soubor jp 0 CHANGTAB: DB 04Fh,069h,09Eh,0D9h,04Dh ; _tabulka pointru na zmeny CHANG80: DB 0CBh,008h,056h,023h,0CBh ; 80 stop CHANG40: DB 007h,010h,057h,000h,03Dh ; 40 stop ZEPTEJ: ; :::::::::::::: zepta se na delku overlayu,aby podle ni setup ::: ld a,(SYSD) ; flag mechaniky A: bit 0,a ; 40 stop ? ret nz ; nic nemusim,je to 80 stopa push ix push iy ld de,ZEPTMES ld c,9 call 5 ; zeptej se na velikost souboru ld c,1 call 5 ; precti znak and 5Fh ; toupper() cp "A" pop iy pop ix jr z,ZEPT5 ret ZEPT5: ld c,(iy+0) ld b,0 ld hl,(ORIGIN) add hl,bc ld a,(ix+0) ld (hl),a ret SETUP: ; ::::::::::::::: provede setup parametru ::::::::::: od HIER! ::::: ld a,(SYSD) ; flag mechaniky A: bit 0,a ; 40 stop ? jr z,SETUP40 ; ano SETUP80: ld ix,CHANG80 jr SETUP0 SETUP40: ld ix,CHANG40 SETUP0: ld iy,CHANGTAB ld hl,(ORIGIN) push hl ld b,CHSUM SETUP22: push bc ld a,(ix+0) ld b,0 ld c,(iy+0) ld hl,(ORIGIN) add hl,bc ld (hl),a inc ix inc iy pop bc djnz SETUP22 ; CHSUM zmen parametru call ZEPTEJ ; zeptej se na velikost overlayu pop hl push hl ld a,(SETL) ld bc,FDMSETL or a sbc hl,bc ld (hl),a ; SET SETTLING TIME pop hl ld a,(KROK) ld bc,FDMKROK or a sbc hl,bc ld (hl),a ; SET STEP TIME ld de,stred ; tisk zpravy ld c,9 call 5 ret NAJDIF3: ; ::::::::: najde sekvenci "O","V","R",F3 ld hl,100h ld bc,0CE00H ; zkoumam i oblast nul NAJDI1: ld a,"O" cpir ld a,b or c jr nz,NAJDI2 ; zatim neni konec ld de,neznam ld c,9 call 5 jp 0 NAJDI2: ld a,(hl) ; nasel "O" cp "V" jr nz,NAJDI1 inc hl ; nasel "OV" dec bc ld a,(hl) cp "R" jr nz,NAJDI1 inc hl ; nasel "OVR" dec bc ld a,(hl) cp 0F3h jr nz,NAJDI1 ld (ORIGIN),hl ; offset bran od ---> F3 <--- ret NAJDI0: db "OVR",0F3h ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: READ: ; ::::::::::::: nacte soubor .COM :::::::::::::::::::::::::::::: ld hl,82h ld de,FCB0 + 1 ld bc,8 READ1: ld a,(hl) cp "." + 1 jr c,READ10 ; mensi nez jmeno : o.k. ldi jr nz,READ1 READ10: ld de,FCB0 ld c,15 call 5 ; otevri zdroj cp 0FFh ; je tam vubec ten soubor ? jr nz,NACB0 ; je .. do roboty ! ld de,chyba ld c,9 call 5 jp 0 ; ::::::::::::::: nacist co nejvice bloku do memory :::::::::::::::: ; :: na adrese "fcb1" FCB souboru ze ktereho se ma nejvice nacist :: ; :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: FUCK: ld de,zacatek ld c,9 call 5 ret NACB0: ld bc,0 ; citac bloku na nulu ld de,100h ; first DMA -> DE NACB1: ; --loop nacitajici bloky,dokud neni all file nebo fullmem-- ld a,(ALL) or a ; doslo se minule na konec souboru ? jr nz,FUCK ; ano push bc push de ; uschovat DMA a citac bloku ld c,26 call 5 ; nastav DMA pro prenos ld c,20 ld de,FCB0 call 5 ; nacteni bloku ze souboru 'FCB1' pop de pop bc ; znovuzrozeni .. or a ; jsem uz na konci souboru ? jr z,NACB2 ; nejsem ld a,1 ld (ALL),a ; jsem -> set 'nacten cely' jr NACB1 ; a vratit se na zacatecni testy NACB2: ; jeste cely nacten neni : ld hl,80h add hl,de ex de,hl ; de /DMA/ += 80h inc bc ; ne,takze mohu v dalsim cyklu ld (BCHIER),bc ; uschov ho jr NACB1 ; nacist zase jeden blok / 128 bytu / ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;:::::::::::::::::::::::::::::::- 3. put co nejvice na disk d: -::::::::::: ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: WRITE: ld bc,(BCHIER) push bc ld hl,FCB0 + 12 ; nechci usera ld de,FCB0 + 13 ld bc,24 ; 8 znaku ld (hl),0 ldir ld de,FCB0 ld c,15 call 5 ; takze open fire pop bc ; koncime ... ld de,100h PUTB5: ; --- loop uklada bloky na disk,dokud neni citac /bc/ = 0 push de push bc ; ulozit citac a DMA ld c,26 call 5 ; set DMA ld de,FCB0 ld c,21 call 5 ; sekvencne ulozit z DMA na d: 1 blok pop bc pop de ld hl,80h add hl,de Š ex de,hl ; de += 80h dec bc ; blok -- ld a,b or c ; neni uz citac nulovy ? jr nz,PUTB5 ; neni,proto pokracuji dale :::::::::::::::::**** ld de,konec ld c,9 call 5 ret ;----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ---- BCHIER: dw 0 ZEPTMES: db 10,13," >maji .OVR soubory velikost vetsi,nez 32kB {kazdy sam}" db 10,13," > { lze zjistit programy cpm{rovnou} nebo power{size}}" db 10,13," >jestlize ano , stiskni 'A' , jinak stiskni cokoli jineho",7 db 36 uvod: db 10,13," xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" db 10,13," M FLOPPY_GAME_INSTALATOR v.2.01 M" db 10,13," M (c) 1992 Fucking brothers softwr. M" db 10,13," M unauthorised distributor MZXsoft M" db 10,13," M Unautorized copy se prikazuje ! M" db 10,13," MxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxM$" jeste: db 10,13,10,13,¢ funkce : nastaveni optimalnich casu " db 10,13," : setup fd_game_biosu na 40 nebo 80 stopou mechaniku." db 10,13," syntax : A0>gins [jmeno] , napr. A0>gins batman" db 10,13," users guide :" db 10,13," : pracuje pouze se soubory .COM,obsahujicimi fd_g_bios !" db 10,13," reference manual :" db 10,13," : program sice nefunguje pro dvojity krok,ale rutina " db 10,13," : pro dvojity krok je na konci fdd_loaderu umistnena,takze" dâ 10,13,¢  º stacé presmerovaô dvå volané singlå stepõ ná volané double." db 10,13," : casy a stopy plati pro mechaniku A: ,proto pote",10,13 db " : hru spoustej z teto mechaniky ! " dâ 10,13,¢ security call º vsechna autorska prava na tento program vlastni" db 10,13," : firma MZX-SOFTWARE , jakekoliv neopravnene rozsirovani" db 10,13," : bude proto prisne potrestano ! { budes si muset koupit" db 10,13," : jeden z jeho 'lidovych' programu za 'lidove' ceny... }" db 10,13,7,36 zacatek: db 10,13,10,13," >loading o.k.$" stred: db 10,13," >modifying o.k.$" konec: db 10,13," >putting o.k." ending: db 10,13," >vse je o.k.,takze : ES LIEBE ADOLF GAMESIST !!",10,13,7,36 neznam: dâ     10,13,¢   >tentï prograí neobsahujå fd_game_bioó !...",7,7,10,13,36 chyba: db 10,13,10,13," >chybne zadane jmeno !...",7,7,10,13,36 ORIGIN: dw 0 ALL: db 0 FCB0: db 0," COM",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 RAMEND: .dephase end