diff --git a/constants/SP2000.inc b/constants/SP2000.inc index 0e9df05..e0ce779 100644 --- a/constants/SP2000.inc +++ b/constants/SP2000.inc @@ -393,13 +393,9 @@ SCR_SyncPort EQU #FE ; SLOT0 EQU #82 ; номер банки 0 -.MEM_ADDR EQU #00 SLOT1 EQU #A2 ; номер банки 1 -.MEM_ADDR EQU #4000 SLOT2 EQU #C2 ; номер банки 2 -.MEM_ADDR EQU #8000 SLOT3 EQU #E2 ; номер банки 3 -.MEM_ADDR EQU #C000 PORT_Y EQU #89 ; вертикальная координата точки на графическом экран RGADR EQU #89 ; страница VIDEO-RAM для спектрумовского режима @@ -438,8 +434,7 @@ PAL_SCP EQU #1E ;????? DCP_PAGE EQU #40 ; страница используемая DSS -;DSS_PAGE EQU #FF -SHARED_PAGE EQU #FF +DSS_PAGE EQU #FF ZERO_PAGE EQU 0 ; страница для перехвата ресета и ещё чего-то Spec_Page EQU #41 @@ -515,16 +510,14 @@ SYS_PAGE EQU #FE ; В Sp2000 туда пихается значение типа #FEFF .CONFIG_BYTE EQU #C13E -;;;; .WIN_MAP_SC EQU #C140 -.WIN_TAB_SC EQU #C142 ;!FIXIT найти где используются -.WIN_SAV_HL EQU #C144 ;!FIXIT найти где используются -.WIN_SAV_DE EQU #C146 ;!FIXIT найти где используются -.WIN_SAV_BC EQU #C148 ;!FIXIT найти где используются +.WIN_TAB_SC EQU #C142 +.WIN_SAV_HL EQU #C144 +.WIN_SAV_DE EQU #C146 +.WIN_SAV_BC EQU #C148 .WIN_ZG EQU #C14A -.WIN_PLACE_WIN EQU #C14C ;!FIXIT найти где используются -.WIN_GR_MAP EQU #C14E ;!FIXIT найти где используются -;;;; +.WIN_PLACE_WIN EQU #C14C +.WIN_GR_MAP EQU #C14E .SYS_WORK1 EQU #C150 .SYS_WORK2 EQU #C152 @@ -532,8 +525,8 @@ SYS_PAGE EQU #FE .SYS_WORK4 EQU #C156 .WIN_MAP_LAB1 EQU #C158 -.WIN_MODE_SH EQU #C15C ; место по вертикали с адресом -.WIN_MODE_SC EQU #C15E ; место по горизонтали и страница моды +.WIN_MODE_SH EQU #C15C +.WIN_MODE_SC EQU #C15E .MSD_FAT_SEC EQU #C160 ; начальный сектор FAT .MSD_FAT_SEC2 EQU #C162 ; начальный сектор FAT @@ -595,7 +588,7 @@ SYS_PAGE EQU #FE .MS_FAT EQU #CC00 ; буфер FAT sector .MS_BUF EQU #D000 ; буфер DAT sector -.WIN_MAP_IX EQU #E000 ; данные карт окон (96 описателей по 32 байта) +.WIN_MAP_IX EQU #E000 ; данные карт окон .TASK_DATA EQU #EC00 ; данные для задач @@ -605,7 +598,6 @@ SYS_PAGE EQU #FE .USER_VARS EQU #F018 ; переменные пользователя -.SHARED_BUFFER_32b EQU #FEE0; - #FEFF .CMOS_EMULATOR EQU #FF00 .USER_VARS_2 EQU .CMOS_EMULATOR + CMOS.MAX_ADDRESS + 1 ;------------[ 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_V EQU 1 ; вертикальный размер в знакоместах -WIN_PLACE_H EQU 2 ; положение по горизонтали, в знакоместах +WIN_PLACE_H EQU 2 ; положение по горизонрали, в знакоместах WIN_PLACE_V EQU 3 ; положение по вертикали в знакоместах WIN_MODE EQU 4 ; режим знакоместа WIN_MODE_S EQU 5 ; дополнительный режим @@ -889,7 +842,6 @@ WIN_WORK_1 EQU 20 ; раб WIN_WORK_2 EQU 21 ; рабочая переменная 2 WIN_GRAF_X EQU 24 ; начальная координата по X WIN_GRAF_Y EQU 26 ; начальная координата по Y -*/ ; ; @@ -1196,7 +1148,7 @@ FDD144 EQU #17 ;#19 reserved ;#1A reserved -ISA_CTRL EQU #1B ; #9FBD ;????? +ISA_CTRL EQU #1B ; #9FBD CMOS_DATA.READ EQU #1C ; #FFBD CMOS_ADDR.WRITE EQU #1D ; #DFBD 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_IDE3 HDD_INIT_TABLE = SYS_PAGE.IDE_3 ; !HARDCODE table in SYS_PAGE + +;IDE_STATUS_3F7 EQU #29 ; HDD - доп. регистр состояния 3F7. внешний #4055 Write: -.DriveCtrl EQU #4152 ; HDW_DRV P_HD_CS - #1F6 Drive Control -.Command EQU #4153 ; HDW_COM P_CMD - #1F7 Command -.Data EQU #0150 ; HDW_DAT W170 - #1F0 Data -.Error EQU #0151 ; HDW_ERR W171 - #1F1 Error -.Counter EQU #0152 ; HDW_CNT P_S_CNT W172 - #1F2 Counter -.Sector EQU #0153 ; HDW_SEC P_S_NUM W173 - #1F3 Sector -.CylinderLow EQU #0154 ; HDW_CLL P_C_LOW W174 - #1F4 Cylinder Low -.CylinderHigh EQU #0155 ; HDW_CLH P_C_HIG W175 - #1F5 Cylinder High +.DeviceControl EQU #4154 ; ; #3F6 Device Control register +.DriveCtrl EQU #4152 ; HDW_DRV P_HD_CS ; #1F6 Drive Control register +.Command EQU #4153 ; HDW_COM P_CMD ; #1F7 Command register +.Data EQU #0150 ; HDW_DAT W170 ; #1F0 Data register +.Error EQU #0151 ; HDW_ERR W171 ; #1F1 Error register +.Counter EQU #0152 ; HDW_CNT P_S_CNT W172 ; #1F2 Counter register +.Sector EQU #0153 ; HDW_SEC P_S_NUM W173 ; #1F3 Sector register +.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: -.Control EQU #4052 ; HDR_DRV R176 - #1F6 Drive Control -.Status EQU #4053 ; HDR_CTL P_HDST R177 - #1F7 Status (Control) -.Data EQU #0050 ; HDR_DAT P_DATS R170 - #1F0 Data -.Error EQU #0051 ; HDR_ERR P_ERR R171 - #1F1 Error -.Counter EQU #0052 ; HDR_CNT R172 - #1F2 Counter -.Sector EQU #0053 ; HDR_SEC R173 - #1F3 Sector -.CylinderLow EQU #0054 ; HDR_CLL R174 - #1F4 Cylinder Low -.CylinderHigh EQU #0055 ; HDR_CLH R175 - #1F5 Cylinder High +.AltControl EQU #4054 ; ; #3F6 Alternate Status register +.Control EQU #4052 ; HDR_DRV R176 ; #1F6 Drive Control register +.Status EQU #4053 ; HDR_CTL P_HDST R177 ; #1F7 Status (Control) register +.Data EQU #0050 ; HDR_DAT P_DATS R170 ; #1F0 Data register +.Error EQU #0051 ; HDR_ERR P_ERR R171 ; #1F1 Error register +.Counter EQU #0052 ; HDR_CNT R172 ; #1F2 Counter register +.Sector EQU #0053 ; HDR_SEC R173 ; #1F3 Sector register +.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 -.Busy EQU 7;────────┘│││ ││││ ; BSY -.Ready EQU 6;─────────┘││ ││││ ; RDY -.Fault EQU 5;──────────┘│ ││││ -.SeekComplete EQU 4;───────────┘ ││││ .DeferredWriteError -.DataRequest EQU 3;─────────────┘│││ ; DRQ -.CorrectedData EQU 2;──────────────┘││ -.Index EQU 1;───────────────┘│ .SenseDataAvailable -.Error EQU 0;────────────────┘ ; Indicates an error occurred. Send a new command to clear it (or nuke it with a Software Reset). -.CheckCondition EQU .Error; -.StreamError EQU .Fault; +ControlBit: ; Bits for HardDrive.Read.Status +.Busy EQU 7 ; BSY +.Ready EQU 6 ; RDY +.Fault EQU 5 +.StreamErrror EQU .Fault +.DeferredWriteError EQU 4 +.DataRequest EQU 3 ; DRQ +.AlignmentError EQU 2 +.SenseDataAvailable EQU 1 +.Error EQU 0 ; Indicates an error occurred. Send a new command to clear it (or nuke it with a Software Reset). +.CheckCondition EQU .Error /* Bit Abbreviation Function 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 .CDROM EQU 2 .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 - -;-----------------------------------------------------------------------; +;----------------------------------------------------------------------- ; /*