All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.webcodepro.applecommander.storage.os.prodos.ProdosCommonDirectoryHeader Maven / Gradle / Ivy

The newest version!
/*
 * AppleCommander - An Apple ][ image utility.
 * Copyright (C) 2002-2022 by Robert Greene
 * robgreene at users.sourceforge.net
 *
 * This program is free software; you can redistribute it and/or modify it 
 * under the terms of the GNU General Public License as published by the 
 * Free Software Foundation; either version 2 of the License, or (at your 
 * option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but 
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 
 * for more details.
 *
 * You should have received a copy of the GNU General Public License along 
 * with this program; if not, write to the Free Software Foundation, Inc., 
 * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 */
package com.webcodepro.applecommander.storage.os.prodos;

import com.webcodepro.applecommander.util.AppleUtil;

/**
 * Provide common directory header attributes.
 * 

* Date created: Oct 5, 2002 11:17:00 PM * @author Rob Greene */ public class ProdosCommonDirectoryHeader extends ProdosCommonEntry { /** * Constructor for ProdosCommonDirectoryHeader. */ public ProdosCommonDirectoryHeader(ProdosFormatDisk disk, int block) { super(disk, block, 4); // directory entries are always offset 4, right? } /** * Get the length of each entry. Expected to be 0x27. */ public int getEntryLength() { return AppleUtil.getUnsignedByte(readFileEntry()[0x1f]); } /** * Set the length of each entry. */ public void setEntryLength() { byte[] data = readFileEntry(); data[0x1f] = (byte) ENTRY_LENGTH; writeFileEntry(data); } /** * Get the number of entries per block. Expected to be 0x0d. */ public int getEntriesPerBlock() { return AppleUtil.getUnsignedByte(readFileEntry()[0x20]); } /** * Set the number of entries per block. */ public void setEntriesPerBlock() { byte[] data = readFileEntry(); data[0x20] = 0x0d; writeFileEntry(data); } /** * Get the number of active entries in the directory. */ public int getFileCount() { return AppleUtil.getWordValue(readFileEntry(), 0x21); } /** * Set the number of active entries in the directory. */ public void setFileCount(int fileCount) { byte[] data = readFileEntry(); AppleUtil.setWordValue(data, 0x21, fileCount); writeFileEntry(data); } /** * Increment the number of active entries by one. */ public void incrementFileCount() { byte[] data = readFileEntry(); data[0x21]++; writeFileEntry(data); } /** * Decrement the number of active entries by one. */ public void decrementFileCount() { byte[] data = readFileEntry(); if (data[0x21] != 0) data[0x21]--; writeFileEntry(data); } /** * Get the block number of the bit map. */ public int getBitMapPointer() { return AppleUtil.getWordValue(readFileEntry(), 0x23); } /** * Set the block number of the bit map. */ public void setBitMapPointer(int blockNumber) { byte[] data = readFileEntry(); AppleUtil.setWordValue(data, 0x23, blockNumber); writeFileEntry(data); } /** * Get the total number of blocks on this volume (only valid for volume directory block). */ public int getTotalBlocks() { return AppleUtil.getWordValue(readFileEntry(), 0x25); } /** * Set the total number of blocks on this volume (only valid for volume directory block). */ public void setTotalBlocks(int totalBlocks) { byte[] data = readFileEntry(); AppleUtil.setWordValue(data, 0x25, totalBlocks); writeFileEntry(data); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy