include 'gsos.equ' include 'fst.macros' entry entry, startup, open, close, read, write, flush, status, control, shutdown ;entry open_flag, ss_count, status_word string asis header proc if not BootDriver then dc.w dib-header dc.w 1 ; 1 device dc.w 0 ; no config list endif dib dc.l 0 ;Link pointer to next DIB dc.l entry ;Entry pointer dc.w %0000111111100000 ;Characteristics dc.l 0 ;Block count str.b 'HOST' ;Device name with length dcb.b 32-5,$20 dc.w $8007 ;Slot number dc.w 1 ;Unit number dc.w $1000 ;Version number dc.w $0010 ;ID # file server dc.w 0 ;No header link dc.w 0 ;No forward link dc.l 0 ;extended dib ptr dc.w 0 ;Device number endp entry proc longa on longi on phb ;Save the GS/OS bank register phk plb cmp #8+1 ;Max command number bcc @dispatch lda #drvr_bad_req bra exit @dispatch asl a tax jsr (table,x) exit plb cmp #1 rtl table dc.w startup dc.w open dc.w read dc.w write dc.w close dc.w status dc.w control dc.w flush dc.w shutdown endp data record export ss_count, open_flag, status_word ss_count dc.w 0 open_flag dc.w 0 ; copied via get_device_status status_word dc.w $0010 blocks dc.l 0 endr flush proc lda #no_error rts endp read proc with dev_parms ; todo - disk switch error logic.... stz dev_xfer_cnt stz dev_xfer_cnt+2 lda dev_req_cnt ora dev_req_cnt+2 beq exit lda #network_error exit rts endp write proc with dev_parms ; todo - disk switch error logic.... stz dev_xfer_cnt stz dev_xfer_cnt+2 lda dev_req_cnt ora dev_req_cnt+2 beq exit lda #network_error exit rts endp startup proc stz open_flag inc ss_count lda #no_error rts endp shutdown proc stz ss_count lda #no_error rts endp open proc lda #no_error rts endp close proc lda #no_error rts endp status proc with dev_parms lda