pushed updates
This commit is contained in:
@@ -157,14 +157,6 @@ fat_openfile_noprepare:
|
||||
LD DE, MEM_IDE_BUFFER ;where to store data?
|
||||
call read_lba_sector
|
||||
|
||||
;LD HL,MEM_IDE_BUFFER ;Dump IDE Buffer
|
||||
;LD B,32
|
||||
;call dump_pretty
|
||||
|
||||
;LD HL,MEM_FAT_TMPFNAME ;Dump IDE Buffer
|
||||
;LD B,1
|
||||
;call dump_pretty
|
||||
|
||||
LD HL, MEM_IDE_BUFFER ;set buffer start
|
||||
LD C,16 ;set entries counter
|
||||
|
||||
|
||||
@@ -1,107 +1,107 @@
|
||||
.include "extern_symbols.s" ;include monitor symbols.
|
||||
|
||||
CS_VT82C42_DATA .EQU 0xF0
|
||||
CS_VT82C42_CTRL .EQU 0xF1
|
||||
|
||||
org 0x6000
|
||||
;VT82C42
|
||||
|
||||
MEM_FAT_EXEC_CURR .equ var_scratch+10
|
||||
MEM_FAT_EXEC_COUNT .equ var_scratch+12
|
||||
MEM_FAT_EXEC_START .equ var_scratch+14
|
||||
fat_exec:
|
||||
ld de,[var_input+6] ;prepare input like to mimic rom behaviour
|
||||
push de
|
||||
;DE has pointer to arguments
|
||||
call fat_openfile
|
||||
ld a, 0xA7 ;Disable Mouse
|
||||
out (CS_VT82C42_CTRL), A
|
||||
ld a, 0xAD ;Disable Keyboard
|
||||
out (CS_VT82C42_CTRL), A
|
||||
_keyboard_init_flush_buffer:
|
||||
in a,(CS_VT82C42_DATA) ;Read buffer
|
||||
in a,(CS_VT82C42_CTRL) ;Read status byte
|
||||
bit 0,a ;Test if buffer is empty
|
||||
jr nz, _keyboard_init_flush_buffer
|
||||
;buffer is now flushed. Now set the Controller Configuration Byte
|
||||
|
||||
ld a, 0x60 ;next byte is command byte register write
|
||||
ld b, 11111100b ;Disable bits 0,1,6 (disable IRQ and Translation)
|
||||
call keyb_cmd_wr
|
||||
|
||||
;Perform Controller Self Test
|
||||
ld a, 0xAA
|
||||
call keyb_cmd_rd
|
||||
cp 0x55
|
||||
jr nz, _keyboard_init_failed
|
||||
|
||||
;Perform Interface Tests
|
||||
ld a, 0xAB
|
||||
call keyb_cmd_rd
|
||||
or a
|
||||
jp nz, _fat_exec_notfound ;if not found, abort
|
||||
;call fat_print_dbg
|
||||
;load header
|
||||
ld de, MEM_IDE_BUFFER
|
||||
call fat_readfilesec
|
||||
jr nz, _keyboard_init_failed
|
||||
|
||||
;Enable Devices
|
||||
ld a,0xAE
|
||||
out (CS_VT82C42_CTRL), A
|
||||
call keyb_wait_ibf_empty
|
||||
|
||||
;ld hl, MEM_IDE_BUFFER ;print sector
|
||||
;ld b,0x20
|
||||
;call dump_pretty
|
||||
|
||||
ld a,(MEM_IDE_BUFFER)
|
||||
cp 0xC3
|
||||
jp nz, _fat_exec_notexec
|
||||
|
||||
call PRINTINLINE
|
||||
db 10,13,"Loading ",0
|
||||
ld hl,[var_input+6]
|
||||
;Test if device is present Devices
|
||||
ld a,0xEE
|
||||
out (CS_VT82C42_DATA), A ;Send echo to keboard (0xEE command)
|
||||
call keyb_wait_ibf_empty
|
||||
call keyb_wait_obf
|
||||
in a,(CS_VT82C42_DATA)
|
||||
cp a, 0xEE
|
||||
jr z, _keyboard_init_okay ; 0xFC -> Success. Init done!
|
||||
;Else device error
|
||||
ld hl, [STR_keyboard_init_failed]
|
||||
call print_str
|
||||
call PRINTINLINE
|
||||
db " to 0x",0
|
||||
;get start address
|
||||
ld bc,(MEM_IDE_BUFFER + 10)
|
||||
ld a,b
|
||||
ret
|
||||
_keyboard_init_failed:
|
||||
LD HL, [STR_keyboard_init_err]
|
||||
CALL print_str
|
||||
RET
|
||||
_keyboard_init_dev_missing:
|
||||
LD HL, [STR_keyboard_init_missing]
|
||||
CALL print_str
|
||||
RET
|
||||
_keyboard_init_okay:
|
||||
LD HL, [STR_keyboard_init_okay]
|
||||
CALL print_str
|
||||
RET
|
||||
|
||||
; a contains command
|
||||
; b conatins data
|
||||
keyb_cmd_wr:
|
||||
out (CS_VT82C42_CTRL),a ;write command byte
|
||||
ld a, b
|
||||
out (CS_VT82C42_DATA),a
|
||||
ret
|
||||
|
||||
; a contains command
|
||||
; a returns data
|
||||
keyb_cmd_rd:
|
||||
out (CS_VT82C42_CTRL),a ;write command byte
|
||||
_keyb_cmd_rd_l1:
|
||||
in a, (CS_VT82C42_CTRL) ;read status
|
||||
call print_a_hex
|
||||
ld a,c
|
||||
call print_a_hex
|
||||
call PRINTINLINE
|
||||
db " ... ",0
|
||||
;bc has start addr
|
||||
ld (MEM_FAT_EXEC_CURR),bc
|
||||
ld (MEM_FAT_EXEC_START),bc
|
||||
|
||||
;get amount of sectors to load
|
||||
ld hl,(MEM_IDE_BUFFER + 14)
|
||||
ld l,h
|
||||
srl l
|
||||
ld h,0 ;divide by 512
|
||||
inc hl ;increment because first sector is always loaded
|
||||
; hl contains sector count
|
||||
ld (MEM_FAT_EXEC_COUNT), hl
|
||||
|
||||
pop de ; restore filename
|
||||
call fat_openfile ;reset file information
|
||||
;start reading
|
||||
_fat_exec_readloop1:
|
||||
ld de,(MEM_FAT_EXEC_CURR)
|
||||
call fat_readfilesec
|
||||
ld hl,(MEM_FAT_EXEC_CURR)
|
||||
ld de,512
|
||||
add hl,de
|
||||
ld (MEM_FAT_EXEC_CURR),hl
|
||||
|
||||
ld hl,(MEM_FAT_EXEC_COUNT)
|
||||
dec hl
|
||||
ld (MEM_FAT_EXEC_COUNT),hl
|
||||
ld a,h
|
||||
or l
|
||||
jr z, _fat_exec_read_done
|
||||
jr _fat_exec_readloop1
|
||||
_fat_exec_read_done:
|
||||
call PRINTINLINE
|
||||
db "Load complete!",10,13,0
|
||||
ld hl,(MEM_FAT_EXEC_START)
|
||||
jp (hl)
|
||||
|
||||
|
||||
_fat_exec_notfound:
|
||||
call PRINTINLINE
|
||||
db 10,13,"File not found!",10,13,0
|
||||
rra
|
||||
jr nc, _keyb_cmd_rd_l1 ;wait until OBF is set (data avail)
|
||||
in a, (CS_VT82C42_DATA)
|
||||
ret
|
||||
|
||||
_fat_exec_notexec:
|
||||
call PRINTINLINE
|
||||
db 10,13,"File is not an executable!",10,13,0
|
||||
keyb_wait_ibf_empty:
|
||||
in a, (CS_VT82C42_CTRL) ;read status
|
||||
rra
|
||||
rra
|
||||
jr c, keyb_wait_ibf_empty ;if IBF, wait
|
||||
ret
|
||||
|
||||
|
||||
|
||||
_test_loop:
|
||||
call fat_readfilesec
|
||||
push af
|
||||
ld hl, MEM_IDE_BUFFER ;print sector
|
||||
ld b,0x20
|
||||
call dump_pretty
|
||||
;call PRINTINLINE
|
||||
;db 10,13,"SECREAD",10,13,0
|
||||
pop af
|
||||
or a
|
||||
jp z, _test_loop
|
||||
|
||||
;check if end of file
|
||||
|
||||
|
||||
keyb_wait_obf:
|
||||
in a, (CS_VT82C42_CTRL) ;read status
|
||||
rra
|
||||
jr nc, keyb_wait_obf ;if IBF, wait
|
||||
ret
|
||||
|
||||
;Status message strings
|
||||
STR_keyboard_init_okay:
|
||||
.BYTE "PS/2 Keyboard initialized.",0
|
||||
STR_keyboard_init_err:
|
||||
.BYTE "PS/2 Controller error! System HALT!",0
|
||||
STR_keyboard_init_failed:
|
||||
.BYTE "PS/2 Keyboard error! System HALT!",0
|
||||
STR_keyboard_init_missing:
|
||||
.BYTE "PS/2 no keyboard found!",0
|
||||
108
OperatingSystem/software/test_old2.asm
Normal file
108
OperatingSystem/software/test_old2.asm
Normal file
@@ -0,0 +1,108 @@
|
||||
.include "extern_symbols.s" ;include monitor symbols.
|
||||
org 0x6000
|
||||
|
||||
MEM_FAT_EXEC_CURR .equ var_scratch+10
|
||||
MEM_FAT_EXEC_COUNT .equ var_scratch+12
|
||||
MEM_FAT_EXEC_START .equ var_scratch+14
|
||||
|
||||
fat_exec:
|
||||
ld de,[var_input+6] ;prepare input like to mimic rom behaviour
|
||||
push de
|
||||
;DE has pointer to arguments
|
||||
call fat_openfile
|
||||
or a
|
||||
jp nz, _fat_exec_notfound ;if not found, abort
|
||||
;call fat_print_dbg
|
||||
;load header
|
||||
ld de, MEM_IDE_BUFFER
|
||||
call fat_readfilesec
|
||||
|
||||
|
||||
;ld hl, MEM_IDE_BUFFER ;print sector
|
||||
;ld b,0x20
|
||||
;call dump_pretty
|
||||
|
||||
ld a,(MEM_IDE_BUFFER)
|
||||
cp 0xC3
|
||||
jp nz, _fat_exec_notexec
|
||||
|
||||
call PRINTINLINE
|
||||
db 10,13,"Loading ",0
|
||||
ld hl,[var_input+6]
|
||||
call print_str
|
||||
call PRINTINLINE
|
||||
db " to 0x",0
|
||||
;get start address
|
||||
ld bc,(MEM_IDE_BUFFER + 10)
|
||||
ld a,b
|
||||
call print_a_hex
|
||||
ld a,c
|
||||
call print_a_hex
|
||||
call PRINTINLINE
|
||||
db " ... ",0
|
||||
;bc has start addr
|
||||
ld (MEM_FAT_EXEC_CURR),bc
|
||||
ld (MEM_FAT_EXEC_START),bc
|
||||
|
||||
;get amount of sectors to load
|
||||
ld hl,(MEM_IDE_BUFFER + 14)
|
||||
ld l,h
|
||||
srl l
|
||||
ld h,0 ;divide by 512
|
||||
inc hl ;increment because first sector is always loaded
|
||||
; hl contains sector count
|
||||
ld (MEM_FAT_EXEC_COUNT), hl
|
||||
|
||||
pop de ; restore filename
|
||||
call fat_openfile ;reset file information
|
||||
;start reading
|
||||
_fat_exec_readloop1:
|
||||
ld de,(MEM_FAT_EXEC_CURR)
|
||||
call fat_readfilesec
|
||||
ld hl,(MEM_FAT_EXEC_CURR)
|
||||
ld de,512
|
||||
add hl,de
|
||||
ld (MEM_FAT_EXEC_CURR),hl
|
||||
|
||||
ld hl,(MEM_FAT_EXEC_COUNT)
|
||||
dec hl
|
||||
ld (MEM_FAT_EXEC_COUNT),hl
|
||||
ld a,h
|
||||
or l
|
||||
jr z, _fat_exec_read_done
|
||||
jr _fat_exec_readloop1
|
||||
_fat_exec_read_done:
|
||||
call PRINTINLINE
|
||||
db "Load complete!",10,13,0
|
||||
ld hl,(MEM_FAT_EXEC_START)
|
||||
jp (hl)
|
||||
|
||||
|
||||
_fat_exec_notfound:
|
||||
call PRINTINLINE
|
||||
db 10,13,"File not found!",10,13,0
|
||||
ret
|
||||
|
||||
_fat_exec_notexec:
|
||||
call PRINTINLINE
|
||||
db 10,13,"File is not an executable!",10,13,0
|
||||
ret
|
||||
|
||||
|
||||
|
||||
_test_loop:
|
||||
call fat_readfilesec
|
||||
push af
|
||||
ld hl, MEM_IDE_BUFFER ;print sector
|
||||
ld b,0x20
|
||||
call dump_pretty
|
||||
;call PRINTINLINE
|
||||
;db 10,13,"SECREAD",10,13,0
|
||||
pop af
|
||||
or a
|
||||
jp z, _test_loop
|
||||
|
||||
;check if end of file
|
||||
|
||||
|
||||
ret
|
||||
Binary file not shown.
@@ -1,16 +1,17 @@
|
||||
:10600000118140D5CDD321B7C29A6011B641CDA838
|
||||
:10601000213AB641FEC3C2B260CD91010A0D4C6F68
|
||||
:106020006164696E672000218140CDE600CD910159
|
||||
:1060300020746F20307800ED4BC04178CD0E01798F
|
||||
:10604000CD0E01CD9101202E2E2E2000ED431540C6
|
||||
:10605000ED4319402AC4416CCB3D26002322174052
|
||||
:10606000D1CDD321ED5B1540CDA8212A15401100DB
|
||||
:1060700002192215402A17402B2217407CB528020E
|
||||
:1060800018E2CD91014C6F616420636F6D706C6597
|
||||
:106090007465210A0D002A1940E9CD91010A0D46C7
|
||||
:1060A000696C65206E6F7420666F756E64210A0DD1
|
||||
:1060B00000C9CD91010A0D46696C65206973206E97
|
||||
:1060C0006F7420616E2065786563757461626C65BC
|
||||
:1060D000210A0D00C9CDA821F521B6410620CDE148
|
||||
:0760E00017F1B7CAD560C932
|
||||
:106000003EA7D3F13EADD3F1DBF0DBF1CB4720F877
|
||||
:106010003E6006FCCD5B603EAACD6160FE55202649
|
||||
:106020003EABCD6160B7201E3EAED3F1CD6E603E7B
|
||||
:10603000EED3F0CD6E60CD7560DBF0FEEE2815215D
|
||||
:10604000BA60CDE600C9219660CDE600C921DC60CA
|
||||
:10605000CDE600C9217B60CDE600C9D3F178D3F04D
|
||||
:10606000C9D3F1DBF1CD0E011F30F8DBF0C9DBF154
|
||||
:106070001F1F38FAC9DBF11F30FBC950532F3220E4
|
||||
:106080004B6579626F61726420696E697469616CD5
|
||||
:10609000697A65642E0050532F3220436F6E7472FC
|
||||
:1060A0006F6C6C6572206572726F72212053797308
|
||||
:1060B00074656D2048414C54210050532F32204BC1
|
||||
:1060C0006579626F617264206572726F722120530C
|
||||
:1060D000797374656D2048414C54210050532F3220
|
||||
:1060E000206E6F206B6579626F61726420666F75D8
|
||||
:0460F0006E642100B9
|
||||
:00000001FF
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,15 +1,16 @@
|
||||
!6000 11 81 40 D5 CD D3 21 B7 C2 9A 60 11 B6 41 CD A8
|
||||
!6010 21 3A B6 41 FE C3 C2 B2 60 CD 91 01 0A 0D 4C 6F
|
||||
!6020 61 64 69 6E 67 20 00 21 81 40 CD E6 00 CD 91 01
|
||||
!6030 20 74 6F 20 30 78 00 ED 4B C0 41 78 CD 0E 01 79
|
||||
!6040 CD 0E 01 CD 91 01 20 2E 2E 2E 20 00 ED 43 15 40
|
||||
!6050 ED 43 19 40 2A C4 41 6C CB 3D 26 00 23 22 17 40
|
||||
!6060 D1 CD D3 21 ED 5B 15 40 CD A8 21 2A 15 40 11 00
|
||||
!6070 02 19 22 15 40 2A 17 40 2B 22 17 40 7C B5 28 02
|
||||
!6080 18 E2 CD 91 01 4C 6F 61 64 20 63 6F 6D 70 6C 65
|
||||
!6090 74 65 21 0A 0D 00 2A 19 40 E9 CD 91 01 0A 0D 46
|
||||
!60A0 69 6C 65 20 6E 6F 74 20 66 6F 75 6E 64 21 0A 0D
|
||||
!60B0 00 C9 CD 91 01 0A 0D 46 69 6C 65 20 69 73 20 6E
|
||||
!60C0 6F 74 20 61 6E 20 65 78 65 63 75 74 61 62 6C 65
|
||||
!60D0 21 0A 0D 00 C9 CD A8 21 F5 21 B6 41 06 20 CD E1
|
||||
!60E0 17 F1 B7 CA D5 60 C9
|
||||
!6000 3E A7 D3 F1 3E AD D3 F1 DB F0 DB F1 CB 47 20 F8
|
||||
!6010 3E 60 06 FC CD 5B 60 3E AA CD 61 60 FE 55 20 26
|
||||
!6020 3E AB CD 61 60 B7 20 1E 3E AE D3 F1 CD 6E 60 3E
|
||||
!6030 EE D3 F0 CD 6E 60 CD 75 60 DB F0 FE EE 28 15 21
|
||||
!6040 BA 60 CD E6 00 C9 21 96 60 CD E6 00 C9 21 DC 60
|
||||
!6050 CD E6 00 C9 21 7B 60 CD E6 00 C9 D3 F1 78 D3 F0
|
||||
!6060 C9 D3 F1 DB F1 CD 0E 01 1F 30 F8 DB F0 C9 DB F1
|
||||
!6070 1F 1F 38 FA C9 DB F1 1F 30 FB C9 50 53 2F 32 20
|
||||
!6080 4B 65 79 62 6F 61 72 64 20 69 6E 69 74 69 61 6C
|
||||
!6090 69 7A 65 64 2E 00 50 53 2F 32 20 43 6F 6E 74 72
|
||||
!60A0 6F 6C 6C 65 72 20 65 72 72 6F 72 21 20 53 79 73
|
||||
!60B0 74 65 6D 20 48 41 4C 54 21 00 50 53 2F 32 20 4B
|
||||
!60C0 65 79 62 6F 61 72 64 20 65 72 72 6F 72 21 20 53
|
||||
!60D0 79 73 74 65 6D 20 48 41 4C 54 21 00 50 53 2F 32
|
||||
!60E0 20 6E 6F 20 6B 65 79 62 6F 61 72 64 20 66 6F 75
|
||||
!60F0 6E 64 21 00
|
||||
|
||||
Reference in New Issue
Block a user