Browse Source

Big changes, starting to divided up i .c and .h files

pull/2/head
Jørn Guldberg 5 years ago
parent
commit
ec61cd8b8a
11 changed files with 2669 additions and 1327 deletions
  1. +1
    -1
      build.sh
  2. +0
    -749
      debug.txt
  3. BIN
      disk.out
  4. +112
    -0
      implementation/lsfs.c
  5. +6
    -0
      implementation/lsfs.h
  6. +1846
    -0
      implementation/lsfs.s
  7. +10
    -104
      main.c
  8. +100
    -0
      main.h
  9. +564
    -467
      main.s
  10. +26
    -0
      std_singos/stdlib.h
  11. +4
    -6
      std_singos/string.h

+ 1
- 1
build.sh View File

@ -1,4 +1,4 @@
bcc -S main.c
bcc -S main.c implementation/lsfs.c
echo -e "push bp
mov bp,sp
push 10[bp]

+ 0
- 749
debug.txt View File

@ -1,749 +0,0 @@
std_singos/string.h:257.6: error: need '{'
std_singos/string.h:257.17: error: size_t undeclared
std_singos/string.h:257.17: error: need ';'
std_singos/string.h:263.16: error: NULL undeclared
std_singos/string.h:263.16: error: compiler bug? - botched implicit cast
std_singos/string.h:267.14: error: bad expression
std_singos/string.h:267.32: error: need ';'
std_singos/string.h:267.40: error: length undeclared
std_singos/string.h:267.47: error: chars undeclared
std_singos/string.h:268.8: error: need ';'
std_singos/string.h:268.8: error: bad expression
std_singos/string.h:268.12: error: need ';'
std_singos/string.h:268.12: error: bad expression
std_singos/string.h:268.19: error: need ';'
std_singos/string.h:269.4: error: bad expression
std_singos/string.h:281.16: error: compiler bug? - botched implicit cast
std_singos/stdio.h:1.4: error: bad expression
std_singos/stdio.h:1.10: error: need ';'
std_singos/stdio.h:1.18: error: string undeclared
std_singos/stdio.h:3.4: error: bad expression
std_singos/stdio.h:3.10: error: need ';'
std_singos/stdio.h:4.4: error: need ';'
std_singos/stdio.h:4.4: error: bad expression
std_singos/stdio.h:15.4: error: bad expression
std_singos/stdio.h:15.16: error: need ';'
std_singos/stdio.h:15.26: error: argument undeclared
std_singos/stdio.h:16.1: error: need ';'
std_singos/stdio.h:34.21: error: input undeclared
std_singos/stdio.h:35.4: error: need ';'
std_singos/stdio.h:35.4: error: bad expression
std_singos/stdio.h:37.17: error: compiler bug? - botched implicit cast
std_singos/stdio.h:40.4: error: bad expression
std_singos/stdio.h:40.12: error: need ';'
std_singos/stdio.h:41.4: error: need ';'
std_singos/stdio.h:41.4: error: bad expression
std_singos/stdio.h:53.4: error: bad expression
std_singos/stdio.h:53.18: error: need ';'
std_singos/stdio.h:54.1: error: need ';'
driver/disk.h:1.3: error: bad expression
driver/disk.h:1.18: error: need ';'
driver/disk.h:1.25: error: index undeclared
driver/disk.h:1.41: error: number_sectors undeclared
driver/disk.h:1.54: error: data_buffer undeclared
driver/disk.h:1.75: error: data_buffer_segment undeclared
driver/disk.h:2.3: error: bad expression
driver/disk.h:2.36: error: need ';'
driver/disk.h:4.3: error: bad expression
driver/disk.h:4.36: error: need ';'
driver/disk.h:5.4: error: need ';'
driver/disk.h:5.4: error: bad expression
driver/disk.h:6.4: error: bad expression
driver/disk.h:6.19: error: need ';'
driver/disk.h:7.4: error: bad expression
driver/disk.h:8.3: error: bad expression
driver/disk.h:8.23: error: need ';'
main.c:21.4: error: bad expression
main.c:21.12: error: need ';'
main.c:22.4: error: bad expression
main.c:22.16: error: need ';'
main.c:23.4: error: bad expression
main.c:23.18: error: need ';'
main.c:25.7: error: bad expression
main.c:25.14: error: need ';'
main.c:25.14: error: bad expression
main.c:25.30: error: need ';'
main.c:25.46: error: Directory_Table undeclared
main.c:25.46: error: need ';'
main.c:26.7: error: bad expression
main.c:26.14: error: need ';'
main.c:26.14: error: bad expression
main.c:26.33: error: need ';'
main.c:26.45: error: Struct_Table_Entry undeclared
main.c:26.45: error: need ';'
main.c:26.46: error: Table_Entry undeclared
main.c:27.7: error: bad expression
main.c:27.14: error: need ';'
main.c:27.14: error: bad expression
main.c:27.39: error: need ';'
main.c:27.57: error: struct_partition_control undeclared
main.c:27.57: error: need ';'
main.c:27.58: error: partition_control undeclared
main.c:28.7: error: bad expression
main.c:28.14: error: need ';'
main.c:28.14: error: bad expression
main.c:28.46: error: need ';'
main.c:28.51: error: File_System_Control_Information undeclared
main.c:28.51: error: need ';'
main.c:28.52: error: FSCI undeclared
main.c:29.7: error: bad expression
main.c:29.14: error: need ';'
main.c:29.14: error: bad expression
main.c:29.38: error: need ';'
main.c:29.42: error: meta_information_format undeclared
main.c:29.42: error: need ';'
main.c:29.43: error: mif undeclared
main.c:30.7: error: bad expression
main.c:30.14: error: need ';'
main.c:30.14: error: bad expression
main.c:30.25: error: need ';'
main.c:30.36: error: tag_record undeclared
main.c:30.36: error: need ';'
main.c:31.7: error: bad expression
main.c:31.14: error: need ';'
main.c:31.14: error: bad expression
main.c:31.24: error: need ';'
main.c:31.34: error: lsfs_file undeclared
main.c:31.34: error: need ';'
main.c:32.7: error: bad expression
main.c:32.14: error: need ';'
main.c:32.14: error: bad expression
main.c:32.31: error: need ';'
main.c:32.48: error: Parameter_Struct undeclared
main.c:32.48: error: need ';'
main.c:34.7: error: bad expression
main.c:34.12: error: need ';'
main.c:34.12: error: bad expression
main.c:34.29: error: need ';'
main.c:35.1: error: Table_Entry_Kind undeclared
main.c:35.1: error: need ';'
main.c:37.17: error: ENTRY_EMPTY undeclared
main.c:38.16: error: ENTRY_FILE undeclared
main.c:39.21: error: ENTRY_DIRECTORY undeclared
main.c:40.1: error: bad expression
main.c:40.18: error: need ';'
main.c:42.7: error: bad expression
main.c:42.12: error: need ';'
main.c:42.12: error: bad expression
main.c:42.27: error: need ';'
main.c:43.1: error: Service_Action undeclared
main.c:43.1: error: need ';'
main.c:44.24: error: SERIVCE_LOAD_DISK undeclared
main.c:45.24: error: SERVICE_FIND_ENTRY undeclared
main.c:46.24: error: SERIVCE_READ_DATA undeclared
main.c:47.24: error: SERIVCE_WRITE_DATA undeclared
main.c:49.1: error: bad expression
main.c:49.16: error: need ';'
main.c:51.6: error: bad expression
main.c:51.25: error: need ';'
main.c:52.1: error: need ';'
main.c:67.6: error: bad expression
main.c:67.38: error: need ';'
main.c:68.1: error: need ';'
main.c:82.7: error: bad expression
main.c:82.14: error: need ';'
main.c:82.14: error: bad expression
main.c:82.30: error: need ';'
main.c:83.1: error: need ';'
main.c:84.23: error: need ';'
main.c:84.24: error: entries undeclared
main.c:84.29: error: illegal indirection
main.c:88.6: error: bad expression
main.c:88.23: error: need ';'
main.c:89.1: error: need ';'
main.c:97.31: error: need ';'
main.c:97.32: error: entry_kind undeclared
main.c:100.3: error: bad expression
main.c:100.8: error: need ';'
main.c:100.18: error: selector undeclared
main.c:100.45: error: pointer_parameter_segment undeclared
main.c:100.71: error: pointer_parameter_struct undeclared
main.c:101.3: error: need ';'
main.c:101.3: error: bad expression
main.c:101.12: error: need ';'
main.c:102.4: error: bad expression
main.c:103.4: error: bad expression
main.c:108.13: error: need ';'
main.c:108.14: error: fsci undeclared
main.c:109.33: error: need ';'
main.c:109.34: error: service_action undeclared
main.c:110.33: error: need ';'
main.c:110.34: error: current_table undeclared
main.c:111.37: error: need ';'
main.c:111.38: error: parameter_struct undeclared
main.c:112.7: error: bad expression
main.c:112.21: error: need ';'
main.c:112.23: error: local_segment undeclared
main.c:113.7: error: bad expression
main.c:113.21: error: need ';'
main.c:113.23: error: stack_segment undeclared
main.c:114.7: error: bad expression
main.c:114.19: error: need ';'
main.c:114.20: error: path_length undeclared
main.c:115.8: error: bad expression
main.c:115.22: error: need ';'
main.c:115.23: error: index_as_long undeclared
main.c:117.8: error: bad expression
main.c:117.19: error: need ';'
main.c:117.20: error: local_path undeclared
main.c:117.24: error: illegal indirection
main.c:122.31: error: constant expression required
main.c:132.51: error: undefined structure element
main.c:135.32: error: constant expression required
main.c:140.35: error: illegal indirection
main.c:143.71: error: illegal indirection
main.c:146.48: error: illegal indirection
main.c:146.59: error: compiler bug? - taking address of non-lvalue
main.c:148.48: error: illegal indirection
main.c:148.59: error: compiler bug? - taking address of non-lvalue
main.c:150.48: error: illegal indirection
main.c:150.59: error: compiler bug? - taking address of non-lvalue
main.c:153.31: error: constant expression required
main.c:166.32: error: constant expression required
main.c:176.10: error: duplicate case in switch
main.c:176.10: error: duplicate case in switch
main.c:176.10: error: duplicate case in switch
main.c:176.13: error: compiler bug? - botched implicit cast
main.c:eof: error: need '}'
main.c:eof: error: need '}'
main.c:eof: error: need '}'
01923 .fail 209 errors detected
***** junk after operands...............................^
00006 000C E8 0000 call _main
***** unbound label..................................^
***** relocation impossible...............................^
00339 0119 E8 0000 call _malloc
***** unbound label.....................................^
***** relocation impossible....................................^
00610 0242 E8 0000 call _lsfs_create_string
***** unbound label.....................................^
***** relocation impossible................................................^
00688 02B1 E8 0000 call _lsfs_create_string
***** unbound label.....................................^
***** relocation impossible................................................^
00736 fail! std_singos/string.h:257.6: error: need '{'
***** user-generated error..........................^
00741 fail! std_singos/string.h:257.17: error: size_t undeclared
***** user-generated error..........................^
00743 fail! std_singos/string.h:257.17: error: need ';'
***** user-generated error..........................^
00751 fail! std_singos/string.h:263.16: error: NULL undeclared
***** user-generated error..........................^
00752 fail! std_singos/string.h:263.16: error: compiler bug? - botched implicit cast
***** user-generated error..........................^
00769 fail! std_singos/string.h:267.14: error: bad expression
***** user-generated error..........................^
00771 fail! std_singos/string.h:267.32: error: need ';'
***** user-generated error..........................^
00772 fail! std_singos/string.h:267.40: error: length undeclared
***** user-generated error..........................^
00773 fail! std_singos/string.h:267.47: error: chars undeclared
***** user-generated error..........................^
00783 031F E8 0000 call _lsfs_create_string
***** unbound label.....................................^
***** relocation impossible................................................^
00788 fail! std_singos/string.h:268.8: error: need ';'
***** user-generated error..........................^
00789 fail! std_singos/string.h:268.8: error: bad expression
***** user-generated error..........................^
00791 fail! std_singos/string.h:268.12: error: need ';'
***** user-generated error..........................^
00792 fail! std_singos/string.h:268.12: error: bad expression
***** user-generated error..........................^
00794 fail! std_singos/string.h:268.19: error: need ';'
***** user-generated error..........................^
00797 fail! std_singos/string.h:269.4: error: bad expression
***** user-generated error..........................^
00815 fail! std_singos/string.h:281.16: error: compiler bug? - botched implicit cast
***** user-generated error..........................^
00832 fail! std_singos/stdio.h:1.4: error: bad expression
***** user-generated error..........................^
00834 fail! std_singos/stdio.h:1.10: error: need ';'
***** user-generated error..........................^
00835 fail! std_singos/stdio.h:1.18: error: string undeclared
***** user-generated error..........................^
00839 0348 E8 0000 call _print
***** relocation impossible...................................^
***** unbound label.....................................^
00845 fail! std_singos/stdio.h:3.4: error: bad expression
***** user-generated error..........................^
00847 fail! std_singos/stdio.h:3.10: error: need ';'
***** user-generated error..........................^
00852 0351 E8 0000 call _print
***** unbound label.....................................^
***** relocation impossible...................................^
00856 fail! std_singos/stdio.h:4.4: error: need ';'
***** user-generated error..........................^
00857 fail! std_singos/stdio.h:4.4: error: bad expression
***** user-generated error..........................^
00880 fail! std_singos/stdio.h:15.4: error: bad expression
***** user-generated error..........................^
00882 fail! std_singos/stdio.h:15.16: error: need ';'
***** user-generated error..........................^
00883 fail! std_singos/stdio.h:15.26: error: argument undeclared
***** user-generated error..........................^
00888 036B E8 0000 call _print_stack
***** unbound label.....................................^
***** relocation impossible.........................................^
00892 fail! std_singos/stdio.h:16.1: error: need ';'
***** user-generated error..........................^
00917 fail! std_singos/stdio.h:34.21: error: input undeclared
***** user-generated error..........................^
00922 0388 E8 0000 call _dump_ax_return
***** unbound label.....................................^
***** relocation impossible............................................^
00926 fail! std_singos/stdio.h:35.4: error: need ';'
***** user-generated error..........................^
00927 fail! std_singos/stdio.h:35.4: error: bad expression
***** user-generated error..........................^
00935 fail! std_singos/stdio.h:37.17: error: compiler bug? - botched implicit cast
***** user-generated error..........................^
00951 fail! std_singos/stdio.h:40.4: error: bad expression
***** user-generated error..........................^
00953 fail! std_singos/stdio.h:40.12: error: need ';'
***** user-generated error..........................^
00958 03AB E8 0000 call _dump_ax
***** relocation impossible.....................................^
***** unbound label.....................................^
00962 fail! std_singos/stdio.h:41.4: error: need ';'
***** user-generated error..........................^
00963 fail! std_singos/stdio.h:41.4: error: bad expression
***** user-generated error..........................^
00976 03B9 E8 0000 call _dump_ax_return
***** unbound label.....................................^
***** relocation impossible............................................^
00993 fail! std_singos/stdio.h:53.4: error: bad expression
***** user-generated error..........................^
00995 fail! std_singos/stdio.h:53.18: error: need ';'
***** user-generated error..........................^
00998 03C7 E8 0000 call _print_newline
***** relocation impossible...........................................^
***** unbound label.....................................^
01000 fail! std_singos/stdio.h:54.1: error: need ';'
***** user-generated error..........................^
01019 fail! driver/disk.h:1.3: error: bad expression
***** user-generated error..........................^
01021 fail! driver/disk.h:1.18: error: need ';'
***** user-generated error..........................^
01022 fail! driver/disk.h:1.25: error: index undeclared
***** user-generated error..........................^
01023 fail! driver/disk.h:1.41: error: number_sectors undeclared
***** user-generated error..........................^
01024 fail! driver/disk.h:1.54: error: data_buffer undeclared
***** user-generated error..........................^
01025 fail! driver/disk.h:1.75: error: data_buffer_segment undeclared
***** user-generated error..........................^
01035 03E5 E8 0000 call _data_from_disk
***** unbound label.....................................^
***** relocation impossible............................................^
01039 fail! driver/disk.h:2.3: error: bad expression
***** user-generated error..........................^
01041 fail! driver/disk.h:2.36: error: need ';'
***** user-generated error..........................^
01051 03FB E8 0000 call _disk_service_read_data_from_disk
***** unbound label.....................................^
***** relocation impossible..............................................................^
01056 fail! driver/disk.h:4.3: error: bad expression
***** user-generated error..........................^
01059 fail! driver/disk.h:4.36: error: need ';'
***** user-generated error..........................^
01070 0411 E8 0000 call _disk_service_read_data_from_disk
***** unbound label.....................................^
***** relocation impossible..............................................................^
01073 fail! driver/disk.h:5.4: error: need ';'
***** user-generated error..........................^
01074 fail! driver/disk.h:5.4: error: bad expression
***** user-generated error..........................^
01081 fail! driver/disk.h:6.4: error: bad expression
***** user-generated error..........................^
01083 fail! driver/disk.h:6.19: error: need ';'
***** user-generated error..........................^
01086 fail! driver/disk.h:7.4: error: bad expression
***** user-generated error..........................^
01093 fail! driver/disk.h:8.3: error: bad expression
***** user-generated error..........................^
01095 fail! driver/disk.h:8.23: error: need ';'
***** user-generated error..........................^
01159 fail! main.c:21.4: error: bad expression
***** user-generated error..........................^
01161 fail! main.c:21.12: error: need ';'
***** user-generated error..........................^
01165 0463 E8 0000 call _dump_ax
***** relocation impossible.....................................^
***** unbound label.....................................^
01170 fail! main.c:22.4: error: bad expression
***** user-generated error..........................^
01172 fail! main.c:22.16: error: need ';'
***** user-generated error..........................^
01176 046C E8 0000 call _print_stack
***** unbound label.....................................^
***** relocation impossible.........................................^
01181 fail! main.c:23.4: error: bad expression
***** user-generated error..........................^
01183 fail! main.c:23.18: error: need ';'
***** user-generated error..........................^
01185 0471 E8 0000 call _print_newline
***** unbound label.....................................^
***** relocation impossible...........................................^
01189 fail! main.c:25.7: error: bad expression
***** user-generated error..........................^
01191 fail! main.c:25.14: error: need ';'
***** user-generated error..........................^
01192 fail! main.c:25.14: error: bad expression
***** user-generated error..........................^
01194 fail! main.c:25.30: error: need ';'
***** user-generated error..........................^
01195 fail! main.c:25.46: error: Directory_Table undeclared
***** user-generated error..........................^
01197 fail! main.c:25.46: error: need ';'
***** user-generated error..........................^
01200 fail! main.c:26.7: error: bad expression
***** user-generated error..........................^
01202 fail! main.c:26.14: error: need ';'
***** user-generated error..........................^
01203 fail! main.c:26.14: error: bad expression
***** user-generated error..........................^
01205 fail! main.c:26.33: error: need ';'
***** user-generated error..........................^
01206 fail! main.c:26.45: error: Struct_Table_Entry undeclared
***** user-generated error..........................^
01208 fail! main.c:26.45: error: need ';'
***** user-generated error..........................^
01209 fail! main.c:26.46: error: Table_Entry undeclared
***** user-generated error..........................^
01212 fail! main.c:27.7: error: bad expression
***** user-generated error..........................^
01214 fail! main.c:27.14: error: need ';'
***** user-generated error..........................^
01215 fail! main.c:27.14: error: bad expression
***** user-generated error..........................^
01217 fail! main.c:27.39: error: need ';'
***** user-generated error..........................^
01218 fail! main.c:27.57: error: struct_partition_control undeclared
***** user-generated error..........................^
01220 fail! main.c:27.57: error: need ';'
***** user-generated error..........................^
01221 fail! main.c:27.58: error: partition_control undeclared
***** user-generated error..........................^
01224 fail! main.c:28.7: error: bad expression
***** user-generated error..........................^
01226 fail! main.c:28.14: error: need ';'
***** user-generated error..........................^
01227 fail! main.c:28.14: error: bad expression
***** user-generated error..........................^
01229 fail! main.c:28.46: error: need ';'
***** user-generated error..........................^
01230 fail! main.c:28.51: error: File_System_Control_Information undeclared
***** user-generated error..........................^
01232 fail! main.c:28.51: error: need ';'
***** user-generated error..........................^
01233 fail! main.c:28.52: error: FSCI undeclared
***** user-generated error..........................^
01236 fail! main.c:29.7: error: bad expression
***** user-generated error..........................^
01238 fail! main.c:29.14: error: need ';'
***** user-generated error..........................^
01239 fail! main.c:29.14: error: bad expression
***** user-generated error..........................^
01241 fail! main.c:29.38: error: need ';'
***** user-generated error..........................^
01242 fail! main.c:29.42: error: meta_information_format undeclared
***** user-generated error..........................^
01244 fail! main.c:29.42: error: need ';'
***** user-generated error..........................^
01245 fail! main.c:29.43: error: mif undeclared
***** user-generated error..........................^
01248 fail! main.c:30.7: error: bad expression
***** user-generated error..........................^
01250 fail! main.c:30.14: error: need ';'
***** user-generated error..........................^
01251 fail! main.c:30.14: error: bad expression
***** user-generated error..........................^
01253 fail! main.c:30.25: error: need ';'
***** user-generated error..........................^
01254 fail! main.c:30.36: error: tag_record undeclared
***** user-generated error..........................^
01256 fail! main.c:30.36: error: need ';'
***** user-generated error..........................^
01259 fail! main.c:31.7: error: bad expression
***** user-generated error..........................^
01261 fail! main.c:31.14: error: need ';'
***** user-generated error..........................^
01262 fail! main.c:31.14: error: bad expression
***** user-generated error..........................^
01264 fail! main.c:31.24: error: need ';'
***** user-generated error..........................^
01265 fail! main.c:31.34: error: lsfs_file undeclared
***** user-generated error..........................^
01267 fail! main.c:31.34: error: need ';'
***** user-generated error..........................^
01270 fail! main.c:32.7: error: bad expression
***** user-generated error..........................^
01272 fail! main.c:32.14: error: need ';'
***** user-generated error..........................^
01273 fail! main.c:32.14: error: bad expression
***** user-generated error..........................^
01275 fail! main.c:32.31: error: need ';'
***** user-generated error..........................^
01276 fail! main.c:32.48: error: Parameter_Struct undeclared
***** user-generated error..........................^
01278 fail! main.c:32.48: error: need ';'
***** user-generated error..........................^
01282 fail! main.c:34.7: error: bad expression
***** user-generated error..........................^
01284 fail! main.c:34.12: error: need ';'
***** user-generated error..........................^
01285 fail! main.c:34.12: error: bad expression
***** user-generated error..........................^
01287 fail! main.c:34.29: error: need ';'
***** user-generated error..........................^
01289 fail! main.c:35.1: error: Table_Entry_Kind undeclared
***** user-generated error..........................^
01291 fail! main.c:35.1: error: need ';'
***** user-generated error..........................^
01294 fail! main.c:37.17: error: ENTRY_EMPTY undeclared
***** user-generated error..........................^
01296 fail! main.c:38.16: error: ENTRY_FILE undeclared
***** user-generated error..........................^
01298 fail! main.c:39.21: error: ENTRY_DIRECTORY undeclared
***** user-generated error..........................^
01300 fail! main.c:40.1: error: bad expression
***** user-generated error..........................^
01311 fail! main.c:40.18: error: need ';'
***** user-generated error..........................^
01315 fail! main.c:42.7: error: bad expression
***** user-generated error..........................^
01317 fail! main.c:42.12: error: need ';'
***** user-generated error..........................^
01318 fail! main.c:42.12: error: bad expression
***** user-generated error..........................^
01320 fail! main.c:42.27: error: need ';'
***** user-generated error..........................^
01322 fail! main.c:43.1: error: Service_Action undeclared
***** user-generated error..........................^
01324 fail! main.c:43.1: error: need ';'
***** user-generated error..........................^
01326 fail! main.c:44.24: error: SERIVCE_LOAD_DISK undeclared
***** user-generated error..........................^
01328 fail! main.c:45.24: error: SERVICE_FIND_ENTRY undeclared
***** user-generated error..........................^
01330 fail! main.c:46.24: error: SERIVCE_READ_DATA undeclared
***** user-generated error..........................^
01332 fail! main.c:47.24: error: SERIVCE_WRITE_DATA undeclared
***** user-generated error..........................^
01335 fail! main.c:49.1: error: bad expression
***** user-generated error..........................^
01349 fail! main.c:49.16: error: need ';'
***** user-generated error..........................^
01353 fail! main.c:51.6: error: bad expression
***** user-generated error..........................^
01355 fail! main.c:51.25: error: need ';'
***** user-generated error..........................^
01358 fail! main.c:52.1: error: need ';'
***** user-generated error..........................^
01388 fail! main.c:67.6: error: bad expression
***** user-generated error..........................^
01390 fail! main.c:67.38: error: need ';'
***** user-generated error..........................^
01393 fail! main.c:68.1: error: need ';'
***** user-generated error..........................^
01419 fail! main.c:82.7: error: bad expression
***** user-generated error..........................^
01421 fail! main.c:82.14: error: need ';'
***** user-generated error..........................^
01422 fail! main.c:82.14: error: bad expression
***** user-generated error..........................^
01424 fail! main.c:82.30: error: need ';'
***** user-generated error..........................^
01427 fail! main.c:83.1: error: need ';'
***** user-generated error..........................^
01430 fail! main.c:84.23: error: need ';'
***** user-generated error..........................^
01431 fail! main.c:84.24: error: entries undeclared
***** user-generated error..........................^
01432 fail! main.c:84.29: error: illegal indirection
***** user-generated error..........................^
01439 fail! main.c:88.6: error: bad expression
***** user-generated error..........................^
01441 fail! main.c:88.23: error: need ';'
***** user-generated error..........................^
01444 fail! main.c:89.1: error: need ';'
***** user-generated error..........................^
01462 fail! main.c:97.31: error: need ';'
***** user-generated error..........................^
01463 fail! main.c:97.32: error: entry_kind undeclared
***** user-generated error..........................^
01470 fail! main.c:100.3: error: bad expression
***** user-generated error..........................^
01472 fail! main.c:100.8: error: need ';'
***** user-generated error..........................^
01473 fail! main.c:100.18: error: selector undeclared
***** user-generated error..........................^
01474 fail! main.c:100.45: error: pointer_parameter_segment undeclared
***** user-generated error..........................^
01475 fail! main.c:100.71: error: pointer_parameter_struct undeclared
***** user-generated error..........................^
01484 04AF E8 0000 call _main
***** relocation impossible..................................^
***** unbound label.....................................^
01487 fail! main.c:101.3: error: need ';'
***** user-generated error..........................^
01488 fail! main.c:101.3: error: bad expression
***** user-generated error..........................^
01490 fail! main.c:101.12: error: need ';'
***** user-generated error..........................^
01493 fail! main.c:102.4: error: bad expression
***** user-generated error..........................^
01500 fail! main.c:103.4: error: bad expression
***** user-generated error..........................^
01512 fail! main.c:108.13: error: need ';'
***** user-generated error..........................^
01513 fail! main.c:108.14: error: fsci undeclared
***** user-generated error..........................^
01517 fail! main.c:109.33: error: need ';'
***** user-generated error..........................^
01518 fail! main.c:109.34: error: service_action undeclared
***** user-generated error..........................^
01522 fail! main.c:110.33: error: need ';'
***** user-generated error..........................^
01523 fail! main.c:110.34: error: current_table undeclared
***** user-generated error..........................^
01527 fail! main.c:111.37: error: need ';'
***** user-generated error..........................^
01528 fail! main.c:111.38: error: parameter_struct undeclared
***** user-generated error..........................^
01531 fail! main.c:112.7: error: bad expression
***** user-generated error..........................^
01533 fail! main.c:112.21: error: need ';'
***** user-generated error..........................^
01534 fail! main.c:112.23: error: local_segment undeclared
***** user-generated error..........................^
01540 fail! main.c:113.7: error: bad expression
***** user-generated error..........................^
01542 fail! main.c:113.21: error: need ';'
***** user-generated error..........................^
01543 fail! main.c:113.23: error: stack_segment undeclared
***** user-generated error..........................^
01549 fail! main.c:114.7: error: bad expression
***** user-generated error..........................^
01551 fail! main.c:114.19: error: need ';'
***** user-generated error..........................^
01552 fail! main.c:114.20: error: path_length undeclared
***** user-generated error..........................^
01555 fail! main.c:115.8: error: bad expression
***** user-generated error..........................^
01557 fail! main.c:115.22: error: need ';'
***** user-generated error..........................^
01558 fail! main.c:115.23: error: index_as_long undeclared
***** user-generated error..........................^
01562 fail! main.c:117.8: error: bad expression
***** user-generated error..........................^
01564 fail! main.c:117.19: error: need ';'
***** user-generated error..........................^
01565 fail! main.c:117.20: error: local_path undeclared
***** user-generated error..........................^
01566 fail! main.c:117.24: error: illegal indirection
***** user-generated error..........................^
01579 fail! main.c:122.31: error: constant expression required
***** user-generated error..........................^
01603 04ED E8 0000 call _disk_service_read_data_from_disk
***** unbound label.....................................^
***** relocation impossible..............................................................^
01611 04F7 E8 0000 call _print
***** relocation impossible...................................^
***** unbound label.....................................^
01617 04FC E8 0000 call _print_newline
***** unbound label.....................................^
***** relocation impossible...........................................^
01620 fail! main.c:132.51: error: undefined structure element
***** user-generated error..........................^
01624 0503 E8 0000 call _print_stack
***** relocation impossible.........................................^
***** unbound label.....................................^
01630 0508 E8 0000 call _print_newline
***** unbound label.....................................^
***** relocation impossible...........................................^
01636 fail! main.c:135.32: error: constant expression required
***** user-generated error..........................^
01684 fail! main.c:140.35: error: illegal indirection
***** user-generated error..........................^
01690 0557 E8 0000 call _print_stack
***** relocation impossible.........................................^
***** unbound label.....................................^
01696 055C E8 0000 call _print_newline
***** unbound label.....................................^
***** relocation impossible...........................................^
01699 fail! main.c:143.71: error: illegal indirection
***** user-generated error..........................^
01712 056E E8 0000 call _disk_service_read_data_from_disk
***** unbound label.....................................^
***** relocation impossible..............................................................^
01720 0578 E8 0000 call _print
***** relocation impossible...................................^
***** unbound label.....................................^
01726 057D E8 0000 call _print_newline
***** unbound label.....................................^
***** relocation impossible...........................................^
01729 fail! main.c:146.48: error: illegal indirection
***** user-generated error..........................^
01730 fail! main.c:146.59: error: compiler bug? - taking address of non-lvalue
***** user-generated error..........................^
01734 0584 E8 0000 call _print_stack
***** relocation impossible.........................................^
***** unbound label.....................................^
01740 0589 E8 0000 call _print_newline
***** unbound label.....................................^
***** relocation impossible...........................................^
01743 fail! main.c:148.48: error: illegal indirection
***** user-generated error..........................^
01744 fail! main.c:148.59: error: compiler bug? - taking address of non-lvalue
***** user-generated error..........................^
01748 0590 E8 0000 call _print_stack
***** relocation impossible.........................................^
***** unbound label.....................................^
01754 0595 E8 0000 call _print_newline
***** unbound label.....................................^
***** relocation impossible...........................................^
01757 fail! main.c:150.48: error: illegal indirection
***** user-generated error..........................^
01758 fail! main.c:150.59: error: compiler bug? - taking address of non-lvalue
***** user-generated error..........................^
01762 059C E8 0000 call _print_stack
***** relocation impossible.........................................^
***** unbound label.....................................^
01768 05A1 E8 0000 call _print_newline
***** unbound label.....................................^
***** relocation impossible...........................................^
01774 fail! main.c:153.31: error: constant expression required
***** user-generated error..........................^
01784 05AA E8 0000 call _print
***** relocation impossible...................................^
***** unbound label.....................................^
01792 fail! main.c:166.32: error: constant expression required
***** user-generated error..........................^
01800 05B5 E8 0000 call _print
***** unbound label.....................................^
***** relocation impossible...................................^
01815 05C0 E8 0000 call _print
***** unbound label.....................................^
***** relocation impossible...................................^
01825 fail! main.c:176.10: error: duplicate case in switch
***** user-generated error..........................^
01826 fail! main.c:176.10: error: duplicate case in switch
***** user-generated error..........................^
01827 fail! main.c:176.10: error: duplicate case in switch
***** user-generated error..........................^
01839 fail! main.c:176.13: error: compiler bug? - botched implicit cast
***** user-generated error..........................^
01852 fail! main.c:eof: error: need '}'
***** user-generated error..........................^
01853 fail! main.c:eof: error: need '}'
***** user-generated error..........................^
01854 fail! main.c:eof: error: need '}'
***** user-generated error..........................^
01923 .fail 209 errors detected
***** junk after operands...............................^
***** user-generated error..............................^
00287 errors
00000 warnings

BIN
disk.out View File


+ 112
- 0
implementation/lsfs.c View File

@ -0,0 +1,112 @@
#include "lsfs.h"
#include "../main.h"
struct lsfs_file {
long file_id[2];
long table_entry_pointer[2];
Table_Entry_Kind entry_kind;
char* filename;
long owner_id;
long size[2];
long creation_date[2];
long access_time[2];
long modification_time[2];
long number_sector;
long table_entry_sector_index[2];
long data_pointer[NUM_DATA_POINTERS * 2];
};
int lsfs_disk_read_data_from_file(file, buffer_size, data, offset_to_next_entry)
lsfs_file *file;
int buffer_size;
char *data;
long offset_to_next_entry;
{
int integer_file_size = file->size;
int integer_offset = offset_to_next_entry;
int integer_datapointer = 0;
int data_length = integer_file_size - integer_offset;
int amount_read = 0;
int amount_to_read = 0;
int remaining_offset = offset_to_next_entry;
/* printf("READ: buffer_size: %d\n", buffer_size); */
/* printf("READ: Data length: %d\n", data_length); */
/* printf("READ: Offset length: %d\n", offset_to_next_entry); */
int data_pointer_index = 0; /* start at first data pointer. */
if (data_length > buffer_size)
{
data_length = buffer_size;
}
while(data_length > 0) /* We have more to write */
{
/* printf("READ: Remaing Data length: %d\n", data_length); */
if (remaining_offset == 0)
{
char *tmp_buffer = calloc(DEFAULT_DATA_POINTER_SIZE, SECTOR_SIZE);
/* assert(tmp_buffer); */
if (data_length < (DEFAULT_DATA_POINTER_SIZE * SECTOR_SIZE))
{
amount_to_read = data_length;
}
else
{
amount_to_read = (DEFAULT_DATA_POINTER_SIZE * SECTOR_SIZE);
}
/* disk_service_read_data_from_disk(lsfs_sector_offset index, uint32_t number_sector, void* data_buffer) */
integer_datapointer = file->data_pointer[data_pointer_index];
if (integer_datapointer == 0)
{
break;
}
disk_service_read_data_from_disk(file->data_pointer[data_pointer_index], DEFAULT_DATA_POINTER_SIZE, tmp_buffer);
memcpy((data + amount_read), tmp_buffer, amount_to_read);
data_length -= amount_to_read;
amount_read += amount_to_read;
data_pointer_index++;
/* free(tmp_buffer); */
}
else if (remaining_offset < (DEFAULT_DATA_POINTER_SIZE * SECTOR_SIZE))
{
char *tmp_buffer = calloc(1, (DEFAULT_DATA_POINTER_SIZE * SECTOR_SIZE));
/* assert(tmp_buffer); */
if (data_length < ((DEFAULT_DATA_POINTER_SIZE * SECTOR_SIZE) - remaining_offset) )
{
amount_to_read = data_length;
}
else
{
amount_to_read = ((DEFAULT_DATA_POINTER_SIZE * SECTOR_SIZE) - remaining_offset);
}
disk_service_read_data_from_disk(file->data_pointer[data_pointer_index], DEFAULT_DATA_POINTER_SIZE, tmp_buffer);
memcpy(data, (tmp_buffer + remaining_offset), amount_to_read);
data_length -= amount_to_read;
amount_read += amount_to_read;
remaining_offset -= amount_to_read;
data_pointer_index++;
/* free(tmp_buffer); */
}
else
{
/* We have to skip a whole data pointer: */
remaining_offset -= (DEFAULT_DATA_POINTER_SIZE * SECTOR_SIZE);
data_pointer_index++;
}
}
/*
time_t current_time;
time ( &current_time );
file->access_time = current_time;
*/
return amount_read;
}

+ 6
- 0
implementation/lsfs.h View File

@ -0,0 +1,6 @@
#ifndef LSFS_H
#define LSFS_H
typedef struct lsfs_file lsfs_file;
#endif

+ 1846
- 0
implementation/lsfs.s
File diff suppressed because it is too large
View File


+ 10
- 104
main.c View File

@ -1,111 +1,17 @@
// Adress to dump ax, 7C2A
// Address to print 7C47
//
//
#include "std_singos/stdio.h"
#include "std_singos/stdlib.h"
#include "std_singos/string.h"
#include "driver/disk.h"
#define SPACE_MBR_RECORD 2048 // Sectors
#define SPACE_VBR_RECORD 2048 // Sectors
#define SIZE_FSCI_RECORD 1 // Sectors
#define DEFAULT_ENTRY_SIZE 1 // Sectors
#define SECTOR_SIZE 512 // BYTES
#define NUMBER_OF_MBR_PARTITIONS 4
#define DEFAULT_FILE_SIZE 4 // This is in sectors
#define DEFAULT_DATA_POINTER_SIZE 4 // This is in sectors
#define DEFAULT_TABLE_SIZE 16
#define NUM_DATA_POINTERS 27
void dump_ax(input);
void print_stack(argument);
void print_newline();
typedef struct Directory_Table Directory_Table;
typedef struct Struct_Table_Entry Table_Entry;
typedef struct struct_partition_control partition_control;
typedef struct File_System_Control_Information FSCI;
typedef struct meta_information_format mif;
typedef struct tag_record tag_record;
typedef struct lsfs_file lsfs_file;
typedef struct Parameter_Struct Parameter_Struct;
typedef enum Table_Entry_Kind
{
// These are specific values since, is has to corrospond to the implementation in assembly
ENTRY_EMPTY = 0,
ENTRY_FILE = 1,
ENTRY_DIRECTORY = 2,
} Table_Entry_Kind;
typedef enum Service_Action
{
SERIVCE_LOAD_DISK = 1,
SERVICE_FIND_ENTRY = 2,
SERIVCE_READ_DATA = 3,
SERIVCE_WRITE_DATA = 4,
} Service_Action;
struct Struct_Table_Entry
{
char filename[256];
long file_id[2];
long file_size[2];
void* ext_file_data_low;
void* ext_file_data_high;
long number_sector_s; // <- Just try to remove the last undercore and compile .
short entry_kind;
short extra_control_bits1;
short extra_control_bits2;
short extra_control_bits3;
long table_entry_sector_index[2];
long data_pointer[NUM_DATA_POINTERS * 2]; // if it is a directory, the first pointer will be to the next table.
};
struct File_System_Control_Information
{
char filesystem_information[256];
long master_table_index[2];
long this_partition_offset_on_disk[2];
long next_free_sector[2];
long next_uniqe_id[2]; // both files and directories gets this.
long next_sector_reuse_pointer[2];
long last_sector_index_on_partition[2];
long maximum_sectors_on_disk[2];
long sector_size_on_disk[2];
long not_used[48];
};
typedef struct Directory_Table
{
Table_Entry entries[DEFAULT_TABLE_SIZE];
};
struct Parameter_Struct
{
char* path;
char* new_path;
int buffer_segment;
int buffer_address;
int buffer_size;
int data_length;
int byte_offset_into_file;
Table_Entry_Kind entry_kind;
};
/* Adress to dump ax, 7C2A*/
/* Address to print 7C47*/
/* */
/* */
#include "main.h"
int main(selector, pointer_parameter_segment, pointer_parameter_struct)
int selector;
void* pointer_parameter_segment;
void* pointer_parameter_struct;
{
// selectot should be a "selector" for which disk service
// one wnats to use.
// 0 should not be used, to try to ensure that a value has been set explicitly.
/* selectot should be a "selector" for which disk service*/
/* one wnats to use. */
/* 0 should not be used, to try to ensure that a value has been set explicitly. */
FSCI fsci;
Service_Action service_action;
@ -177,7 +83,7 @@ void* pointer_parameter_struct;
/*
What do we need to know:
path
// Buffer:
Buffer:
destination_segment
destination_address
buffer_size
@ -199,4 +105,4 @@ void* pointer_parameter_struct;
}
//void load_
/* void load_*/

+ 100
- 0
main.h View File

@ -0,0 +1,100 @@
#ifndef MAIN_H
#define MAIN_H
#define SPACE_MBR_RECORD 2048 /* Sectors*/
#define SPACE_VBR_RECORD 2048 /* Sectors*/
#define SIZE_FSCI_RECORD 1 /* Sectors*/
#define DEFAULT_ENTRY_SIZE 1 /* Sectors*/
#define SECTOR_SIZE 512 /* BYTES*/
#define NUMBER_OF_MBR_PARTITIONS 4
#define DEFAULT_FILE_SIZE 4 /* This is in sectors*/
#define DEFAULT_DATA_POINTER_SIZE 4 /* This is in sectors*/
#define DEFAULT_TABLE_SIZE 16
#define NUM_DATA_POINTERS 27
#include "std_singos/stdio.h"
#include "std_singos/stdlib.h"
#include "std_singos/string.h"
#include "driver/disk.h"
#include "implementation/lsfs.h"
void dump_ax(input);
void print_stack(argument);
void print_newline();
typedef struct Directory_Table Directory_Table;
typedef struct Struct_Table_Entry Table_Entry;
typedef struct struct_partition_control partition_control;
typedef struct File_System_Control_Information FSCI;
typedef struct meta_information_format mif;
typedef struct tag_record tag_record;
typedef struct Parameter_Struct Parameter_Struct;
typedef enum Table_Entry_Kind
{
/* These are specific values since, is has to corrospond to the implementation in assembly*/
ENTRY_EMPTY = 0,
ENTRY_FILE = 1,
ENTRY_DIRECTORY = 2,
} Table_Entry_Kind;
typedef enum Service_Action
{
SERIVCE_LOAD_DISK = 1,
SERVICE_FIND_ENTRY = 2,
SERIVCE_READ_DATA = 3,
SERIVCE_WRITE_DATA = 4,
} Service_Action;
struct Struct_Table_Entry
{
char filename[256];
long file_id[2];
long file_size[2];
void* ext_file_data_low;
void* ext_file_data_high;
long number_sector_s; /* <- Just try to remove the last undercore and compile . */
short entry_kind;
short extra_control_bits1;
short extra_control_bits2;
short extra_control_bits3;
long table_entry_sector_index[2];
long data_pointer[NUM_DATA_POINTERS * 2]; /* if it is a directory, the first pointer will be to the next table. */
};
struct File_System_Control_Information
{
char filesystem_information[256];
long master_table_index[2];
long this_partition_offset_on_disk[2];
long next_free_sector[2];
long next_uniqe_id[2]; /* both files and directories gets this. */
long next_sector_reuse_pointer[2];
long last_sector_index_on_partition[2];
long maximum_sectors_on_disk[2];
long sector_size_on_disk[2];
long not_used[48];
};
typedef struct Directory_Table
{
Table_Entry entries[DEFAULT_TABLE_SIZE];
};
struct Parameter_Struct
{
char* path;
char* new_path;
int buffer_segment;
int buffer_address;
int buffer_size;
int data_length;
int byte_offset_into_file;
Table_Entry_Kind entry_kind;
};
#endif

+ 564
- 467
main.s
File diff suppressed because it is too large
View File


+ 26
- 0
std_singos/stdlib.h View File

@ -3,6 +3,7 @@ unsigned int global_heap_end = 0;
unsigned int global_heap_next = 0;
void* malloc(num_bytes);
void* calloc(number_elements, size);
int set_heap_settings(param_start, param_end);
unsigned int get_heap_next();
@ -19,6 +20,31 @@ int num_bytes;
return allocated_pointer;
}
void* calloc(number_elements, size)
unsigned int number_elements;
unsigned int size;
{
int i;
char* temp_pointer;
unsigned int num_bytes = number_elements * size;
void* allocated_pointer = global_heap_next;
global_heap_next = global_heap_next + num_bytes;
if (global_heap_next > global_heap_end)
{
return 0; /* No more memory */
}
/* Since this is calloc, we set the memory to zero */
temp_pointer = allocated_pointer;
for (i = 0; i < num_bytes; ++i)
{
*temp_pointer = 0;
temp_pointer++;
}
return allocated_pointer;
}
int set_heap_settings(param_start, param_end)
unsigned int param_start;
unsigned int param_end;

+ 4
- 6
std_singos/string.h View File

@ -1,5 +1,4 @@
typedef struct Length_String {
short dynamic;
unsigned int length;
@ -15,7 +14,7 @@ void strcpy (destination, destination_segment, source, source_segment );
int strlen (source, source_segment);
void memcpy (destination, destination_segment, source, source_segment, num_bytes );
// Additionals to standard c lib.
/* Additionals to standard c lib. */
String_Array *string_split_c(string, delim, keep_delim);
Length_String *make_length_string(length, chars);
Length_String *make_length_string_c(cstring);
@ -92,7 +91,7 @@ int source_segment;
mov si, ax
mov ax, SOURCE_SEGMENT;
mov ds, ax
mov cx, 0x050 // TODO(Jørn) Hardcded number of bytes to copy
mov cx, 0x050 ;TODO(Jørn) Hardcded number of bytes to copy
.label_strcpy_loop:
movsb
cmp cx, 0x0
@ -186,8 +185,7 @@ char *chars;
{
Length_String *legth_string = malloc(sizeof(Length_String));
char *copy = malloc(length + 1); // Space for null terminator
char *copy = malloc(length + 1); /* Space for null terminator */
memcpy(copy, 0x7e0, chars, 0x7e0, length);
copy[length] = '\0';
@ -272,7 +270,7 @@ char *chars;
{
Length_String *legth_string = malloc(sizeof(Length_String));
char *copy = malloc(length + 1); // Space for null terminator
char *copy = malloc(length + 1); /* Space for null terminator */
memcpy(copy, 0x7e0, chars, 0x7e0, length);
copy[length] = '\0';

Loading…
Cancel
Save