; Floppy boot segment


org 0 ; actually 7c00
start: jmp  start0
    nop


    db 'cmcf 1.0'
    dw 512     ; bytes/sector
    db 1       ; sector/cluster
    dw 1       ; sector reserved
    db 2       ; FATs
    dw 16*14   ; root directory entries
    dw 80*2*18 ; sectors
    db 0F0h    ; media

command  db 0
         db 0   ; head, drive
cylinder db 0
         db 0   ; head
         db 1   ; sector
ALIGN 4
nc dd 9 ; Forth+Icons+blocks 24-161
gdt dw 17h
    dd offset gdt0
ALIGN 8
gdt0 dw 0, 0, 0, 0
    dw 0FFFFh, 0, 9A00h, 0CFh ; code
    dw 0FFFFh, 0, 9200h, 0CFh ; data

; This code is in Real 16-bit mode

start0: mov  EAX, 4F02h ; Video mode
org $-2
    mov  EBX, vesa ; hp*vp rgb: 565
org $-2
    int  10h
    cli
    xor  AX, AX    ; Move code to 0
    mov  BX, AX
org $-2
loc: pop  ESI
    sub  ESI, offset loc-offset start
org $-2
    mov  ECX, 512/4


A20: mov  AL, 0d1h
    out  64h, AL
@@:     in   AL, 64h
        jnz  @b

    cmp  dword ptr [ESI], 44444444h ; Boot?
    jnz  cold
        mov  CX, 63*100h-80h ; Nope

us equ 1000/6
ms equ 1000*us
SPIN: mov  CL, 1ch
    call onoff




seekf: call flop ; c-c
;    call delay
    call seek
    mov  AL, 0fh
    mov  CL, 3
    call cmd
    call cmdi
    DROP
    ret


cmdf: mov  ECX, EAX ; an
    DROP
    lea  EDX, [EAX*4]
    call cmd0
    DROP
    ret


readyf: DUP_
    call ready
    DROP
    ret

