This commit is contained in:
Anatoliy Belyanskiy 2023-08-22 00:25:45 +10:00
parent 2facbb273e
commit 8be4b3a70b

View File

@ -393,13 +393,9 @@ SCR_SyncPort EQU #FE
; ;
SLOT0 EQU #82 ; ­®¬¥à ¡ ­ª¨ 0 SLOT0 EQU #82 ; ­®¬¥à ¡ ­ª¨ 0
.MEM_ADDR EQU #00
SLOT1 EQU #A2 ; ­®¬¥à ¡ ­ª¨ 1 SLOT1 EQU #A2 ; ­®¬¥à ¡ ­ª¨ 1
.MEM_ADDR EQU #4000
SLOT2 EQU #C2 ; ­®¬¥à ¡ ­ª¨ 2 SLOT2 EQU #C2 ; ­®¬¥à ¡ ­ª¨ 2
.MEM_ADDR EQU #8000
SLOT3 EQU #E2 ; ­®¬¥à ¡ ­ª¨ 3 SLOT3 EQU #E2 ; ­®¬¥à ¡ ­ª¨ 3
.MEM_ADDR EQU #C000
PORT_Y EQU #89 ; ¢¥à⨪ «ì­ ï ª®®à¤¨­ â  â®çª¨ ­  £à ä¨ç¥áª®¬ íªà ­ PORT_Y EQU #89 ; ¢¥à⨪ «ì­ ï ª®®à¤¨­ â  â®çª¨ ­  £à ä¨ç¥áª®¬ íªà ­
RGADR EQU #89 ; áâà ­¨æ  VIDEO-RAM ¤«ï ᯥªâà㬮¢áª®£® ०¨¬  RGADR EQU #89 ; áâà ­¨æ  VIDEO-RAM ¤«ï ᯥªâà㬮¢áª®£® ०¨¬ 
@ -438,8 +434,7 @@ PAL_SCP EQU #1E ;?????
DCP_PAGE EQU #40 DCP_PAGE EQU #40
; áâà ­¨æ  ¨á¯®«ì§ã¥¬ ï DSS ; áâà ­¨æ  ¨á¯®«ì§ã¥¬ ï DSS
;DSS_PAGE EQU #FF DSS_PAGE EQU #FF
SHARED_PAGE EQU #FF
ZERO_PAGE EQU 0 ZERO_PAGE EQU 0
; áâà ­¨æ  ¤«ï ¯¥à¥å¢ â  à¥á¥â  ¨ ¥éñ 祣®-â® ; áâà ­¨æ  ¤«ï ¯¥à¥å¢ â  à¥á¥â  ¨ ¥éñ 祣®-â®
Spec_Page EQU #41 Spec_Page EQU #41
@ -515,16 +510,14 @@ SYS_PAGE EQU #FE
; Sp2000 â㤠 ¯¨å ¥âáï §­ ç¥­¨¥ ⨯  #FEFF ; Sp2000 â㤠 ¯¨å ¥âáï §­ ç¥­¨¥ ⨯  #FEFF
.CONFIG_BYTE EQU #C13E .CONFIG_BYTE EQU #C13E
;;;;
.WIN_MAP_SC EQU #C140 .WIN_MAP_SC EQU #C140
.WIN_TAB_SC EQU #C142 ;!FIXIT ­ ©â¨ £¤¥ ¨á¯®«ì§ãîâáï .WIN_TAB_SC EQU #C142
.WIN_SAV_HL EQU #C144 ;!FIXIT ­ ©â¨ £¤¥ ¨á¯®«ì§ãîâáï .WIN_SAV_HL EQU #C144
.WIN_SAV_DE EQU #C146 ;!FIXIT ­ ©â¨ £¤¥ ¨á¯®«ì§ãîâáï .WIN_SAV_DE EQU #C146
.WIN_SAV_BC EQU #C148 ;!FIXIT ­ ©â¨ £¤¥ ¨á¯®«ì§ãîâáï .WIN_SAV_BC EQU #C148
.WIN_ZG EQU #C14A .WIN_ZG EQU #C14A
.WIN_PLACE_WIN EQU #C14C ;!FIXIT ­ ©â¨ £¤¥ ¨á¯®«ì§ãîâáï .WIN_PLACE_WIN EQU #C14C
.WIN_GR_MAP EQU #C14E ;!FIXIT ­ ©â¨ £¤¥ ¨á¯®«ì§ãîâáï .WIN_GR_MAP EQU #C14E
;;;;
.SYS_WORK1 EQU #C150 .SYS_WORK1 EQU #C150
.SYS_WORK2 EQU #C152 .SYS_WORK2 EQU #C152
@ -532,8 +525,8 @@ SYS_PAGE EQU #FE
.SYS_WORK4 EQU #C156 .SYS_WORK4 EQU #C156
.WIN_MAP_LAB1 EQU #C158 .WIN_MAP_LAB1 EQU #C158
.WIN_MODE_SH EQU #C15C ; ¬¥áâ® ¯® ¢¥à⨪ «¨ á  ¤à¥á®¬ .WIN_MODE_SH EQU #C15C
.WIN_MODE_SC EQU #C15E ; ¬¥áâ® ¯® £®à¨§®­â «¨ ¨ áâà ­¨æ  ¬®¤ë .WIN_MODE_SC EQU #C15E
.MSD_FAT_SEC EQU #C160 ; ­ ç «ì­ë© ᥪâ®à FAT .MSD_FAT_SEC EQU #C160 ; ­ ç «ì­ë© ᥪâ®à FAT
.MSD_FAT_SEC2 EQU #C162 ; ­ ç «ì­ë© ᥪâ®à FAT .MSD_FAT_SEC2 EQU #C162 ; ­ ç «ì­ë© ᥪâ®à FAT
@ -595,7 +588,7 @@ SYS_PAGE EQU #FE
.MS_FAT EQU #CC00 ; ¡ãä¥à FAT sector .MS_FAT EQU #CC00 ; ¡ãä¥à FAT sector
.MS_BUF EQU #D000 ; ¡ãä¥à DAT sector .MS_BUF EQU #D000 ; ¡ãä¥à DAT sector
.WIN_MAP_IX EQU #E000 ; ¤ ­­ë¥ ª àâ ®ª®­ (96 ®¯¨á â¥«¥© ¯® 32 ¡ ©â ) .WIN_MAP_IX EQU #E000 ; ¤ ­­ë¥ ª àâ ®ª®­
.TASK_DATA EQU #EC00 ; ¤ ­­ë¥ ¤«ï § ¤ ç .TASK_DATA EQU #EC00 ; ¤ ­­ë¥ ¤«ï § ¤ ç
@ -605,7 +598,6 @@ SYS_PAGE EQU #FE
.USER_VARS EQU #F018 ; ¯¥à¥¬¥­­ë¥ ¯®«ì§®¢ â¥«ï .USER_VARS EQU #F018 ; ¯¥à¥¬¥­­ë¥ ¯®«ì§®¢ â¥«ï
.SHARED_BUFFER_32b EQU #FEE0; - #FEFF
.CMOS_EMULATOR EQU #FF00 .CMOS_EMULATOR EQU #FF00
.USER_VARS_2 EQU .CMOS_EMULATOR + CMOS.MAX_ADDRESS + 1 .USER_VARS_2 EQU .CMOS_EMULATOR + CMOS.MAX_ADDRESS + 1
;------------[ OLD ]-------------; ;------------[ OLD ]-------------;
@ -826,49 +818,10 @@ FAT_ID EQU #36
; ***** - Žª®­­ë¥ ¯¥à¥¬¥­­ë¥ - ***** ; ***** - Žª®­­ë¥ ¯¥à¥¬¥­­ë¥ - *****
STRUCT Window_UserVars
SIZE_H BYTE 0 ; +00 £®à¨§®­â «ì­ë© à §¬¥à ¢ §­ ª®¬¥áâ å
SIZE_V BYTE 0 ; +01 ¢¥à⨪ «ì­ë© à §¬¥à ¢ §­ ª®¬¥áâ å
PLACE_H BYTE 0 ; +02 ¯®«®¦¥­¨¥ ¯® £®à¨§®­â «¨, ¢ §­ ª®¬¥áâ å
PLACE_V BYTE 0 ; +03 ¯®«®¦¥­¨¥ ¯® ¢¥à⨪ «¨ ¢ §­ ª®¬¥áâ å
MODE BYTE 0 ; +04 ०¨¬ §­ ª®¬¥áâ 
MODE_S BYTE 0 ; +05 ¤®¯®«­¨â¥«ì­ë© ०¨¬: ¡¨â 0 - Sp-SCR
GR_X BYTE 0 ; +06 ¯®«®¦¥­¨¥ ¯® X ¢ ¯®«¥ £à ä¨ª¨ (¯® §­ ª®¬¥áâ)
GR_Y BYTE 0 ; +07 ¯®«®¦¥­¨¥ ¯® Y ¢ ¯®«¥ £à ä¨ª¨ (¯® §­ ª®¬¥áâ)
ENDS
;
STRUCT Window_Variables
USER Window_UserVars 0,0,0,0,0,0,0,0
; ; Work vars
reg_HL WORD 0 ; +08 á®åà ­¥­¨¥ HL
reg_BC WORD 0 ; +10 á®åà ­¥­¨¥ BC
reg_DE WORD 0 ; +12 á®åà ­¥­¨¥ DE
V_BEG BYTE 0 ; +14 ­ ç «® ®ª­  ¯® ¢¥à⨪ «¨
V_END BYTE 0 ; +15 ª®­¥æ ®ª­  ¯® ¢¥à⨪ «¨
H_BEG BYTE 0 ; +16 ­ ç «® ®ª­  ¯® £®à¨§®­â «¨
H_END BYTE 0 ; +17 ª®­¥æ ®ª­  ¯® £®à¨§®­â «¨
SIZE_REL BYTE 0 ; +18 ॠ«ì­ë© à §¬¥à ¢ ᨬ¢®« å
MODE_E BYTE 0 ; +19 ¤®¯®«­¨â¥«ì­ë© ०¨¬ íªà ­ 
WORK_1 BYTE 0 ; +20 à ¡®ç ï ¯¥à¥¬¥­­ ï 1
WORK_2 BYTE 0 ; +21 à ¡®ç ï ¯¥à¥¬¥­­ ï 2
WORK_3 WORD 0 ; +22 à ¡®ç ï ¯¥à¥¬¥­­ ï 3
GRAF_X WORD 0 ; +24 ­ ç «ì­ ï ª®®à¤¨­ â  ¯® X
GRAF_Y WORD 0 ; +26 ­ ç «ì­ ï ª®®à¤¨­ â  ¯® Y
RESERVED BLOCK 4,0 ; +28 § à¥§¥à¢¨à®¢ ­® ¤® 32-å ¡ ©â®¢
ENDS
;-------------[]
; default window
WIN_ID_0 Window_Variables = SYS_PAGE.WIN_MAP_IX + Window_Variables * 0
;WIN_ID_1 Window_Variables = SYS_PAGE.WIN_MAP_IX + Window_Variables * 1
;WIN_ID_2 Window_Variables = SYS_PAGE.WIN_MAP_IX + Window_Variables * 2
; ...
;WIN_ID_95 Window_Variables = SYS_PAGE.WIN_MAP_IX + Window_Variables * 95
;-------------[]
/*
WIN_SIZE_H EQU 0 ; £®à¨§®­â «ì­ë© à §¬¥à ¢ §­ ª®¬¥áâ å WIN_SIZE_H EQU 0 ; £®à¨§®­â «ì­ë© à §¬¥à ¢ §­ ª®¬¥áâ å
WIN_SIZE_V EQU 1 ; ¢¥à⨪ «ì­ë© à §¬¥à ¢ §­ ª®¬¥áâ å WIN_SIZE_V EQU 1 ; ¢¥à⨪ «ì­ë© à §¬¥à ¢ §­ ª®¬¥áâ å
WIN_PLACE_H EQU 2 ; ¯®«®¦¥­¨¥ ¯® £®à¨§®­â «¨, ¢ §­ ª®¬¥áâ å WIN_PLACE_H EQU 2 ; ¯®«®¦¥­¨¥ ¯® £®à¨§®­à «¨, ¢ §­ ª®¬¥áâ å
WIN_PLACE_V EQU 3 ; ¯®«®¦¥­¨¥ ¯® ¢¥à⨪ «¨ ¢ §­ ª®¬¥áâ å WIN_PLACE_V EQU 3 ; ¯®«®¦¥­¨¥ ¯® ¢¥à⨪ «¨ ¢ §­ ª®¬¥áâ å
WIN_MODE EQU 4 ; ०¨¬ §­ ª®¬¥áâ  WIN_MODE EQU 4 ; ०¨¬ §­ ª®¬¥áâ 
WIN_MODE_S EQU 5 ; ¤®¯®«­¨â¥«ì­ë© ०¨¬ WIN_MODE_S EQU 5 ; ¤®¯®«­¨â¥«ì­ë© ०¨¬
@ -889,7 +842,6 @@ WIN_WORK_1 EQU 20 ; ࠡ
WIN_WORK_2 EQU 21 ; à ¡®ç ï ¯¥à¥¬¥­­ ï 2 WIN_WORK_2 EQU 21 ; à ¡®ç ï ¯¥à¥¬¥­­ ï 2
WIN_GRAF_X EQU 24 ; ­ ç «ì­ ï ª®®à¤¨­ â  ¯® X WIN_GRAF_X EQU 24 ; ­ ç «ì­ ï ª®®à¤¨­ â  ¯® X
WIN_GRAF_Y EQU 26 ; ­ ç «ì­ ï ª®®à¤¨­ â  ¯® Y WIN_GRAF_Y EQU 26 ; ­ ç «ì­ ï ª®®à¤¨­ â  ¯® Y
*/
; ;
; ;
@ -1196,7 +1148,7 @@ FDD144 EQU #17
;#19 reserved ;#19 reserved
;#1A reserved ;#1A reserved
ISA_CTRL EQU #1B ; #9FBD ;????? ISA_CTRL EQU #1B ; #9FBD
CMOS_DATA.READ EQU #1C ; #FFBD CMOS_DATA.READ EQU #1C ; #FFBD
CMOS_ADDR.WRITE EQU #1D ; #DFBD CMOS_ADDR.WRITE EQU #1D ; #DFBD
CMOS_DATA.WRITE EQU #1E ; #BFBD CMOS_DATA.WRITE EQU #1E ; #BFBD
@ -1623,37 +1575,41 @@ INIT_TBL_IDE1 HDD_INIT_TABLE = SYS_PAGE.IDE_1 ; !HARDC
INIT_TBL_IDE2 HDD_INIT_TABLE = SYS_PAGE.IDE_2 ; !HARDCODE table in SYS_PAGE INIT_TBL_IDE2 HDD_INIT_TABLE = SYS_PAGE.IDE_2 ; !HARDCODE table in SYS_PAGE
INIT_TBL_IDE3 HDD_INIT_TABLE = SYS_PAGE.IDE_3 ; !HARDCODE table in SYS_PAGE INIT_TBL_IDE3 HDD_INIT_TABLE = SYS_PAGE.IDE_3 ; !HARDCODE table in SYS_PAGE
;IDE_STATUS_3F7 EQU #29 ; HDD - ¤®¯. ॣ¨áâà á®áâ®ï­¨ï 3F7. ¢­¥è­¨© #4055
Write: Write:
.DriveCtrl EQU #4152 ; HDW_DRV P_HD_CS - #1F6 Drive Control .DeviceControl EQU #4154 ; ; #3F6 Device Control register
.Command EQU #4153 ; HDW_COM P_CMD - #1F7 Command .DriveCtrl EQU #4152 ; HDW_DRV P_HD_CS ; #1F6 Drive Control register
.Data EQU #0150 ; HDW_DAT W170 - #1F0 Data .Command EQU #4153 ; HDW_COM P_CMD ; #1F7 Command register
.Error EQU #0151 ; HDW_ERR W171 - #1F1 Error .Data EQU #0150 ; HDW_DAT W170 ; #1F0 Data register
.Counter EQU #0152 ; HDW_CNT P_S_CNT W172 - #1F2 Counter .Error EQU #0151 ; HDW_ERR W171 ; #1F1 Error register
.Sector EQU #0153 ; HDW_SEC P_S_NUM W173 - #1F3 Sector .Counter EQU #0152 ; HDW_CNT P_S_CNT W172 ; #1F2 Counter register
.CylinderLow EQU #0154 ; HDW_CLL P_C_LOW W174 - #1F4 Cylinder Low .Sector EQU #0153 ; HDW_SEC P_S_NUM W173 ; #1F3 Sector register
.CylinderHigh EQU #0155 ; HDW_CLH P_C_HIG W175 - #1F5 Cylinder High .CylinderLow EQU #0154 ; HDW_CLL P_C_LOW W174 ; #1F4 Cylinder Low register
.CylinderHigh EQU #0155 ; HDW_CLH P_C_HIG W175 ; #1F5 Cylinder High register
Read: Read:
.Control EQU #4052 ; HDR_DRV R176 - #1F6 Drive Control .AltControl EQU #4054 ; ; #3F6 Alternate Status register
.Status EQU #4053 ; HDR_CTL P_HDST R177 - #1F7 Status (Control) .Control EQU #4052 ; HDR_DRV R176 ; #1F6 Drive Control register
.Data EQU #0050 ; HDR_DAT P_DATS R170 - #1F0 Data .Status EQU #4053 ; HDR_CTL P_HDST R177 ; #1F7 Status (Control) register
.Error EQU #0051 ; HDR_ERR P_ERR R171 - #1F1 Error .Data EQU #0050 ; HDR_DAT P_DATS R170 ; #1F0 Data register
.Counter EQU #0052 ; HDR_CNT R172 - #1F2 Counter .Error EQU #0051 ; HDR_ERR P_ERR R171 ; #1F1 Error register
.Sector EQU #0053 ; HDR_SEC R173 - #1F3 Sector .Counter EQU #0052 ; HDR_CNT R172 ; #1F2 Counter register
.CylinderLow EQU #0054 ; HDR_CLL R174 - #1F4 Cylinder Low .Sector EQU #0053 ; HDR_SEC R173 ; #1F3 Sector register
.CylinderHigh EQU #0055 ; HDR_CLH R175 - #1F5 Cylinder High .CylinderLow EQU #0054 ; HDR_CLL R174 ; #1F4 Cylinder Low register
.CylinderHigh EQU #0055 ; HDR_CLH R175 ; #1F5 Cylinder High register
ControlBit: ; 0000 0000 ; Bits for HardDrive.Read.Status ControlBit: ; Bits for HardDrive.Read.Status
.Busy EQU 7;ÄÄÄÄÄÄÄÄÙ³³³ ³³³³ ; BSY .Busy EQU 7 ; BSY
.Ready EQU 6;ÄÄÄÄÄÄÄÄÄÙ³³ ³³³³ ; RDY .Ready EQU 6 ; RDY
.Fault EQU 5;ÄÄÄÄÄÄÄÄÄÄÙ³ ³³³³ .Fault EQU 5
.SeekComplete EQU 4;ÄÄÄÄÄÄÄÄÄÄÄÙ ³³³³ .DeferredWriteError .StreamErrror EQU .Fault
.DataRequest EQU 3;ÄÄÄÄÄÄÄÄÄÄÄÄÄÙ³³³ ; DRQ .DeferredWriteError EQU 4
.CorrectedData EQU 2;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ³³ .DataRequest EQU 3 ; DRQ
.Index EQU 1;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ³ .SenseDataAvailable .AlignmentError EQU 2
.Error EQU 0;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ ; Indicates an error occurred. Send a new command to clear it (or nuke it with a Software Reset). .SenseDataAvailable EQU 1
.CheckCondition EQU .Error; .Error EQU 0 ; Indicates an error occurred. Send a new command to clear it (or nuke it with a Software Reset).
.StreamError EQU .Fault; .CheckCondition EQU .Error
/* /*
Bit Abbreviation Function Bit Abbreviation Function
0 ERR Indicates an error occurred. Send a new command to clear it (or nuke it with a Software Reset). 0 ERR Indicates an error occurred. Send a new command to clear it (or nuke it with a Software Reset).
@ -1675,69 +1631,8 @@ Device:
.HDD EQU 1 .HDD EQU 1
.CDROM EQU 2 .CDROM EQU 2
.NONE EQU #FF .NONE EQU #FF
Drive:
.Master EQU #A0
.Slave EQU #B0
ATA:
; ATA-2 commands ************************
.ExecuteDeviceDiagnostic EQU #90
.IdentifyDevice EQU #EC
.InitializeDeviceParameters EQU #91
.ReadSectorsWithRetry EQU #20
.ReadSectors EQU #21
.ReadVerifySectorsWithRetry EQU #40
.ReadVerifySectors EQU #41
.Seek EQU #70
.WriteSectorsWithRetry EQU #30
.WriteSectors EQU #31
; ****** additional commands ************
.AcknowledgeMediaChange EQU #db
.PostBoot EQU #dc
.PreBoot EQU #dd
.CheckPowerMode EQU #98
.CheckPowerMode2 EQU #e5
.DoorLock EQU #de
.DoorUnlock EQU #df
.DownloadMicrocode EQU #92
.Idle EQU #97
.Idle2 EQU #e3
.IdleImmediate EQU #95
.IdleImmediate2 EQU #e1
.MediaEject EQU #ed
.Nop EQU #00
.ReadBuffer EQU #e4
.ReadDMA EQU #c8
.ReadLong EQU #22
.ReadMultiple EQU #c4
.Recalibrate EQU #10
.SetFeatures EQU #ef
.SetMultipleMode EQU #c6
.Sleep EQU #99
.Sleep2 EQU #e6
.Standby EQU #96
.Standby2 EQU #e2
.StandbyImmediate EQU #94
.Standby2Immediate EQU #e0
.WriteBuffer EQU #e8
.WriteDMA EQU #ca
.WriteLong EQU #32
.WriteMultiple EQU #c5
.WriteSame EQU #e9
.WriteVerify EQU #3c
; **** device specific commands *************
.FormatTrack EQU #50
; command modificators:
; for ReadSectors, WriteSectors, ReadVerifySectors,
; ReadDMA, WriteDMA, ReadLong, WriteLong
.WithoutRetry EQU #01
; ATA
; .Master EQU #A0
; .Slave EQU #B0
ENDMODULE ENDMODULE
;-----------------------------------------------------------------------
;-----------------------------------------------------------------------;
; ;
/* /*