Session end : 11h59m40s | Hide picture Sexe : OFF | Donations 2024 : 855.48 € |
1 a$="3E01CD0EBC010000CD38BCAF060F48CD32BC3E01060A48CD32BC3E02061A48CD32BC3E03060048CD32BCCD44A02100C0062016010E11CD54A0CD03BBCD06BBC9"
2 b$="3CC007842143A0CDD4BC30072240A0793242A0C9C5D5E53A00A75FDF40A0E111000219D1C13E190CB920030E111410E4C9"
3 c$=a$+b$
4 b=LEN(c$)/2:FOR i=0 TO b-1:POKE &A000+i,VAL("&"+MID$(c$,1+i*2,2)):NEXT:CALL &A000
; parametres
SECTEUR_ID_FIRST EQU &11
SECTEUR_ID_LAST EQU &18
SECTEUR_SIZE EQU &200 ;512 octets
ORG &A000
LD A,1
CALL &BC0E ;MODE 1
LD BC,0
CALL &BC38 ;BORDER 0
XOR A
LD B,15
LD C,B
CALL &BC32 ;INK 0,15,15
LD A,1
LD B,10
LD C,B
CALL &BC32 ;INK 1,10,10
LD A,2
LD B,26
LD C,B
CALL &BC32 ;INK 2,26,26
LD A,3
LD B,0
LD C,B
CALL &BC32 ;INK 3,0,0
CALL MODULE_INIT
LD HL,&C000
LD B,32 ;32 secteurs a lire
LD D,1 ;piste de debut
LD C,&11 ;premier secteur
CALL MODULE_READ
CALL &BB03
CALL &BB06
RET
READ_ADDR DW &C03C ; Function address in ROM. Default = &C03C
READ_NBR DB 7 ; ROM number. Default = ROM 7
KL_COMMAND4 DB &84 ; Command number to read a sector
; -----------------------------------------------------------------------------
; Routine to initialize the module management functions
; -----------------------------------------------------------------------------
MODULE_INIT LD HL,KL_COMMAND4 ; Command to read a sector
CALL &BCD4 ; Finds the function in ROM
JR NC,MODULE_INIT_1 ; If vector fails, default values are kept
LD (READ_ADDR),HL ; Function ROM address saved
LD A,C
LD (READ_NBR),A ; ROM number saved
MODULE_INIT_1
RET
; -----------------------------------------------------------------------------
; Reads a module of B sectors in memory pointed by HL
; INPUT ; C = sector, D = track, HL = buffer pointer
; -----------------------------------------------------------------------------
MODULE_READ PUSH BC
PUSH DE
PUSH HL
LD A,(&A700) ; Lecteur courant
LD E,A ; E = lecteur
RST &18 ; LIRE SECTEUR
DW READ_ADDR
POP HL
LD DE,SECTEUR_SIZE
ADD HL,DE ; HL = HL + 512 octets
POP DE
POP BC
LD A,SECTEUR_ID_LAST+1
INC C ; Secteur suivant
CP C ; SI dernier secteur +1 alors premier secteur
JR NZ,MODULE_READ2 ; secteur = secteur + 1
LD C,SECTEUR_ID_FIRST
INC D
MODULE_READ2 DJNZ MODULE_READ
RET