mirror of
https://github.com/tjboldt/ProDOS-Utilities.git
synced 2024-12-29 02:32:00 +00:00
Make less functions exported
This commit is contained in:
parent
e802ee7ceb
commit
057cd5fd7b
@ -24,7 +24,7 @@ func ReadVolumeBitmap(file *os.File) []byte {
|
|||||||
return bitmap
|
return bitmap
|
||||||
}
|
}
|
||||||
|
|
||||||
func WriteVolumeBitmap(file *os.File, bitmap []byte) {
|
func writeVolumeBitmap(file *os.File, bitmap []byte) {
|
||||||
headerBlock := ReadBlock(file, 2)
|
headerBlock := ReadBlock(file, 2)
|
||||||
|
|
||||||
volumeHeader := parseVolumeHeader(headerBlock)
|
volumeHeader := parseVolumeHeader(headerBlock)
|
||||||
@ -34,7 +34,7 @@ func WriteVolumeBitmap(file *os.File, bitmap []byte) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateVolumeBitmap(numberOfBlocks int) []byte {
|
func createVolumeBitmap(numberOfBlocks int) []byte {
|
||||||
volumeBitmapBlocks := numberOfBlocks / 512 / 8
|
volumeBitmapBlocks := numberOfBlocks / 512 / 8
|
||||||
if volumeBitmapBlocks*8*512 < numberOfBlocks {
|
if volumeBitmapBlocks*8*512 < numberOfBlocks {
|
||||||
volumeBitmapBlocks++
|
volumeBitmapBlocks++
|
||||||
@ -47,18 +47,18 @@ func CreateVolumeBitmap(numberOfBlocks int) []byte {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// boot blocks
|
// boot blocks
|
||||||
MarkBlockInVolumeBitmap(volumeBitmap, 0)
|
markBlockInVolumeBitmap(volumeBitmap, 0)
|
||||||
MarkBlockInVolumeBitmap(volumeBitmap, 1)
|
markBlockInVolumeBitmap(volumeBitmap, 1)
|
||||||
|
|
||||||
// root directory
|
// root directory
|
||||||
MarkBlockInVolumeBitmap(volumeBitmap, 2)
|
markBlockInVolumeBitmap(volumeBitmap, 2)
|
||||||
MarkBlockInVolumeBitmap(volumeBitmap, 3)
|
markBlockInVolumeBitmap(volumeBitmap, 3)
|
||||||
MarkBlockInVolumeBitmap(volumeBitmap, 4)
|
markBlockInVolumeBitmap(volumeBitmap, 4)
|
||||||
MarkBlockInVolumeBitmap(volumeBitmap, 5)
|
markBlockInVolumeBitmap(volumeBitmap, 5)
|
||||||
|
|
||||||
// volume bitmap blocks
|
// volume bitmap blocks
|
||||||
for i := 0; i < volumeBitmapBlocks; i++ {
|
for i := 0; i < volumeBitmapBlocks; i++ {
|
||||||
MarkBlockInVolumeBitmap(volumeBitmap, 6+i)
|
markBlockInVolumeBitmap(volumeBitmap, 6+i)
|
||||||
}
|
}
|
||||||
|
|
||||||
// blocks beyond the volume
|
// blocks beyond the volume
|
||||||
@ -66,7 +66,7 @@ func CreateVolumeBitmap(numberOfBlocks int) []byte {
|
|||||||
blocksBeyondEnd := totalBlocksInBitmap - numberOfBlocks
|
blocksBeyondEnd := totalBlocksInBitmap - numberOfBlocks
|
||||||
if blocksBeyondEnd > 0 {
|
if blocksBeyondEnd > 0 {
|
||||||
for i := totalBlocksInBitmap - blocksBeyondEnd; i < totalBlocksInBitmap; i++ {
|
for i := totalBlocksInBitmap - blocksBeyondEnd; i < totalBlocksInBitmap; i++ {
|
||||||
MarkBlockInVolumeBitmap(volumeBitmap, i)
|
markBlockInVolumeBitmap(volumeBitmap, i)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//DumpBlock(volumeBitmap)
|
//DumpBlock(volumeBitmap)
|
||||||
@ -74,13 +74,13 @@ func CreateVolumeBitmap(numberOfBlocks int) []byte {
|
|||||||
return volumeBitmap
|
return volumeBitmap
|
||||||
}
|
}
|
||||||
|
|
||||||
func FindFreeBlocks(volumeBitmap []byte, numberOfBlocks int) []int {
|
func findFreeBlocks(volumeBitmap []byte, numberOfBlocks int) []int {
|
||||||
blocks := make([]int, numberOfBlocks)
|
blocks := make([]int, numberOfBlocks)
|
||||||
|
|
||||||
blocksFound := 0
|
blocksFound := 0
|
||||||
|
|
||||||
for i := 0; i < len(volumeBitmap)*8; i++ {
|
for i := 0; i < len(volumeBitmap)*8; i++ {
|
||||||
if CheckFreeBlockInVolumeBitmap(volumeBitmap, i) {
|
if checkFreeBlockInVolumeBitmap(volumeBitmap, i) {
|
||||||
blocks[blocksFound] = i
|
blocks[blocksFound] = i
|
||||||
blocksFound++
|
blocksFound++
|
||||||
if blocksFound == numberOfBlocks {
|
if blocksFound == numberOfBlocks {
|
||||||
@ -92,7 +92,7 @@ func FindFreeBlocks(volumeBitmap []byte, numberOfBlocks int) []int {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func MarkBlockInVolumeBitmap(volumeBitmap []byte, blockNumber int) {
|
func markBlockInVolumeBitmap(volumeBitmap []byte, blockNumber int) {
|
||||||
bitToChange := blockNumber % 8
|
bitToChange := blockNumber % 8
|
||||||
byteToChange := blockNumber / 8
|
byteToChange := blockNumber / 8
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ func MarkBlockInVolumeBitmap(volumeBitmap []byte, blockNumber int) {
|
|||||||
volumeBitmap[byteToChange] &= byte(byteToAnd)
|
volumeBitmap[byteToChange] &= byte(byteToAnd)
|
||||||
}
|
}
|
||||||
|
|
||||||
func FreeBlockInVolumeBitmap(volumeBitmap []byte, blockNumber int) {
|
func freeBlockInVolumeBitmap(volumeBitmap []byte, blockNumber int) {
|
||||||
bitToChange := blockNumber % 8
|
bitToChange := blockNumber % 8
|
||||||
byteToChange := blockNumber / 8
|
byteToChange := blockNumber / 8
|
||||||
|
|
||||||
@ -149,7 +149,7 @@ func FreeBlockInVolumeBitmap(volumeBitmap []byte, blockNumber int) {
|
|||||||
volumeBitmap[byteToChange] |= byte(byteToOr)
|
volumeBitmap[byteToChange] |= byte(byteToOr)
|
||||||
}
|
}
|
||||||
|
|
||||||
func CheckFreeBlockInVolumeBitmap(volumeBitmap []byte, blockNumber int) bool {
|
func checkFreeBlockInVolumeBitmap(volumeBitmap []byte, blockNumber int) bool {
|
||||||
bitToCheck := blockNumber % 8
|
bitToCheck := blockNumber % 8
|
||||||
byteToCheck := blockNumber / 8
|
byteToCheck := blockNumber / 8
|
||||||
|
|
||||||
|
@ -18,7 +18,7 @@ func TestCreateVolumeBitmap(t *testing.T) {
|
|||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
testname := fmt.Sprintf("%d", tt.blocks)
|
testname := fmt.Sprintf("%d", tt.blocks)
|
||||||
t.Run(testname, func(t *testing.T) {
|
t.Run(testname, func(t *testing.T) {
|
||||||
volumeBitMap := CreateVolumeBitmap(tt.blocks)
|
volumeBitMap := createVolumeBitmap(tt.blocks)
|
||||||
ans := len(volumeBitMap)
|
ans := len(volumeBitMap)
|
||||||
if ans != tt.want {
|
if ans != tt.want {
|
||||||
t.Errorf("got %d, want %d", ans, tt.want)
|
t.Errorf("got %d, want %d", ans, tt.want)
|
||||||
@ -45,8 +45,8 @@ func TestCheckFreeBlockInVolumeBitmap(t *testing.T) {
|
|||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
testname := fmt.Sprintf("%d", tt.blocks)
|
testname := fmt.Sprintf("%d", tt.blocks)
|
||||||
t.Run(testname, func(t *testing.T) {
|
t.Run(testname, func(t *testing.T) {
|
||||||
volumeBitMap := CreateVolumeBitmap(65535)
|
volumeBitMap := createVolumeBitmap(65535)
|
||||||
ans := CheckFreeBlockInVolumeBitmap(volumeBitMap, tt.blocks)
|
ans := checkFreeBlockInVolumeBitmap(volumeBitMap, tt.blocks)
|
||||||
if ans != tt.want {
|
if ans != tt.want {
|
||||||
t.Errorf("got %t, want %t", ans, tt.want)
|
t.Errorf("got %t, want %t", ans, tt.want)
|
||||||
}
|
}
|
||||||
|
@ -9,7 +9,7 @@ import (
|
|||||||
func LoadFile(file *os.File, path string) []byte {
|
func LoadFile(file *os.File, path string) []byte {
|
||||||
fileEntry := GetFileEntry(file, path)
|
fileEntry := GetFileEntry(file, path)
|
||||||
|
|
||||||
blockList := GetBlocklist(file, fileEntry)
|
blockList := getBlocklist(file, fileEntry)
|
||||||
|
|
||||||
buffer := make([]byte, fileEntry.EndOfFile)
|
buffer := make([]byte, fileEntry.EndOfFile)
|
||||||
|
|
||||||
@ -29,7 +29,7 @@ func WriteFile(file *os.File, path string, fileType int, auxType int, buffer []b
|
|||||||
DeleteFile(file, path)
|
DeleteFile(file, path)
|
||||||
|
|
||||||
// get list of blocks to write file to
|
// get list of blocks to write file to
|
||||||
blockList := CreateBlockList(file, len(buffer))
|
blockList := createBlockList(file, len(buffer))
|
||||||
|
|
||||||
fileEntry := GetFreeFileEntryInDirectory(file, directory)
|
fileEntry := GetFreeFileEntryInDirectory(file, directory)
|
||||||
|
|
||||||
@ -88,7 +88,7 @@ func WriteFile(file *os.File, path string, fileType int, auxType int, buffer []b
|
|||||||
writeFileEntry(file, fileEntry)
|
writeFileEntry(file, fileEntry)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetBlocklist(file *os.File, fileEntry FileEntry) []int {
|
func getBlocklist(file *os.File, fileEntry FileEntry) []int {
|
||||||
blocks := make([]int, fileEntry.BlocksUsed)
|
blocks := make([]int, fileEntry.BlocksUsed)
|
||||||
|
|
||||||
switch fileEntry.StorageType {
|
switch fileEntry.StorageType {
|
||||||
@ -112,7 +112,7 @@ func GetBlocklist(file *os.File, fileEntry FileEntry) []int {
|
|||||||
return blocks
|
return blocks
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateBlockList(file *os.File, fileSize int) []int {
|
func createBlockList(file *os.File, fileSize int) []int {
|
||||||
numberOfBlocks := fileSize / 512
|
numberOfBlocks := fileSize / 512
|
||||||
if fileSize%512 > 0 {
|
if fileSize%512 > 0 {
|
||||||
numberOfBlocks++
|
numberOfBlocks++
|
||||||
@ -131,7 +131,7 @@ func CreateBlockList(file *os.File, fileSize int) []int {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
volumeBitmap := ReadVolumeBitmap(file)
|
volumeBitmap := ReadVolumeBitmap(file)
|
||||||
blockList := FindFreeBlocks(volumeBitmap, numberOfBlocks)
|
blockList := findFreeBlocks(volumeBitmap, numberOfBlocks)
|
||||||
|
|
||||||
return blockList
|
return blockList
|
||||||
}
|
}
|
||||||
@ -180,12 +180,12 @@ func DeleteFile(file *os.File, path string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// free the blocks
|
// free the blocks
|
||||||
blocks := GetBlocklist(file, fileEntry)
|
blocks := getBlocklist(file, fileEntry)
|
||||||
volumeBitmap := ReadVolumeBitmap(file)
|
volumeBitmap := ReadVolumeBitmap(file)
|
||||||
for i := 0; i < len(blocks); i++ {
|
for i := 0; i < len(blocks); i++ {
|
||||||
FreeBlockInVolumeBitmap(volumeBitmap, blocks[i])
|
freeBlockInVolumeBitmap(volumeBitmap, blocks[i])
|
||||||
}
|
}
|
||||||
WriteVolumeBitmap(file, volumeBitmap)
|
writeVolumeBitmap(file, volumeBitmap)
|
||||||
|
|
||||||
// zero out directory entry
|
// zero out directory entry
|
||||||
fileEntry.StorageType = 0
|
fileEntry.StorageType = 0
|
||||||
|
@ -64,7 +64,7 @@ func CreateVolume(fileName string, volumeName string, numberOfBlocks int) {
|
|||||||
file.Sync()
|
file.Sync()
|
||||||
|
|
||||||
// boot block 0
|
// boot block 0
|
||||||
WriteBlock(file, 0, GetBootBlock())
|
WriteBlock(file, 0, getBootBlock())
|
||||||
|
|
||||||
// pointers to volume directory blocks
|
// pointers to volume directory blocks
|
||||||
for i := 2; i < 6; i++ {
|
for i := 2; i < 6; i++ {
|
||||||
@ -85,13 +85,13 @@ func CreateVolume(fileName string, volumeName string, numberOfBlocks int) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// volume bit map starting at block 6
|
// volume bit map starting at block 6
|
||||||
volumeBitmap := CreateVolumeBitmap(numberOfBlocks)
|
volumeBitmap := createVolumeBitmap(numberOfBlocks)
|
||||||
WriteVolumeBitmap(file, volumeBitmap)
|
writeVolumeBitmap(file, volumeBitmap)
|
||||||
|
|
||||||
file.Close()
|
file.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetBootBlock() []byte {
|
func getBootBlock() []byte {
|
||||||
bootBlock := []byte{
|
bootBlock := []byte{
|
||||||
0x01, 0x38, 0xb0, 0x03, 0x4c, 0x1c, 0x09, 0x78, 0x86, 0x43, 0xc9, 0x03, 0x08, 0x8a, 0x29, 0x70,
|
0x01, 0x38, 0xb0, 0x03, 0x4c, 0x1c, 0x09, 0x78, 0x86, 0x43, 0xc9, 0x03, 0x08, 0x8a, 0x29, 0x70,
|
||||||
0x4a, 0x4a, 0x4a, 0x4a, 0x09, 0xc0, 0x85, 0x49, 0xa0, 0xff, 0x84, 0x48, 0x28, 0xc8, 0xb1, 0x48,
|
0x4a, 0x4a, 0x4a, 0x4a, 0x09, 0xc0, 0x85, 0x49, 0xa0, 0xff, 0x84, 0x48, 0x28, 0xc8, 0xb1, 0x48,
|
||||||
|
Loading…
Reference in New Issue
Block a user