Changeset 536 in xtideuniversalbios for trunk/XTIDE_Universal_BIOS/Src
- Timestamp:
- Apr 10, 2013, 6:27:15 PM (12 years ago)
- google:author:
- krille_n_@hotmail.com
- Location:
- trunk/XTIDE_Universal_BIOS/Src
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeCommand.asm
r526 r536 175 175 %ifdef MODULE_8BIT_IDE_ADVANCED 176 176 cmp BYTE [di+DPT_ATA.bDevice], DEVICE_8BIT_XTCF_MEMMAP 177 jae SHORT JrIdeTransfer_StartWithCommandInAL ; DEVICE_8BIT_XTCF_MEMMAP or DEVICE_8BIT_JRIDE_ISA177 jae SHORT JrIdeTransfer_StartWithCommandInAL ; DEVICE_8BIT_XTCF_MEMMAP, DEVICE_8BIT_JRIDE_ISA or DEVICE_8BIT_ADP50L 178 178 %endif 179 179 jmp IdeTransfer_StartWithCommandInAL -
trunk/XTIDE_Universal_BIOS/Src/Device/IDE/IdeIO.asm
r526 r536 61 61 je SHORT .ReverseA0andA3fromRegisterIndexInDX 62 62 63 eSHL_IM dx, 1 ; ADP50L and XT-CF 63 64 cmp al, DEVICE_8BIT_JRIDE_ISA 64 jne SHORT .ShlRegisterIndexInDX ; All XT-CF modes 65 ; Fall to .InputToALfromMemoryMappedRegisterInDX 66 67 .InputToALfromMemoryMappedRegisterInDX: 65 jb SHORT .InputToALfromRegisterInDX ; All XT-CF modes 66 mov bh, JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET >> 8 67 je SHORT .InputToALfromMemoryMappedRegisterInBX 68 mov bl, dl 69 mov bh, ADP50L_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET >> 8 70 71 .InputToALfromMemoryMappedRegisterInBX: 68 72 push ds 69 mov ds, [di+DPT.wBasePort] ; Segment for JR-IDE/ISA 70 mov al, [bx +JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET]73 mov ds, [di+DPT.wBasePort] ; Segment for JR-IDE/ISA and ADP50L 74 mov al, [bx] 71 75 pop ds 72 76 ret … … 75 79 .ReverseA0andA3fromRegisterIndexInDX: 76 80 mov dl, [cs:bx+g_rgbSwapA0andA3fromIdeRegisterIndex] 77 SKIP2B bx ; Skip shl dx, 178 79 .ShlRegisterIndexInDX:80 eSHL_IM dx, 181 ; Fall to .InputToALfromRegisterInDX82 81 83 82 .InputToALfromRegisterInDX: … … 108 107 je SHORT .ReverseA0andA3fromRegisterIndexInDX 109 108 109 ; At this point remaining controllers (JRIDE, XTCF and ADP50L) all have a control 110 ; block offset of 8 or (8<<1) so we add 8 here and do the SHL 1 later if needed. 111 add dx, 8 110 112 cmp bl, DEVICE_8BIT_JRIDE_ISA 111 jne SHORT .ShlRegisterIndexInDX ; All XT-CF modes 112 ; Fall to .OutputALtoMemoryMappedRegisterInDX 113 114 .OutputALtoMemoryMappedRegisterInDX: 115 mov bx, JRIDE_CONTROL_BLOCK_REGISTER_WINDOW_OFFSET 116 jmp SHORT IdeIO_OutputALtoIdeRegisterInDL.OutputALtoMemoryMappedRegisterInDXwithWindowOffsetInBX 113 jb SHORT IdeIO_OutputALtoIdeRegisterInDL.ShlRegisterIndexInDXandOutputAL ; All XT-CF modes 114 mov bx, JRIDE_CONTROL_BLOCK_REGISTER_WINDOW_OFFSET - 8 ; Zeroes BL. -8 compensates for the ADD 115 je SHORT IdeIO_OutputALtoIdeRegisterInDL.OutputALtoMemoryMappedRegisterInDXwithWindowOffsetInBX 116 ; The commented instructions below shows what happens next (saved for clarity) but as an optimization 117 ; we can accomplish the same thing with this jump. 118 jmp SHORT IdeIO_OutputALtoIdeRegisterInDL.ShlDXandMovHighByteOfADP50LoffsetsToBH 119 ; eSHL_IM dx, 1 120 ; mov bh, (ADP50L_CONTROL_BLOCK_REGISTER_WINDOW_OFFSET - 16) >> 8 ; -16 compensates for the ADD and SHL 121 ; jmp SHORT IdeIO_OutputALtoIdeRegisterInDL.OutputALtoMemoryMappedRegisterInDXwithWindowOffsetInBX 117 122 %endif 118 123 … … 122 127 ; a small trick since we only access Device Control Register at 123 128 ; offset 6h: Always clear A3 and set A0. 129 mov bh, dh ; Zero BH 124 130 add dx, [cs:bx+IDEVARS.wControlBlockPort] 125 131 xor dl, 1001b ; Clear A3, Set A0 126 jmp SHORT OutputALtoPortInDX 127 128 .ShlRegisterIndexInDX: 129 eSHL_IM dx, 1 130 add dx, BYTE XTCF_CONTROL_BLOCK_OFFSET 131 jmp SHORT OutputALtoRegisterInDX 132 out dx, al 133 ret 132 134 133 135 .OutputALtoControlBlockRegisterInDX: 134 call AccessDPT_GetIdevarsToCSBX 136 call AccessDPT_GetIdevarsToCSBX ; *FIXME* Why is this call here but not in the above block? 135 137 add dx, [cs:bx+IDEVARS.wControlBlockPort] 136 jmp SHORT OutputALtoPortInDX 138 out dx, al 139 ret 137 140 138 141 … … 160 163 161 164 cmp bl, DEVICE_8BIT_JRIDE_ISA 162 jne SHORT .ShlRegisterIndexInDX ; All XT-CF modes 163 ; Fall to .OutputALtoMemoryMappedRegisterInDX 164 165 .OutputALtoMemoryMappedRegisterInDX: 166 mov bx, JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET 165 jb SHORT .ShlRegisterIndexInDXandOutputAL ; All XT-CF modes 166 mov bx, JRIDE_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET ; Zeroes BL 167 je SHORT .OutputALtoMemoryMappedRegisterInDXwithWindowOffsetInBX 168 .ShlDXandMovHighByteOfADP50LoffsetsToBH: 169 eSHL_IM dx, 1 170 mov bh, ADP50L_COMMAND_BLOCK_REGISTER_WINDOW_OFFSET >> 8 ; BL is zero so we only need to change BH 171 167 172 .OutputALtoMemoryMappedRegisterInDXwithWindowOffsetInBX: 168 173 add bx, dx 169 174 push ds 170 mov ds, [di+DPT.wBasePort] ; Segment for JR-IDE/ISA 175 mov ds, [di+DPT.wBasePort] ; Segment for JR-IDE/ISA and ADP50L 171 176 mov [bx], al 172 177 pop ds … … 177 182 mov bx, dx 178 183 mov dl, [cs:bx+g_rgbSwapA0andA3fromIdeRegisterIndex] 179 SKIP2B bx ; Skip shldx, 1180 181 .ShlRegisterIndexInDX :184 SKIP2B bx ; Skip eSHL_IM dx, 1 185 186 .ShlRegisterIndexInDXandOutputAL: 182 187 eSHL_IM dx, 1 183 188 ; Fall to OutputALtoRegisterInDX … … 186 191 OutputALtoRegisterInDX: 187 192 add dx, [di+DPT.wBasePort] 188 OutputALtoPortInDX:189 193 out dx, al 190 194 ret -
trunk/XTIDE_Universal_BIOS/Src/Device/IDE/JrIdeTransfer.asm
r526 r536 27 27 .bSectorsDone resb 1 ; 8, Number of sectors xferred 28 28 endstruc 29 30 SECTOR_ACCESS_WINDOW_SIZE EQU 512 ; 512 bytes31 29 32 30 … … 68 66 mov dx, [di+DPT.wBasePort] 69 67 cmp BYTE [di+DPT_ATA.bDevice], DEVICE_8BIT_JRIDE_ISA 70 jne SHORT .GetSectorAccessWindowForXTCF 71 72 ; Get Sector Access Window for JR-IDE/ISA 68 jb SHORT .GetSectorAccessWindowForXTCF 69 70 ; Get Sector Access Window for JR-IDE/ISA and ADP50L 71 mov ds, dx ; Segment for JR-IDE/ISA and ADP50L 73 72 mov di, JRIDE_SECTOR_ACCESS_WINDOW_OFFSET 74 mov ds, dx ; Segment for JR-IDE/ISA 73 je SHORT .SectorAccessWindowLoadedToDSDI 74 mov di, ADP50L_SECTOR_ACCESS_WINDOW_OFFSET 75 75 jmp SHORT .SectorAccessWindowLoadedToDSDI 76 76 … … 231 231 mov bx, di 232 232 mov dx, cx 233 xor c l, cl233 xor cx, cx 234 234 ALIGN JUMP_ALIGN 235 235 .WriteNextSector: 236 mov ch, SECTOR_ACCESS_WINDOW_SIZE >> 9236 inc ch 237 237 rep movsw 238 238 mov di, bx ; Reset for next sector … … 258 258 mov bx, si 259 259 mov dx, cx 260 xor c l, cl260 xor cx, cx 261 261 ALIGN JUMP_ALIGN 262 262 .ReadNextSector: 263 mov ch, SECTOR_ACCESS_WINDOW_SIZE >> 9263 inc ch 264 264 rep movsw 265 265 mov si, bx ; Reset for next sector … … 289 289 ret 290 290 291 292 %ifndef CHECK_FOR_UNUSED_ENTRYPOINTS293 %if SECTOR_ACCESS_WINDOW_SIZE <> 512294 %error "SECTOR_ACCESS_WINDOW_SIZE is no longer equal to 512. JrIdeTransfer.asm needs changes."295 %endif296 %endif -
trunk/XTIDE_Universal_BIOS/Src/Main.asm
r529 r536 147 147 at ROMVARS.ideVars1+IDEVARS.bXTCFcontrolRegister, db XTCF_8BIT_PIO_MODE 148 148 at ROMVARS.ideVars1+IDEVARS.bDevice, db DEVICE_8BIT_XTCF_PIO8 149 %endif 150 149 151 at ROMVARS.ideVars1+IDEVARS.drvParamsMaster+DRVPARAMS.wFlags, db DISABLE_WRITE_CACHE | FLG_DRVPARAMS_BLOCKMODE | (TRANSLATEMODE_AUTO<<TRANSLATEMODE_FIELD_POSITION) 150 152 at ROMVARS.ideVars1+IDEVARS.drvParamsSlave+DRVPARAMS.wFlags, db DISABLE_WRITE_CACHE | FLG_DRVPARAMS_BLOCKMODE | (TRANSLATEMODE_AUTO<<TRANSLATEMODE_FIELD_POSITION) 151 %else152 at ROMVARS.ideVars1+IDEVARS.drvParamsMaster+DRVPARAMS.wFlags, db DISABLE_WRITE_CACHE | FLG_DRVPARAMS_BLOCKMODE | (TRANSLATEMODE_AUTO<<TRANSLATEMODE_FIELD_POSITION)153 at ROMVARS.ideVars1+IDEVARS.drvParamsSlave+DRVPARAMS.wFlags, db DISABLE_WRITE_CACHE | FLG_DRVPARAMS_BLOCKMODE | (TRANSLATEMODE_AUTO<<TRANSLATEMODE_FIELD_POSITION)154 %endif155 153 156 154 at ROMVARS.ideVars2+IDEVARS.drvParamsMaster+DRVPARAMS.wFlags, db DISABLE_WRITE_CACHE | FLG_DRVPARAMS_BLOCKMODE | (TRANSLATEMODE_AUTO<<TRANSLATEMODE_FIELD_POSITION) -
trunk/XTIDE_Universal_BIOS/Src/Strings.asm
r526 r536 144 144 g_szDeviceTypeValues_XTCFmem: db "M8 ",NULL ; Memory Mapped 8-bit 145 145 g_szDeviceTypeValues_JrIde: db "M8 ",NULL 146 g_szDeviceTypeValues_ADP50L: db "M8 ",NULL 146 147 g_szDeviceTypeValues_Serial: db "SER",NULL 147 148 … … 178 179 %error "g_szDeviceTypeValues Displacement Incorrect 8" 179 180 %endif 180 %if g_szDeviceTypeValues_ Serial<> g_szDeviceTypeValues_JrIde + g_szDeviceTypeValues_Displacement181 %if g_szDeviceTypeValues_ADP50L <> g_szDeviceTypeValues_JrIde + g_szDeviceTypeValues_Displacement 181 182 %error "g_szDeviceTypeValues Displacement Incorrect 9" 182 183 %endif 184 %if g_szDeviceTypeValues_Serial <> g_szDeviceTypeValues_ADP50L + g_szDeviceTypeValues_Displacement 185 %error "g_szDeviceTypeValues Displacement Incorrect 10" 186 %endif 183 187 %endif 184 188 185 189 186 190 g_szSelectionTimeout: db DOUBLE_BOTTOM_LEFT_CORNER,DOUBLE_LEFT_HORIZONTAL_TO_SINGLE_VERTICAL,"%ASelection in %2-u s",NULL 187 188 189 ; Boot Menu information strings190 g_szCapacity: db "Capacity : %s",NULL191 g_szCapacityNum: db "%5-u.%u %ciB",NULL192 g_szInformation: db "%s",LF,CR193 db "Addr. ",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL,"IRQ",SINGLE_VERTICAL,"Reset",LF,CR194 db "%s",SINGLE_VERTICAL,"%5-u",SINGLE_VERTICAL,"%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x",NULL195 191 196 192 … … 220 216 %endif 221 217 %endif 218 219 220 ; Boot Menu information strings 221 g_szCapacity: db "Capacity : %s",NULL 222 g_szCapacityNum: db "%5-u.%u %ciB",NULL 223 g_szInformation: db "%s",LF,CR 224 db "Addr. ",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL,"IRQ",SINGLE_VERTICAL,"Reset",LF,CR 225 db "%s",SINGLE_VERTICAL,"%5-u",SINGLE_VERTICAL,"%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x",NULL 222 226 223 227 %endif ; MODULE_BOOT_MENU -
trunk/XTIDE_Universal_BIOS/Src/StringsCompressed.asm
r526 r536 289 289 db 53h, 30h, 00h ; compressed 290 290 291 g_szDeviceTypeValues_ADP50L: ; db "M8 ",NULL 292 ; db 4dh, 38h, 20h, 00h ; uncompressed 293 db 53h, 30h, 00h ; compressed 294 291 295 g_szDeviceTypeValues_Serial: ; db "SER",NULL 292 296 ; db 53h, 45h, 52h, 00h ; uncompressed … … 326 330 %error "g_szDeviceTypeValues Displacement Incorrect 8" 327 331 %endif 328 %if g_szDeviceTypeValues_ Serial<> g_szDeviceTypeValues_JrIde + g_szDeviceTypeValues_Displacement332 %if g_szDeviceTypeValues_ADP50L <> g_szDeviceTypeValues_JrIde + g_szDeviceTypeValues_Displacement 329 333 %error "g_szDeviceTypeValues Displacement Incorrect 9" 334 %endif 335 %if g_szDeviceTypeValues_Serial <> g_szDeviceTypeValues_ADP50L + g_szDeviceTypeValues_Displacement 336 %error "g_szDeviceTypeValues Displacement Incorrect 10" 330 337 %endif 331 338 %endif … … 335 342 ; db 0c8h, 0b5h, 25h, 41h, 53h, 65h, 6ch, 65h, 63h, 74h, 69h, 6fh, 6eh, 20h, 69h, 6eh, 20h, 25h, 32h, 2dh, 75h, 20h, 73h, 00h ; uncompressed 336 343 db 31h, 32h, 3bh, 59h, 6bh, 72h, 6bh, 69h, 7ah, 6fh, 75h, 0f4h, 6fh, 0f4h, 3ah, 20h, 0b9h ; compressed 337 338 339 340 ; Boot Menu information strings341 g_szCapacity: ; db "Capacity : %s",NULL342 ; db 43h, 61h, 70h, 61h, 63h, 69h, 74h, 79h, 20h, 3ah, 20h, 25h, 73h, 00h ; uncompressed343 db 49h, 67h, 76h, 67h, 69h, 6fh, 7ah, 0ffh, 0c0h, 1dh ; compressed344 345 g_szCapacityNum: ; db "%5-u.%u %ciB",NULL346 ; db 25h, 35h, 2dh, 75h, 2eh, 25h, 75h, 20h, 25h, 63h, 69h, 42h, 00h ; uncompressed347 db 36h, 29h, 35h, 20h, 3ch, 6fh, 88h ; compressed348 349 g_szInformation: ; db "%s",LF,CR350 ; db 25h, 73h, 0ah, 0dh ; uncompressed351 db 3dh, 39h ; compressed352 353 ; db "Addr. ",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL,"IRQ",SINGLE_VERTICAL,"Reset",LF,CR354 ; db 41h, 64h, 64h, 72h, 2eh, 20h, 0b3h, 42h, 6ch, 6fh, 63h, 6bh, 0b3h, 42h, 75h, 73h, 0b3h, 49h, 52h, 51h, 0b3h, 52h, 65h, 73h, 65h, 74h, 0ah, 0dh ; uncompressed355 db 47h, 6ah, 6ah, 78h, 29h, 20h, 23h, 48h, 72h, 75h, 69h, 71h, 23h, 48h, 7bh, 79h, 23h, 4fh, 58h, 57h, 23h, 58h, 6bh, 79h, 6bh, 7ah, 39h ; compressed356 357 ; db "%s",SINGLE_VERTICAL,"%5-u",SINGLE_VERTICAL,"%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x",NULL358 ; db 25h, 73h, 0b3h, 25h, 35h, 2dh, 75h, 0b3h, 25h, 73h, 0b3h, 20h, 25h, 32h, 2dh, 49h, 0b3h, 25h, 35h, 2dh, 78h, 00h ; uncompressed359 db 3dh, 23h, 36h, 23h, 3dh, 23h, 20h, 34h, 23h, 18h ; compressed360 344 361 345 … … 404 388 %endif 405 389 %endif 390 391 392 ; Boot Menu information strings 393 g_szCapacity: ; db "Capacity : %s",NULL 394 ; db 43h, 61h, 70h, 61h, 63h, 69h, 74h, 79h, 20h, 3ah, 20h, 25h, 73h, 00h ; uncompressed 395 db 49h, 67h, 76h, 67h, 69h, 6fh, 7ah, 0ffh, 0c0h, 1dh ; compressed 396 397 g_szCapacityNum: ; db "%5-u.%u %ciB",NULL 398 ; db 25h, 35h, 2dh, 75h, 2eh, 25h, 75h, 20h, 25h, 63h, 69h, 42h, 00h ; uncompressed 399 db 36h, 29h, 35h, 20h, 3ch, 6fh, 88h ; compressed 400 401 g_szInformation: ; db "%s",LF,CR 402 ; db 25h, 73h, 0ah, 0dh ; uncompressed 403 db 3dh, 39h ; compressed 404 405 ; db "Addr. ",SINGLE_VERTICAL,"Block",SINGLE_VERTICAL,"Bus",SINGLE_VERTICAL,"IRQ",SINGLE_VERTICAL,"Reset",LF,CR 406 ; db 41h, 64h, 64h, 72h, 2eh, 20h, 0b3h, 42h, 6ch, 6fh, 63h, 6bh, 0b3h, 42h, 75h, 73h, 0b3h, 49h, 52h, 51h, 0b3h, 52h, 65h, 73h, 65h, 74h, 0ah, 0dh ; uncompressed 407 db 47h, 6ah, 6ah, 78h, 29h, 20h, 23h, 48h, 72h, 75h, 69h, 71h, 23h, 48h, 7bh, 79h, 23h, 4fh, 58h, 57h, 23h, 58h, 6bh, 79h, 6bh, 7ah, 39h ; compressed 408 409 ; db "%s",SINGLE_VERTICAL,"%5-u",SINGLE_VERTICAL,"%s",SINGLE_VERTICAL," %2-I",SINGLE_VERTICAL,"%5-x",NULL 410 ; db 25h, 73h, 0b3h, 25h, 35h, 2dh, 75h, 0b3h, 25h, 73h, 0b3h, 20h, 25h, 32h, 2dh, 49h, 0b3h, 25h, 35h, 2dh, 78h, 00h ; uncompressed 411 db 3dh, 23h, 36h, 23h, 3dh, 23h, 20h, 34h, 23h, 18h ; compressed 412 406 413 407 414 %endif ; MODULE_BOOT_MENU … … 554 561 ;; translated usage stats 555 562 ;; 33:1 556 ;; 32:3 4563 ;; 32:35 557 564 ;; 181:1 558 565 ;; 53:2 … … 568 575 ;; 34:3 569 576 ;; 49:1 570 ;; 56: 7577 ;; 56:8 571 578 ;; 45:2 572 579 ;; 175:1 … … 609 616 ;; 75,K:1 610 617 ;; 76,L:4 611 ;; 77,M: 7618 ;; 77,M:8 612 619 ;; 78,N:2 613 620 ;; 79,O:2
Note:
See TracChangeset
for help on using the changeset viewer.