Sprinter-Core/src/bios/exp/BIOS_FUNC.asm
2025-02-24 22:26:52 +10:00

786 lines
32 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;
MACRO _mNoDrive_5xTable numberOFdrives, byteOFword
IF byteOFword
DUP numberOFdrives
DB high FN_RESERVED_5x ;#50 - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB high FN_ABSENT_5x ;#51
DB high FN_ABSENT_5x ;#52
DB high FN_ABSENT_5x ;#53
DB high FN_ABSENT_5x ;#54
DB high FN_ABSENT_5x ;#55
DB high FN_ABSENT_5x ;#56
DB high FN_ABSENT_5x ;#57
DB high FN_ABSENT_5x ;#58
DB high FN_ABSENT_5x ;#59
DB high DRV_VERSION ;#5A - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB high FN_RESERVED_5x ;#5B - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB high FN_RESERVED_5x ;#5C - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB high FN_RESERVED_5x ;#5D - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB high FN_ABSENT_5x ;#5E
DB high DRV_LIST ;#5F - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
EDUP
ELSE
DUP numberOFdrives
DB low FN_RESERVED_5x ;#50 - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB low FN_ABSENT_5x ;#51
DB low FN_ABSENT_5x ;#52
DB low FN_ABSENT_5x ;#53
DB low FN_ABSENT_5x ;#54
DB low FN_ABSENT_5x ;#55
DB low FN_ABSENT_5x ;#56
DB low FN_ABSENT_5x ;#57
DB low FN_ABSENT_5x ;#58
DB low FN_ABSENT_5x ;#59
DB low DRV_VERSION ;#5A - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB low FN_RESERVED_5x ;#5B - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB low FN_RESERVED_5x ;#5C - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB low FN_RESERVED_5x ;#5D - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB low FN_RESERVED_5x ;#5E - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB low DRV_LIST ;#5F - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
EDUP
ENDIF
ENDM
;
_mInfoALIGN 256,0
;=========================================================[ MAIN TABLE ]
; !FIXIT ¯®¯à ¢¨âì ¢ ¤®ª¥ ­ §¢ ­¨ï ä㭪権, ç áâì ­¥ ᮢ¯ ¤ ¥â
TAB_FNS:
; 00 - #3F
DUP #40
DB low FN_RESERVED
EDUP
;
; #4x
;--------------
DB low FN_HDD_INIT ; #40 ˆ­¨æ¨ «¨§ æ¨ï ¢¨­ç¥áâ¥à 
DB low FN_HDD_RECAL ; #41 <20>¥ª «¨¡à®¢ª  ¢¨­ç¥áâ¥à 
DB low FN_HDD_TEST_IDE ; #42 ’¥áâ ­ «¨ç¨ï ¨­â¥àä¥©á  IDE
DB low FN_HDD_PREPARE ; #43 <20>®¤£®â®¢ª  ¢¨­ç¥áâ¥à  ª ®¯¥à æ¨¨ ç⥭¨ï/§ ¯¨á¨
DB low FN_HDD_READ_BPB ; #44 —¨â âì BPB ¯¥à¢®£® à §¤¥« 
DB low FN_HDD_READ ; #45 —¨â âì ᥪâ®à  á ¢¨­ç¥áâ¥à 
DB low FN_HDD_WRITE ; #46 <20>¨á âì ᥪâ®à  ­  ¢¨­ç¥áâ¥à
DB low FN_HDD_PART ; #47 set IDE number (<28> áâனª  ¯ àâ¨æ¨© ¨ master/slave)???
DB low FN_HDD_READ_NEXT ; #48 —¨â âì á«¥¤ãî騩 ᥪâ®à (ONLY FOR LBA!)
DB low FN_RESERVED ; #49
DB low FN_RESERVED ; #4A
DB low FN_RESERVED ; #4B
DB low FN_RESERVED ; #4C
DB low FN_RESERVED ; #4D
DB low FN_RESERVED ; #4E
DB low FN_RESERVED ; #4F
;--------------
;
; 5x
;--------------
DB low FN_RESERVED_5x ;#50
DB low FN_5x_Parser_1 ;#51 - Reset drive
DB low FN_5x_Parser_2 ;#52 - Long read
DB low FN_5x_Parser_3 ;#53 - Long write
DB low FN_5x_Parser_4 ;#54 - Verify sectors
DB low FN_5x_Parser_5 ;#55 - Read sectors
DB low FN_5x_Parser_6 ;#56 - Write sectors
DB low FN_5x_Parser_7 ;#57 - Detect
DB low FN_5x_Parser_8 ;#58 - Get Media parameters
DB low FN_5x_Parser_9 ;#59 - Set Media parameters
DB low DRV_VERSION ;#5A - Version number
DB low FN_RESERVED_5x ;#5B
DB low FN_RESERVED_5x ;#5C
DB low FN_RESERVED_5x ;#5D
DB low FN_5x_Parser_E ;#5E
DB low DRV_LIST ;#5F
;--------------
; 60 - #7F
DUP #20
DB low FN_RESERVED
EDUP
; 8x
DB low LP_OPEN_S ; #80 ®âªàë⨥ ®ª­ 
DB low LP_PRINT_ALL ; #81 ¯¥ç âì ᨬ¢®«  ¢ ®ª­®
DB low LP_PRINT_SYM ; #82 ¯¥ç âì ᨬ¢®«  ¡¥§  âà
DB low LP_PRINT_ATR ; #83 ¯¥ç âì ⮫쪮  âਡãâ 
DB low LP_SET_PLACE ; #84 ãáâ ­®¢ª  ¯®§¨æ¨¨ ¯¥ç â¨
DB low LP_PRINT_LINE ; #85 ¯¥ç âì áâப¨ ¤«¨­®© B
DB low LP_PRINT_LINE2 ; #86 ¯¥ç âì áâப¨ -//- ¡¥§  âਡã⮢
DB low LP_PRINT_LINE3 ; #87 ¯¥ç âì áâப¨ ¤«¨­®© B ¤® D
DB low LP_PRINT_LINE4 ; #88 ¯¥ç âì áâப¨ -//- ¡¥§  âਡã⮢
DB low LP_CLS_WIN ; #89
DB low LP_SCROLL_UD ; #8A
DB low LP_PRINT_LINE5 ; #8B
DB low LP_PRINT_LINE6 ; #8C
DB low LP_CLS_WIN2 ; #8D
DB low LP_GET_PLACE ; #8E
DB low FN_TURBO ; #8F
; 9x
DB low EMM.GetMemSize ; #90 ­¥à §àãè î饥 ®¯à¥¤¥«¥­¨¥ ®¡ê¥¬  އ“.
DB low EMM.InitMem ; #91 ¨­¨æ¨ «¨§ æ¨ï à á¯à¥¤¥«¥­¨ï ¯ ¬ïâ¨
DB low EMM.GetMemRMD ; #92 ¯®«ãç¨âì ¡«®ª ¯ ¬ï⨠¤«ï à ¬¤¨áª 
DB low EMM.FreeMemRMD ; #93 ®á¢®¡®¤¨âì ¡«®ª ¯ ¬ï⨠ࠬ¤¨áª 
DB low EMM.GetMemPageRMD ; #94 ¯®«ãç¨âì ­®¬¥àa áâà ­¨æ RAM-Disk
DB low EMM.GetMemPageNext ; #95 ¯®«ãç¨âì á«¥¤ãîéãî áâà ­¨æã
DB low EMM.GetBanksPorts ; #96 ¯®«ãç¨âì  ¤à¥á  ¯®à⮢
DB low EMM.CheckColdInit ; #97 ¯à®¢¥àª  ­  宫®¤­ë© áâ àâ ¨ ¨­¨æ¨ «¨§ æ¨¨ ¥á«¨ ®­ ;????? ­ã¦­  «¨ ª ª API?
DB low RAMD_CALC_PAGE ; #98 ‚ëç¨á«¥­¨¥ áâà ­¨æë ¨  ¤à¥á  ¢ RAM-Disk ¯®  ¡á®«îâ­®¬ã ­®¬¥àã ᥪâ®à 
DB low SET_DISK_REDIR ; #99 “áâ ­®¢¨âì ­  ⥪ã騩 ¤à ©¢ ¯¥à¥­ §­ ç¥­¨¥ (áâ à ï äã­ªæ¨ï ¤«ï TR-DOS!) ;?????
DB low GET_DISK_REDIR ; #9A <20>®«ãç¨âì ⨯ ­ §­ ç¥­¨ï ­  ⥪ã騩 ¤à ©¢ (áâ à ï äã­ªæ¨ï ¤«ï TR-DOS!)
DB low GET_RAMD_NUM ; #9B ¯®«ãç¨âì ­®¬¥à ram disk ¯® ¥£® block id
DB low SWAP_RAM_DRIVES ; #9C ᬥ­¨âì ­ ¡®à à ¬¤¨áª®¢ ZX <-> Sp2000
DB low EMM.DivMemBlocks ; #9D à §¤¥«¥­¨ï ¡«®ª  ­  ¤¢ .
DB low EMM.MergeMemBlocks ; #9E ᫨ﭨ¥ ¤¢ãå ¡«®ª®¢
DB low EMM.FullInit ; #9F ¨­¨æ¨ «¨§ æ¨ï ¢á¥© ¯ ¬ïâ¨, á¨á⥬­ëå ¯¥à¥¬¥­­ëå
; Ax
DB low PIC_FN0 ; #A0 ŽŠ<E28099>ˆ… ŽŠ<C5BD>€ - Fn 0A0h
DB low PIC_FN1 ; #A1 ‚›‚…‘’ˆ ’Ž—Š“
DB low PIC_FN2 ; #A2 ‚›‚Ž„ ˆ<E280B9>ˆˆ COPY
DB low PIC_FN3 ; #A3 ‚›‚Ž„ ˆ<E280B9>ˆˆ FILL
DB low PIC_SET_PAL ; #A4 ‚›‚Ž„ <20>ˆ<CB86>
DB low PIC_FN5 ; #A5 “<E28099>ŽŠ€ RGMOD
DB low SET_PAL_INIT ; #A6 A - page_pal, E - ­®¬¥à ¯ «¨âàë, B - ⨯ ¯ «¨âàë
DB low PIC_FN7 ; #A7 <20>¨á®¢ ­¨¥ «¨­¨¨ ®¤­®£® 梥â 
DB low PIC_FN8 ; #A8 <20>¨á®¢ ­¨¥ à §­®æ¢¥â­®© «¨­¨¨
DB low PIC_FN9 ; #A9 ­¥â
DB low PIC_FN10 ; #AA ­¥â
DB low PIC_FN11 ; #AB ­¥â
DB low PIC_FN12 ; #AC ­¥â
DB low PIC_FN14 ; #AD ­¥â
DB low PIC_FN14 ; #AE ­¥â
DB low PIC_FN15 ; #AF ­¥â
; Bx
DB low WIN_OPEN ; #B0 ®âªàë⨥ ®ª­  ¯® ®¯¨á â¥«î
DB low WIN_CLOSE ; #B1 § ªàë⨥ ®ª­ 
DB low WIN_COPY ; #B2 á®åà ­¥­¨¥ ⥪á⮢®£® ®ª­  ¢ ¯ ¬ïâ¨
DB low WIN_RESTORE ; #B3 ¢®ááâ ­®¢«¥­¨¥ ⥪á⮢®£® ®ª­  ¨§ ¯ ¬ïâ¨
DB low WIN_GET_SYM ; #B4 ¢§ïâì ᨬ¢®«
DB low WIN_PUT_SYM ; #B5 ¯®«®¦¨âì ᨬ¢®«
DB low WIN_SET_ZG ; #B6 § £à㧪  §­ ª®£¥­¥à â®à 
DB low WIN_MOVE ; #B7 ¯¥à¥¬¥áâ¨âì ®ª­®
DB low WIN_GET_ZG ; #B8 ¯®«ãç¨âì §­ ª®£¥­¥à â®à
DB low FN_RESERVED ; #B9
DB low FN_RESERVED ; #BA
DB low FN_RESERVED ; #BB
DB low FN_RESERVED ; #BC
DB low FN_RESERVED ; #BD
DB low FN_RESERVED ; #BE
DB low FN_RESERVED ; #BF
; Cx
DB low EMM.GetMemSize ; #C0 ¯®«ãç¨âì ¤ ­­ë¥ ®¡ ®¡ê¥¬¥ ¯ ¬ï⨠¨ ª®«-¢® ᢮¡. áâà.
DB low EMM.InitMem ; #C1 ¨­¨æ¨ «¨§ æ¨ï à á¯à¥¤¥«¥­¨ï ¯ ¬ïâ¨
DB low EMM.GetMem ; #C2 ¯®«ãç¨âì ¡«®ª ¯ ¬ïâ¨
DB low EMM.FreeMem ; #C3 ®á¢®¡®¤¨âì ¡«®ª ¯ ¬ïâ¨
DB low EMM.GetMemPage ; #C4 ¯®«ãç¨âì ­®¬¥à áâà ­¨æë ¢ ¡«®ª¥ ¯ ¬ïâ¨
DB low EMM.GetMemBlkPages ; #C5 ¯®«ãç¨âì ᯨ᮪ áâà ­¨æ ¡«®ª  ¯ ¬ïâ¨
DB low EMM.GetBanksPorts ; #C6 ¯®«ãç¨âì  ¤à¥á  ¯®à⮢ ®ª®­
DB low EMM.GetMemPageNext ; #C7 ¯®«ãç¨âì á«¥¤ãîéãî áâà ­¨æã ¡«®ª 
DB low BLK_RD_WR ; #C8 äã­ªæ¨ï ç⥭¨ï/§ ¯¨á¨ ¢ ¡«®ª ¯ ¬ïâ¨
DB low BLK_TO_RAMD ; #C9 ­ §­ ç¨âì ¡«®ª RAM-Disk-ã
DB low RAMD_CLEAR ; #CA ®á¢®¡®¤¨âì RAM-Disk
DB low RAMD_TO_DRV ; #CB ­ §­ ç¨âì RAM-Disk ­  ¤¨áª®¢®¤
DB low FDD_TO_DRV ; #CC ­ §­ ç¨âì REAL_DRIVE ­  ¤¨áª®¢®¤
DB low HDD_TO_DRV ; #CD ­ §­ ç¨âì HDD ­  ¤¨áª®¢®¤
DB low GET_RAMD_ST ; #CE ¯®«ãç¨âì ⨯ ­ §­ ç¥­¨ï ­  RAM-Disk
DB low GET_DRV_ST ; #CF ¯®«ãç¨âì ⨯ ­ §­ ç¥­¨ï ­  ¤¨áª®¢®¤
; Dx
DB low FN_LIB ; #D0
DB low FN_LIB ; #D1
DB low FN_LIB ; #D2
DB low FN_LIB ; #D3
DB low FN_LIB ; #D4
DB low FN_LIB ; #D5
DB low FN_LIB ; #D6
DB low FN_LIB ; #D7
DB low FN_LIB ; #D8
DB low FN_LIB ; #D9
DB low FN_LIB ; #DA
DB low FN_LIB ; #DB
DB low FN_LIB ; #DC
DB low FN_LIB ; #DD
DB low FN_LIB ; #DE
DB low FN_LIB ; #DF
; Ex
DB low LP_PR_LINE_DIR ; #E0
DB low FN_RESERVED ; #E1
DB low FN_RESERVED ; #E2
DB low FN_RESERVED ; #E3
DB low FN_RESERVED ; #E4
DB low FN_RESERVED ; #E5
DB low FN_RESERVED ; #E6
DB low FN_RESERVED ; #E7
DB low FN_SEND_BYTE ; #E8 ¯®á« âì ¡ ©â ç¥à¥§ PC_link
DB low FN_RESEIVE_B ; #E9 ¯à¨­ïâì ¡ ©â ç¥à¥§ PC_link
DB low FN_KBD_OUT ; #EA ¯®á« âì ¡ ©â ¢ ª« ¢¨ âãàã
DB low FN_RESERVED ; #EB
DB low FN_RESERVED ; #EC
DB low FN_CRIPT ; #ED
DB low RST_CONF.AY8910 ; #EE ¤«ï ᮢ¬¥á⨬®á⨠á á®ä⮬ Sp97
DB low FN_VERSION ; #EF
; Fx
DB low RST_CONF.SP97_1 ; #F0 ¤«ï ᮢ¬¥á⨬®á⨠á á®ä⮬ Sp97
DB low RST_CONF.SP97_2 ; #F1 ¤«ï ᮢ¬¥á⨬®á⨠á á®ä⮬ Sp97
DB low FN_SYNC ; #F2 ãáâ ­®¢ª  ᨭåà®­¨§ æ¨¨
DB low RST_CONF.CUSTOM ; #F3 ¤«ï ᮢ¬¥á⨬®á⨠á á®ä⮬ Sp97
DB low DCP_CONFIG ; #F4 äã­ªæ¨ï à á¯à¥¤¥«¥­¨ï ¯®à⮢ ; [x]
DB low CMOS_TEST ; #F5
DB low CMOS_RD ; #F6
DB low CMOS_WR ; #F7
DB low SET_PORTS ; #F8
DB low READ_PORTS ; #F9 [x] 26/01/2024
DB low FN_RESERVED ; #FA [x] 26/01/2024 ­¥ à ¡®â «  ¨ ­¥ ­ã¦­ , ¤ã¡«¨àã¥â SET_PORTS
DB low GOTO_SPEC ; #FB Goto Spectrum!
DB low ZX_MEMORY_MANAGER ; #FC API ¤«ï ¤¨­ ¬¨ç¥áª®£® ¢ë¤¥«¥­¨ï áâà ­¨æ ‘¯¥ªâà㬠
DB low REINIT ; #FD
DB low FN_RESERVED ; #FE SAVE_AUTOSTART. …áâì ¢ ZX_EXP.ASM
DB low FN_VERSION ; #FF
;****************----------------------------************************-----------------
; 00 - #3F
DUP #40
DB high FN_RESERVED
EDUP
;
;--------------
DB high FN_HDD_INIT
DB high FN_HDD_RECAL
DB high FN_HDD_TEST_IDE
DB high FN_HDD_PREPARE
DB high FN_HDD_READ_BPB
DB high FN_HDD_READ
DB high FN_HDD_WRITE
DB high FN_HDD_PART
DB high FN_HDD_READ_NEXT
DB high FN_RESERVED
DB high FN_RESERVED
DB high FN_RESERVED
DB high FN_RESERVED
DB high FN_RESERVED
DB high FN_RESERVED
DB high FN_RESERVED
;--------------
;--------------
DB high FN_RESERVED_5x
DB high FN_5x_Parser_1
DB high FN_5x_Parser_2
DB high FN_5x_Parser_3
DB high FN_5x_Parser_4
DB high FN_5x_Parser_5
DB high FN_5x_Parser_6
DB high FN_5x_Parser_7
DB high FN_5x_Parser_8
DB high FN_5x_Parser_9
DB high DRV_VERSION
DB high FN_RESERVED_5x
DB high FN_RESERVED_5x
DB high FN_RESERVED_5x
DB high FN_5x_Parser_E
DB high DRV_LIST
;--------------
; 60 - #7F
DUP #20
DB high FN_RESERVED
EDUP
; 8x
DB high LP_OPEN_S
DB high LP_PRINT_ALL
DB high LP_PRINT_SYM
DB high LP_PRINT_ATR
DB high LP_SET_PLACE
DB high LP_PRINT_LINE
DB high LP_PRINT_LINE2
DB high LP_PRINT_LINE3
DB high LP_PRINT_LINE4
DB high LP_CLS_WIN
DB high LP_SCROLL_UD
DB high LP_PRINT_LINE5
DB high LP_PRINT_LINE6
DB high LP_CLS_WIN2
DB high LP_GET_PLACE
DB high FN_TURBO
; 9x
DB high EMM.GetMemSize
DB high EMM.InitMem
DB high EMM.GetMemRMD
DB high EMM.FreeMemRMD
DB high EMM.GetMemPageRMD
DB high EMM.GetMemPageNext
DB high EMM.GetBanksPorts
DB high EMM.CheckColdInit
DB high RAMD_CALC_PAGE
DB high SET_DISK_REDIR
DB high GET_DISK_REDIR
DB high GET_RAMD_NUM
DB high SWAP_RAM_DRIVES
DB high EMM.DivMemBlocks
DB high EMM.MergeMemBlocks
DB high EMM.FullInit
; Ax
DB high PIC_FN0
DB high PIC_FN1
DB high PIC_FN2
DB high PIC_FN3
DB high PIC_SET_PAL
DB high PIC_FN5
DB high SET_PAL_INIT
DB high PIC_FN7
DB high PIC_FN8
DB high PIC_FN9
DB high PIC_FN10
DB high PIC_FN11
DB high PIC_FN12
DB high PIC_FN14
DB high PIC_FN14
DB high PIC_FN15
; Bx
DB high WIN_OPEN
DB high WIN_CLOSE
DB high WIN_COPY
DB high WIN_RESTORE
DB high WIN_GET_SYM
DB high WIN_PUT_SYM
DB high WIN_SET_ZG
DB high WIN_MOVE
DB high WIN_GET_ZG
DB high FN_RESERVED
DB high FN_RESERVED
DB high FN_RESERVED
DB high FN_RESERVED
DB high FN_RESERVED
DB high FN_RESERVED
DB high FN_RESERVED
; Cx
DB high EMM.GetMemSize
DB high EMM.InitMem
DB high EMM.GetMem
DB high EMM.FreeMem
DB high EMM.GetMemPage
DB high EMM.GetMemBlkPages
DB high EMM.GetBanksPorts
DB high EMM.GetMemPageNext
DB high BLK_RD_WR
DB high BLK_TO_RAMD
DB high RAMD_CLEAR
DB high RAMD_TO_DRV
DB high FDD_TO_DRV
DB high HDD_TO_DRV
DB high GET_RAMD_ST
DB high GET_DRV_ST
; Dx
DB high FN_LIB
DB high FN_LIB
DB high FN_LIB
DB high FN_LIB
DB high FN_LIB
DB high FN_LIB
DB high FN_LIB
DB high FN_LIB
DB high FN_LIB
DB high FN_LIB
DB high FN_LIB
DB high FN_LIB
DB high FN_LIB
DB high FN_LIB
DB high FN_LIB
DB high FN_LIB
; Ex
DB high LP_PR_LINE_DIR
DB high FN_RESERVED
DB high FN_RESERVED
DB high FN_RESERVED
DB high FN_RESERVED
DB high FN_RESERVED
DB high FN_RESERVED
DB high FN_RESERVED
DB high FN_SEND_BYTE
DB high FN_RESEIVE_B
DB high FN_KBD_OUT
DB high FN_RESERVED
DB high FN_RESERVED
DB high FN_CRIPT
DB high RST_CONF.AY8910
DB high FN_VERSION
; Fx
DB high RST_CONF.SP97_1
DB high RST_CONF.SP97_2
DB high FN_SYNC
DB high RST_CONF.CUSTOM
DB high DCP_CONFIG
DB high CMOS_TEST
DB high CMOS_RD
DB high CMOS_WR
DB high SET_PORTS
DB high READ_PORTS
DB high FN_RESERVED
DB high GOTO_SPEC
DB high ZX_MEMORY_MANAGER
DB high REINIT
DB high FN_RESERVED
DB high FN_VERSION
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
;
; ,----, ,----,.
; ,/ .`| ,' ,' |
; ,` .' : ,--, ,' .' |
; ; ; / ,---, ,--.'| ,----.' .'
; .'___,/ ,' ,---.'| | | : | | .'
; | : | | | : : : ' : : |--, ,--, ,--,
; ; |.'; ; ,--.--. : : : | ' | ,---. : | ;.' \|'. \/ .`|
; `----' | | / \ : |,-.' | | / \ | | |' \/ / ;
; ' : ;.--. .-. || : ' || | : / / | `----'.'\ ; \ \.' /
; | | ' \__\/: . .| | / :' : |__ . ' / | __ \ . | \ ; ;
; ' : | ," .--.; |' : |: || | '.'|' ; /| / /\/ / : / \ \ \
; ; |.' / / ,. || | '/ :; : ;' | / | / ,,/ ',- ./__; ; \
; '---' ; : .' \ : || , / | : | \ ''\ ;| :/\ \ ;
; | , .-./ \ / ---`-' \ \ / \ \ .' `---' `--`
; `--`---' `-'----' `----' `--`-,-'
////////////////////////////////////////////////////////////////////////////////////////
_mInfoALIGN 256,0
;===========================================================[ 5x TABLE ]
; Drives Numbers:
; 0 FDD
; 1..5 reserved
; 6 RAM-DRV
; 7 reserved
; 8 HDD
; 9..B reserved
; C CDROM
; D..F reserved
TAB_5xFNS:
; --< LOW PART >--
;-------------------------------------------------------------[ FDD #0 ]
;
DB low FN_RESERVED_5x ;#50 - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB low FDD_5x_RESET ;#51
DB low FDD_5x_LONG_READ ;#52
DB low FDD_5x_LONG_WRITE ;#53
DB low FN_ABSENT_5x ;#54
DB low FDD_5x_READ ;#55
DB low FDD_5x_WRITE ;#56
DB low FDD_5x_DETECT ;#57
DB low FDD_5x_GET_PAR ;#58
DB low FDD_5x_SET_PAR ;#59
DB low DRV_VERSION ;#5A - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB low FN_RESERVED_5x ;#5B - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB low FN_RESERVED_5x ;#5C - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB low FN_RESERVED_5x ;#5D - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB low FN_ABSENT_5x ;#5E - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB low DRV_LIST ;#5F - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
;
;---------------------------------------------------------------------[]
;-----------------------------[ #1..#5 ]
_mNoDrive_5xTable 5, 0
;-------------------------------------[]
;-------------------------------------------------------[ RAM DRIVE #6 ]
;
DB low FN_RESERVED_5x
DB low FN_ABSENT_5x
DB low RMD_5x_LONG_READ
DB low RMD_5x_LONG_WRITE
DB low FN_ABSENT_5x
DB low RMD_5x_READ
DB low RMD_5x_WRITE
DB low FN_ABSENT_5x
DB low RMD_5x_GET_PAR
DB low RMD_5x_SET_PAR
DB low DRV_VERSION
DB low FN_RESERVED_5x
DB low FN_RESERVED_5x
DB low FN_RESERVED_5x
DB low FN_ABSENT_5x
DB low DRV_LIST
;---------------------------------------------------------------------[]
;---------------------------------[ #7 ]
_mNoDrive_5xTable 1, 0
;-------------------------------------[]
;-------------------------------------------------------------[ ATA #8 ]
;
DB low FN_RESERVED_5x
DB low ATA_5x_RESET
DB low ATA_5x_LONG_READ
DB low ATA_5x_LONG_WRITE
DB low ATA_5x_VERIFY
DB low ATA_5x_READ
DB low ATA_5x_WRITE
DB low ATA_5x_DETECT
DB low ATA_5x_GET_PAR
DB low ATA_5x_SET_PAR
DB low DRV_VERSION
DB low FN_RESERVED_5x
DB low FN_RESERVED_5x
DB low FN_RESERVED_5x
DB low FN_ABSENT_5x
DB low DRV_LIST
;---------------------------------------------------------------------[]
;-----------------------------[ #9..#B ]
_mNoDrive_5xTable 3, 0
;-------------------------------------[]
;-----------------------------------------------------------[ ATAPI #C ]
;
DB low FN_RESERVED_5x
DB low ATAPI_5x_RESET
DB low ATAPI_5x_LONG_READ
DB low ATAPI_5x_LONG_WRITE ; [ ] new
DB low FN_ABSENT_5x ; VERIFY
DB low ATAPI_5x_READ
DB low ATAPI_5x_WRITE ; [ ] new
DB low ATAPI_5x_DETECT
DB low ATAPI_5x_GET_PAR ; [ ] new
DB low ATAPI_5x_SET_PAR ; SETMED
DB low DRV_VERSION
DB low FN_RESERVED_5x
DB low FN_RESERVED_5x
DB low FN_RESERVED_5x
DB low ATAPI_5x_Extended ;[ ] media changed? ;!TODO
DB low DRV_LIST
;---------------------------------------------------------------------[]
;-----------------------------[ #D..#F ]
_mNoDrive_5xTable 3, 0
;-------------------------------------[]
;
; --< HIGH PART >--
;-------------------------------------------------------------[ FDD #0 ]
;
DB high FN_RESERVED_5x ;#50 - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB high FDD_5x_RESET ;#51
DB high FDD_5x_LONG_READ ;#52
DB high FDD_5x_LONG_WRITE ;#53
DB high FN_ABSENT_5x ;#54
DB high FDD_5x_READ ;#55
DB high FDD_5x_WRITE ;#56
DB high FDD_5x_DETECT ;#57
DB high FDD_5x_GET_PAR ;#58
DB high FDD_5x_SET_PAR ;#59
DB high DRV_VERSION ;#5A - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB high FN_RESERVED_5x ;#5B - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB high FN_RESERVED_5x ;#5C - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB high FN_RESERVED_5x ;#5D - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
DB high FN_ABSENT_5x ;#5E - Extended functions
DB high DRV_LIST ;#5F - „ã¡«ì. <20>  íâã äã­ªæ¨î ¯à룠¥â ¨§ ®á­®¢­®£® ®¡à ¡®â稪 
;
;---------------------------------------------------------------------[]
;-----------------------------[ #1..#5 ]
_mNoDrive_5xTable 5, 1
;-------------------------------------[]
;-------------------------------------------------------[ RAM DRIVE #6 ]
;
DB high FN_RESERVED_5x
DB high FN_ABSENT_5x
DB high RMD_5x_LONG_READ
DB high RMD_5x_LONG_WRITE
DB high FN_ABSENT_5x
DB high RMD_5x_READ
DB high RMD_5x_WRITE
DB high FN_ABSENT_5x
DB high RMD_5x_GET_PAR
DB high RMD_5x_SET_PAR
DB high DRV_VERSION
DB high FN_RESERVED_5x
DB high FN_RESERVED_5x
DB high FN_RESERVED_5x
DB high FN_ABSENT_5x
DB high DRV_LIST
;---------------------------------------------------------------------[]
;---------------------------------[ #7 ]
_mNoDrive_5xTable 1, 1
;-------------------------------------[]
;-------------------------------------------------------------[ ATA #8 ]
;
DB high FN_RESERVED_5x
DB high ATA_5x_RESET
DB high ATA_5x_LONG_READ
DB high ATA_5x_LONG_WRITE
DB high ATA_5x_VERIFY
DB high ATA_5x_READ
DB high ATA_5x_WRITE
DB high ATA_5x_DETECT
DB high ATA_5x_GET_PAR
DB high ATA_5x_SET_PAR
DB high DRV_VERSION
DB high FN_RESERVED_5x
DB high FN_RESERVED_5x
DB high FN_RESERVED_5x
DB high FN_ABSENT_5x
DB high DRV_LIST
;---------------------------------------------------------------------[]
;-----------------------------[ #9..#B ]
_mNoDrive_5xTable 3, 1
;-------------------------------------[]
;-----------------------------------------------------------[ ATAPI #C ]
;
DB high FN_RESERVED_5x
DB high ATAPI_5x_RESET
DB high ATAPI_5x_LONG_READ
DB high ATAPI_5x_LONG_WRITE ; LONG_WRITE ; [ ] new
DB high FN_ABSENT_5x
DB high ATAPI_5x_READ
DB high ATAPI_5x_WRITE ; WRITE ; [ ] new
DB high ATAPI_5x_DETECT
DB high ATAPI_5x_GET_PAR
DB high ATAPI_5x_SET_PAR ; SETMED
DB high DRV_VERSION
DB high FN_RESERVED_5x
DB high FN_RESERVED_5x
DB high FN_RESERVED_5x
DB high ATAPI_5x_Extended
DB high DRV_LIST
;---------------------------------------------------------------------[]
;-----------------------------[ #D..#F ]
_mNoDrive_5xTable 3, 1
;-------------------------------------[]
;======================================================================;
;************************************
; ‚室 ¢ äã­ªæ¨î ¯® RST18 ¨ RST8
EXP_FNS_RST18:
PUSH HL
LD L,C
LD H,high TAB_FNS
LD C,(HL)
INC H
LD H,(HL)
LD L,C
EX (SP),HL
RET
; ATA_5x_RESET
; ATA_5x_LONG_READ
; ATA_5x_LONG_WRITE
; ATA_5x_VERIFY
; ATA_5x_READ
; ATA_5x_WRITE
; ATA_5x_DETECT
; ATA_5x_GET_PAR
; ATA_5x_SET_PAR
; DRV_VERSION
; FN_RESERVED_5x
; FN_RESERVED_5x
; FN_RESERVED_5x
; FN_RESERVED_5x
; DRV_LIST
FN_5x_Parser_1: ; ATA_5x_RESET
LD C,#01
JP FN_5x_Parser
FN_5x_Parser_2: ; ATA_5x_LONG_READ
LD C,#02
JP FN_5x_Parser
FN_5x_Parser_3: ; ATA_5x_LONG_WRITE
LD C,#03
JP FN_5x_Parser
FN_5x_Parser_4: ; ATA_5x_VERIFY
LD C,#04
JP FN_5x_Parser
FN_5x_Parser_6: ; ATA_5x_WRITE
LD C,#06
JP FN_5x_Parser
FN_5x_Parser_7: ; ATA_5x_DETECT
LD C,#07
JP FN_5x_Parser
FN_5x_Parser_8: ; ATA_5x_GET_PAR
LD C,#08
JP FN_5x_Parser
FN_5x_Parser_9: ; ATA_5x_SET_PAR
LD C,#09
JP FN_5x_Parser
FN_5x_Parser_E: ; DRV_EXTENDED
LD C,#0E
JP FN_5x_Parser
FN_5x_Parser_5: ; ATA_5x_READ
LD C,5
FN_5x_Parser:
PUSH HL
LD H,A
AND #F0
OR C
; âãâ ¢ A ­®¬¥à “<E28098>މ€ + <20>ŽŒ…<C592> ”“<E2809D>Šˆˆ
LD L,A
LD A,H
LD H,high TAB_5xFNS
LD C,(HL)
INC H
LD H,(HL)
LD L,C
EX (SP),HL
RET
; ‚室 ¢ ä㭪樨 <20>ˆŽ ¨§ TR-DOS
EXP_FNS:; ®âª«îç ¥¬ § ¯¨áì ¢ íªà ­ ᯥªâà㬠
;EX (SP),HL
;IN A,(RGADR)
;LD L,A
;LD A,#C0
;OUT (PORT_Y),A
;LD A,H
;EX (SP),HL ; (SP) = port_y
POP AF
;
CALL EXP_FNS_RST18
CALL DOS_ON
; ¢®§¢à é ¥¬ § ¯¨áì ¢ íªà ­ ᯥªâà㬠
;EX (SP),HL
;PUSH AF
;LD A,L
;OUT (RGADR),A
;POP AF
;POP HL
; ¢®§¢à â
JP EXP_FNS_RET
;! ! ! ! ! ! ! !
FN_RESERVED_5x:
LD A,BIOS.Error.InvalidSubFunction
FN_RESERVED:
SCF
RET
FN_ABSENT_5x:
LD A,BIOS.Error.NotSupported
SCF
RET
;! ! ! ! ! ! ! !
;