Main > Free Download Search >

Free 32 bit windows 4gb ram software for linux

32 bit windows 4gb ram

Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 1482
Booting Ubuntu To RAM

Booting Ubuntu To RAM


Booting Ubuntu To RAM is an article aims to document the process of creating a customized Ubuntu that loads an image in RAM. more>>
Booting Ubuntu To RAM is an article aims to document the process of creating a customized Ubuntu that loads an image from the hard disk to RAM, then boots an entire Ubuntu session out of RAM. It is intended for intermediate to advanced Ubuntu users who are familiar with the shell, and may have limited experience customizing the livecd (LiveCDCustomization) and shell scripting. We will customize a LiveCD and copy it to the hard drive, and make a few modifications to bootup scripts so that it copies to RAM via our good friend tmpfs.
WARNING: The author asserts that this procedure works for him, but cannot guarantee that this procedure works for anyone else. Although this procedure is meant to be 100% safe, it is feasible that there may be mistakes, or a chance of misunderstanding the instructions in a manner that causes loss of data. Please make a backup and do not attempt on mission critical systems. Read through this article thoroughly, and do not attempt if you do not comprehend or feel comfortable about any of the instructions!
CAUTION: I hope this is intuitively obvious, but Ill humor you and state it bluntly: Changes you make under the live session are NOT saved and WILL BE LOST when you reboot or shut down. Dont save anything important to the "home directory" and expect it to still be around! If you want to save data permanently, mount a permanent medium (such as your hard drive), plug in a thumbdrive, or use some network functionality built into Ubuntu to save your data to a non-volatile destination.
There are many cases where one would like to boot Ubuntu to RAM:
- Performance: The desktop performance is dramatically improved. A 400MB squashed filesystem in RAM, that holds 1200MB of data, is read back on a 1.6GHz Core Duo in about 3 seconds, including decompression time.
- Power, Noise, Durability: Although modern hard disks dont use much power compared to other system components, this may still be important for some. In laptops, hard disks are often the noisiest components, so this setup can reduce system noise. With the hard disk spun down, a laptop can potentially withstand greater shocks without damage.
- Abrupt poweroff: Since the hard disk is only momentarily used in read-only mode during boot, then never touched again, there are few or no negative consequences of an abrupt poweroff. If a system is used where power is inconsistent, or the system is regularly used in a context where fast shutoffs are required, this is very handy.
- Privacy: Anything you do in this session are lost when you reboot or power off. This is great for kiosks or other systems where permanent modification are not desired. (Note that by default the livecd user has full sudo access, so potentially a malicious user can still make permanent changes by mounting the hard drive and following this HOWTO)
<<less
Download (MB)
Added: 2007-05-09 License: GPL (GNU General Public License) Price:
555 downloads
MCP2510 Bit Timing Calculator 1.0

MCP2510 Bit Timing Calculator 1.0


MCP2510 Bit Timing Calculator project is a bit timing calculator for the MCP2510. more>>
MCP2510 Bit Timing Calculator project is a bit timing calculator for the MCP2510.

It is a bit timing calculator which is very easy to use.

All you have to do is to choose the baudrate and the oscilator-frequency.

Sure you can edit and change all setting. You will see a graphical bit timing diagram which show you your current options.

At the end you will get a detailed report of your choosen options. See an example here: mcp2510btn

HowTo

On the first step you have to choose your wished baudrate and the oscilator-frequency.

Second you will get a great table with all avaible baudrate for you oscilator-frequency. The are already choosen some baudrates if your baudrate equals with some on the table. Otherwise you have to select them manually, but you will get deviations to you choosen baudrate. You will the the deviation in percent at the right table.

When you are ready you can go forward to step three.
Here you have first to select your wanted Nominal Bit Time Screenshot 2 [Step 3]and then you can edit/change to values for the single segments of a bit timing.
<<less
Download (0.017MB)
Added: 2006-11-03 License: GPL (GNU General Public License) Price:
640 downloads
3Delight for 64-bit Linux 7.0

3Delight for 64-bit Linux 7.0


3Delight is a renderer to produce photo-realistic images on 64-bit linux. more>> 3Delight is a fast, high quality, RenderMan-compliant renderer designed to produce photo-realistic images in demanding production environments. The renderer was introduced to the public in the year 2000 after being used for more than a year as the sole renderer in a sister production company. It is now widely used and earning a reputation as a benchmark in rendering technology.
Some of its features include ray tracing, global illumination (including photon mapping, final gathering and high dynamic range lighting and rendering), realistic motion blur, depth of field, complete geometry support (including efficient rendering of hair and fur), programmable shaders, quality antialiasing and antialiased shadow maps. Advanced features include Ri filtering, network caching and highly customizable workflow.
Follows a summary of 3Delights features.
-RenderMan Compliant
-RenderMan Shading Language Support
-Rendering Features
-Geometry Support
-Fast and Efficient Rendering
-Extensible Display Drivers
-Multi-platform Support with Specific Code Optimization
<<less
Download (10.1MB)
Added: 2009-04-12 License: Freeware Price: Free
194 downloads
3Delight for 32-bit Linux 7.0

3Delight for 32-bit Linux 7.0


3Delight is a renderer to produce photo-realistic images on 32-bit linux. more>> 3Delight is a fast, high quality, RenderMan-compliant renderer designed to produce photo-realistic images in demanding production environments. The renderer was introduced to the public in the year 2000 after being used for more than a year as the sole renderer in a sister production company. It is now widely used and earning a reputation as a benchmark in rendering technology.
Some of its features include ray tracing, global illumination (including photon mapping, final gathering and high dynamic range lighting and rendering), realistic motion blur, depth of field, complete geometry support (including efficient rendering of hair and fur), programmable shaders, quality antialiasing and antialiased shadow maps. Advanced features include Ri filtering, network caching and highly customizable workflow.
Follows a summary of 3Delights features.
-RenderMan Compliant
-RenderMan Shading Language Support
-Rendering Features
-Geometry Support
-Fast and Efficient Rendering
-Extensible Display Drivers
-Multi-platform Support with Specific Code Optimization
<<less
Download (11.4MB)
Added: 2009-04-11 License: Freeware Price: Free
195 downloads
bit 0.4.1

bit 0.4.1


bit is a C++ library for manipulating buffers containing data fields that are not octet (byte) aligned. more>>
bit is a C++ library for manipulating buffers containing data fields that are not octet (byte) aligned.

Binary data formats containing fields that are not octet aligned are still common. One need look no further than the IP header that is present in every packet of data transmitted on the Internet.

Additionally many embedded devices and sensors still communicate via binary formats, and it was for the latter (robotic sensors) that this library was initially developed.

The bit library allows data formats to be specified at run-time through class methods or loaded from XML files at run-time (including any combinations thereof).

A companion library, bitgtk, provides a set of Gtkmm widgets for display of bit buffer representations.

<<less
Download (MB)
Added: 2007-03-15 License: LGPL (GNU Lesser General Public License) Price:
955 downloads
iCalDoubleRemover

iCalDoubleRemover


iCalDoubleRemover script just removes duplicate Entries in iCals. more>>
iCalDoubleRemover script just removes duplicate Entries in iCals. Dupicate entries are defined as having the same Entries except for the UID bit. A special feature is support for duplicate BirthdayCal entries as well.

Be aware that you need Perl, Config::Inifiles via Perlupdate ( perl -MCPAN -e shell install Config::IniFiles ).
<<less
Download (0.006MB)
Added: 2005-11-18 License: Freeware Price:
1436 downloads
BG-Rescue Linux 0.4.1

BG-Rescue Linux 0.4.1


BG-Rescue Linux is a Busybox and uClibc-based rescue system with kernel 2.4.26 which supports the NTFS 2.1.6b driver. more>>
BG-Rescue Linux is a Busybox and uClibc-based rescue system with kernel 2.4.26 which supports the NTFS 2.1.6b driver. It is loaded either from two floppy disks or from one 2.8MB El Torito CD. The system runs entirely in RAM.
BG-Rescue Linux supports a wide range of hardware and filesystems, and can serve as a full backup/restore system for MS Windows systems that use FAT12, FAT16, or FAT32. It also includes bzip2, cabextract, cmdftp, cramfs, dosfstools, e2fsprogs, gpart, lilo, loadlin, lphdisk, mdadm, ms-sys, ntfsprogs, pcmcia-cardmgr, progsreiserfs, reiserfsck, smbclient, syslinux, umsdos-utils, and zip. There is support for automatically loading the F-Prot antivirus program from CD-ROM.
Supported Hardware:
Block Devices:
- IDE/ATAPI Disk/CD-Rom/Floppy/Tape Support
- Normal Floppy Disk Support
- Compaq SMART2 / Smart Array 5xxx
- Mylex DAC960/DAC1100 PCI Raid Controller
- Software RAID-0/1/4/5/Linear and LVM Support
- Loopback device
- Compressed Loop Image (cloop)
- USB Mass Storage support (with PocketBoy patch)
Network Devices:
- 3c509/3c529 (MCA)/3c579 "Etherlink III"
- 3c590/3c900 series (592/595/597) "Vortex/Boomerang"
- AMD LANCE and PCnet (AT1500, NE2100)
- AMD PCnet32 PCI Ethernet
- DECchip Tulip (dc21x4x) PCI
- EtherExpressPro/100 (eepro100, original Becker driver)
- Myson MTD 8xx PCI Ethernet
- NE2000 / NE1000 ISA-Cards (e.g. RealTek RTL-8019)
- NE2000 PCI and clones (e.g. RealTek RTL-8029)
- nForce Ethernet
- PLIP - Parallel Link cable
- RealTek RTL-8139 C+ PCI Fast Ethernet
- RealTek RTL-8139 PCI Fast Ethernet with old 8129/8130 and uncommon RTL-8139 rev. K
- SIS 900/7016 PCI Fast Ethernet
- TI ThunderLAN
- VIA Rhine
- Winbond W89c840 Ethernet
- TCP/IP-Networking
- USB Network Devices:
- ASIX AX88172 based ethernet device
- CATC NetMate based ethernet
- Communication Class Ethernet device
- KLSI KL5USB101 based ethernet
- Pegasus/Pegasus-II based ethernet
- Realtek RTL8150 based ethernet device
- USB-to-USB Networking Cables, Linux PDAs
- PCMCIA Network Devices:
- PCMCIA NE2000-Clones
- PCMCIA serial device
- Xircom 16-bit PCMCIA support
USB-Support:
- Host Controller Drivers: EHCI HCD (USB 2.0), OHCI, UHCI
- Preliminary USB Device Filesystem
- HIDBP Keyboard (basic)
- USB Mass Storage support (with PocketBoy patch)
- USB Network Devices (see above)
Console:
- VGA Text console
- VESA VGA graphics console 8bit
BUS / Ports:
- PCI / ISA Bus
- PCMCIA / Cardbus (network devices: see above)
- Serial port (standard / generic)
- Parallel Port
- Parallel Printer
- Keyboard support (generic / USB)
- Advanced Power Management BIOS Support
- Plug and Play Support / ISAPNP Support
<<less
Download (2.9MB)
Added: 2006-08-03 License: GPL (GNU General Public License) Price:
696 downloads
DBD::RAM 0.072

DBD::RAM 0.072


DBD::RAM is a DBI driver for files and data structures. more>>
DBD::RAM is a DBI driver for files and data structures.

SYNOPSIS

use DBI;
my $dbh = DBI->connect(DBI:RAM:,usr,pwd,{RaiseError=>1});
$dbh->func({
table_name => my_phrases,
col_names => id,phrase,
data_type => PIPE,
data_source => [ ],
}, import );
print $dbh->selectcol_arrayref(qq[
SELECT phrase FROM my_phrases WHERE id = 1
])->[0];
__END__
1 | Hello, New World
2 | Some other Phrase

This sample creates a database table from data, uses SQL to make a selection from the database and prints out the results. While this table is in-memory only and uses pipe "delimited" formating, many other options are available including local and remote file access and many different data formats.

DBD::RAM allows you to import almost any type of Perl data structure into an in-memory table and then use DBI and SQL to access and modify it. It also allows direct access to almost any kind of file, supporting SQL manipulation of the file without converting the file out of its native format.

The module allows you to prototype a database without having an rdbms system or other database engine and can operate either with or without creating or reading disk files. If you do use disk files, they may, in most cases, either be local files or any remote file accessible via HTTP or FTP.

<<less
Download (0.029MB)
Added: 2006-06-16 License: Perl Artistic License Price:
1229 downloads
SigBrowser 0.4

SigBrowser 0.4


SigBrowser is a small tool to display large signals (up to 2 GB filesize / 1-6 channels / 16 bit integer). more>>
SigBrowser is a small tool to display large signals (up to 2 GB filesize / 1-6 channels / 16 bit integer).

SigBrowser allows you to smoothly browse in a large signal. It can load 16 bit signed integer data with up to 6 interlaced channels.

Unfortunately theres no large-file support, so the limit is at 2 GB. You cant do much except looking at the signal with various zooming factors.

But if youre searching for certain artefacts in a signal then its probably quite useful for you.

It can visualize large signals with filesizes of up to 2 GB. Currently only 16 bit signed integer signals with up to 8 interlaced channels can be loaded.

Using a P4 @ 1.8 GHz with 512 MB RAM and a GeForce 4 graphics card you can scroll and zoom quite smoothly through the whole signal. On a Sun Ultra 1500 its a bit slower but you can still work fine with it.

By using something which I call block-reduction (BL). BL uses the fact that todays screens only have a limited amount of pixels. That means to display the whole signal at once, the worst case regarding performance restrictions, you would have to display thousands of samples on one pixel coordinate in x (horizontal) direction.

Assuming we plot lines between each pair of following samples the user will see a colored area which borders in vertical direction are the minimum and maximum value of all samples falling on the same x-coordinate.

Using this fact we let the user create a so called signal profile. Besides storing the sampling rate, file format info, number of channels to visualize and similar things its main purpose is to contain min/max pairs each of which calculated from a block of N samples per channel. N gets specified by the user, usually 10..50, depending on signal size and computer beeing used.

By visualizing these min/max blocks instead of the real signal as long as the user doesnt zoom into the signal to much we dont loose any information on the screen. But we get a nice performance boost as the signal profile has a much smaller size (signal_lengh_in_samples / N * 2) than the original signal has. Unfortunately we cant do this anymore when the user zooms into details. Then SigBrowser switches to direct display of the signal but it loads only about 1 MB of the original signal at once, which would result in a width of usually several screens.

Example:

* C = number of channels in origianl signal
* V = number of channels to visualize
* S = original signal length in samples per channel
* B = block size

I have a signal of 1.1 GB, C = V = 8 channels, 16 bit integer samples which in my case contains S = 73298610 samples per channel. Using a block size of B = 10 samples per min/max block (really smooth interaction on a P4 3.2 GHz) you get a signal-profile of S / B * 4 / (1024*1024) = 84 MB which you have to keep in memory.
<<less
Download (0.12MB)
Added: 2005-07-21 License: GPL (GNU General Public License) Price:
1557 downloads
HeavenOS 0.1.4

HeavenOS 0.1.4


HeavenOS is an original, alternative 32-bit operating system for Intel 80386 compatible processors. more>>
HeavenOS is an original, alternative 32-bit operating system for Intel 80386 compatible processors.

It is made with NASM (The Netwide Assembler), and is not intended to compare to modern operating systems, but to try to get the best features and discover better ways to do things.

HeavenOS project is intended to be a simple and pratical platform for development, running with a small amount of code.
<<less
Download (0.24MB)
Added: 2006-03-07 License: GPL (GNU General Public License) Price:
1330 downloads
The 64 bit Virtual CPU Project 0.0.23

The 64 bit Virtual CPU Project 0.0.23


The 64 bit Virtual CPU Project is a project to create 64-bit virtual CPU. more>>
This is a project to create 64-bit virtual CPU, create a 64 bit assembler for the CPU and then port C to it, and then create scripts to port GNU/Linux to it.
The aim is to run 64-bit Linux on common 8/16/32 bit CPUs in applications where speed is not an issue.
Enhancements:
- Added C code intended tor a PIC Preliminary documentation More updates to Gambas program
<<less
Download (0.67MB)
Added: 2005-07-06 License: GPL (GNU General Public License) Price:
1600 downloads
Bit::Vector 6.4

Bit::Vector 6.4


Bit::Vector is an efficient bit vector, set of integers and big int math library. more>>
Bit::Vector is an efficient bit vector, set of integers and "big int" math library.

CLASS METHODS

Version

$version = Bit::Vector->Version();

Word_Bits
$bits = Bit::Vector->Word_Bits(); # bits in a machine word

Long_Bits
$bits = Bit::Vector->Long_Bits(); # bits in an unsigned long

new
$vector = Bit::Vector->new($bits); # bit vector constructor

@veclist = Bit::Vector->new($bits,$count);

new_Hex
$vector = Bit::Vector->new_Hex($bits,$string);

new_Bin
$vector = Bit::Vector->new_Bin($bits,$string);

new_Dec
$vector = Bit::Vector->new_Dec($bits,$string);

new_Enum
$vector = Bit::Vector->new_Enum($bits,$string);

Concat_List
$vector = Bit::Vector->Concat_List(@vectors);
OBJECT METHODS
new
$vec2 = $vec1->new($bits); # alternative call of constructor

@veclist = $vec->new($bits,$count);

Shadow
$vec2 = $vec1->Shadow(); # new vector, same size but empty

Clone
$vec2 = $vec1->Clone(); # new vector, exact duplicate

Concat
$vector = $vec1->Concat($vec2);

Concat_List
$vector = $vec1->Concat_List($vec2,$vec3,...);

Size
$bits = $vector->Size();

Resize
$vector->Resize($bits);
$vector->Resize($vector->Size()+5);
$vector->Resize($vector->Size()-5);

Copy
$vec2->Copy($vec1);

Empty
$vector->Empty();

Fill
$vector->Fill();

Flip
$vector->Flip();

Primes
$vector->Primes(); # Sieve of Erathostenes

Reverse
$vec2->Reverse($vec1);

Interval_Empty
$vector->Interval_Empty($min,$max);

Interval_Fill
$vector->Interval_Fill($min,$max);

Interval_Flip
$vector->Interval_Flip($min,$max);

Interval_Reverse
$vector->Interval_Reverse($min,$max);

Interval_Scan_inc
if (($min,$max) = $vector->Interval_Scan_inc($start))

Interval_Scan_dec
if (($min,$max) = $vector->Interval_Scan_dec($start))

Interval_Copy
$vec2->Interval_Copy($vec1,$offset2,$offset1,$length);

Interval_Substitute
$vec2->Interval_Substitute($vec1,$off2,$len2,$off1,$len1);

is_empty
if ($vector->is_empty())

is_full
if ($vector->is_full())

equal
if ($vec1->equal($vec2))

Lexicompare (unsigned)
if ($vec1->Lexicompare($vec2) == 0)
if ($vec1->Lexicompare($vec2) != 0)
if ($vec1->Lexicompare($vec2) < 0)
if ($vec1->Lexicompare($vec2) Lexicompare($vec2) > 0)
if ($vec1->Lexicompare($vec2) >= 0)

Compare (signed)
if ($vec1->Compare($vec2) == 0)
if ($vec1->Compare($vec2) != 0)
if ($vec1->Compare($vec2) < 0)
if ($vec1->Compare($vec2) Compare($vec2) > 0)
if ($vec1->Compare($vec2) >= 0)

to_Hex
$string = $vector->to_Hex();

from_Hex
$vector->from_Hex($string);

to_Bin
$string = $vector->to_Bin();

from_Bin
$vector->from_Bin($string);

to_Dec
$string = $vector->to_Dec();

from_Dec
$vector->from_Dec($string);

to_Enum
$string = $vector->to_Enum(); # e.g. "2,3,5-7,11,13-19"

from_Enum
$vector->from_Enum($string);

Bit_Off
$vector->Bit_Off($index);

Bit_On
$vector->Bit_On($index);

bit_flip
$bit = $vector->bit_flip($index);

bit_test
contains
$bit = $vector->bit_test($index);
$bit = $vector->contains($index);
if ($vector->bit_test($index))
if ($vector->contains($index))

Bit_Copy
$vector->Bit_Copy($index,$bit);

LSB (least significant bit)
$vector->LSB($bit);

MSB (most significant bit)
$vector->MSB($bit);

lsb (least significant bit)
$bit = $vector->lsb();

msb (most significant bit)
$bit = $vector->msb();

rotate_left
$carry = $vector->rotate_left();

rotate_right
$carry = $vector->rotate_right();

shift_left
$carry = $vector->shift_left($carry);

shift_right
$carry = $vector->shift_right($carry);

Move_Left
$vector->Move_Left($bits); # shift left "$bits" positions

Move_Right
$vector->Move_Right($bits); # shift right "$bits" positions

Insert
$vector->Insert($offset,$bits);

Delete
$vector->Delete($offset,$bits);

increment
$carry = $vector->increment();

decrement
$carry = $vector->decrement();

inc
$overflow = $vec2->inc($vec1);

dec
$overflow = $vec2->dec($vec1);

add
$carry = $vec3->add($vec1,$vec2,$carry);
($carry,$overflow) = $vec3->add($vec1,$vec2,$carry);

subtract
$carry = $vec3->subtract($vec1,$vec2,$carry);
($carry,$overflow) = $vec3->subtract($vec1,$vec2,$carry);

Neg
Negate
$vec2->Neg($vec1);
$vec2->Negate($vec1);

Abs
Absolute
$vec2->Abs($vec1);
$vec2->Absolute($vec1);

Sign
if ($vector->Sign() == 0)
if ($vector->Sign() != 0)
if ($vector->Sign() < 0)
if ($vector->Sign() Sign() > 0)
if ($vector->Sign() >= 0)

Multiply
$vec3->Multiply($vec1,$vec2);

Divide
$quot->Divide($vec1,$vec2,$rest);

GCD (Greatest Common Divisor)
$vecgcd->GCD($veca,$vecb);
$vecgcd->GCD($vecx,$vecy,$veca,$vecb);

Power
$vec3->Power($vec1,$vec2);

Block_Store
$vector->Block_Store($buffer);

Block_Read
$buffer = $vector->Block_Read();

Word_Size
$size = $vector->Word_Size(); # number of words in "$vector"

Word_Store
$vector->Word_Store($offset,$word);

Word_Read
$word = $vector->Word_Read($offset);

Word_List_Store
$vector->Word_List_Store(@words);

Word_List_Read
@words = $vector->Word_List_Read();

Word_Insert
$vector->Word_Insert($offset,$count);

Word_Delete
$vector->Word_Delete($offset,$count);

Chunk_Store
$vector->Chunk_Store($chunksize,$offset,$chunk);

Chunk_Read
$chunk = $vector->Chunk_Read($chunksize,$offset);

Chunk_List_Store
$vector->Chunk_List_Store($chunksize,@chunks);

Chunk_List_Read
@chunks = $vector->Chunk_List_Read($chunksize);

Index_List_Remove
$vector->Index_List_Remove(@indices);

Index_List_Store
$vector->Index_List_Store(@indices);

Index_List_Read
@indices = $vector->Index_List_Read();

Or
Union
$vec3->Or($vec1,$vec2);
$set3->Union($set1,$set2);

And
Intersection
$vec3->And($vec1,$vec2);
$set3->Intersection($set1,$set2);

AndNot
Difference
$vec3->AndNot($vec1,$vec2);
$set3->Difference($set1,$set2);

Xor
ExclusiveOr
$vec3->Xor($vec1,$vec2);
$set3->ExclusiveOr($set1,$set2);

Not
Complement
$vec2->Not($vec1);
$set2->Complement($set1);

subset
if ($set1->subset($set2)) # true if $set1 is subset of $set2

Norm
$norm = $set->Norm();
$norm = $set->Norm2();
$norm = $set->Norm3();

Min
$min = $set->Min();

Max
$max = $set->Max();

Multiplication
$matrix3->Multiplication($rows3,$cols3,
$matrix1,$rows1,$cols1,
$matrix2,$rows2,$cols2);

Product
$matrix3->Product($rows3,$cols3,
$matrix1,$rows1,$cols1,
$matrix2,$rows2,$cols2);

Closure
$matrix->Closure($rows,$cols);

Transpose
$matrix2->Transpose($rows2,$cols2,$matrix1,$rows1,$cols1);

<<less
Download (0.13MB)
Added: 2007-05-17 License: Perl Artistic License Price:
890 downloads
Class::Bits 0.05

Class::Bits 0.05


Class::Bits is a Perl module with class wrappers around bit vectors. more>>
Class::Bits is a Perl module with class wrappers around bit vectors.

SYNOPSIS

package MyClass;
use Class::Bits;

make_bits( a => 4, # 0..15
b => 1, # 0..1
c => 1, # 0..1
d => 2, # 0..3
e => s4 # -8..7
f => s1 # -1..0
);

package;

$o=MyClass->new(a=>12, d=>2);
print "o->b is ", $o->b, "n";

print "bit vector is ", unpack("h*", $$o), "n";

$o2=$o->new();
$o3=MyClass->new($string);

ABSTRACT

Class::Bits creates class wrappers around bit vectors.

Class::Bits defines classes using bit vectors as storage.
Object attributes are stored in bit fields inside the bit vector. Bit field sizes have to be powers of 2 (1, 2, 4, 8, 16 or 32).

There is a class constructor subroutine:

make_bits( field1 => size1, field2 => size2, ...)

exports in the calling package a ctor, accessor methods, some utility methods and some constants:

Sizes can be prefixed by s or u to define signedness of the field. Default is unsigned.

$class->new()

creates a new object with all zeros.

$class->new($bitvector)

creates a new object over $bitvector.

$class->new(%fields)

creates a new object and initializes its fields with the values in %fields.

$obj->new()

clones an object.

$obj->$field()
$obj->$field($value)

gets or sets the value of the bit field $field inside the bit vector.

$class->length
$obj->lenght

returns the size in bits of the bit vector used for storage.

$class->keys
$obj->keys

returns an array with the names of the object attributes

$obj->as_hash

returns a flatten hash with the object attributes, i.e.:
my %values=$obj->as_hash;

%INDEX

hash with offsets as used by vec perl operator (to get an offset in bits, the value has to be multiplied by the corresponding bit field size).

%SIZES

hash with bit field sizes in bits.

%SIGNED

hash with signedness of the fields

Bit fields are packed in the bit vector in the order specified as arguments to make_bits.

Bit fields are padded inside the bit vector, i.e. a class created like

make_bits(A=>1, B=>2, C=>1, D=>4, E=>8, F=>16);

will have the layout

AxBBCxxx DDDDxxxx EEEEEEEE xxxxxxxx FFFFFFFF FFFFFFFF

<<less
Download (0.004MB)
Added: 2007-07-30 License: Perl Artistic License Price:
816 downloads
MOS 6502 Simulator

MOS 6502 Simulator


MOS 6502 Simulator is sort of an emulator for a 6502 chip. more>>
MOS 6502 Simulator is sort of an emulator for a 6502 chip. Theres virtually nothing apart from the CPU (minus BCD operations). It also bears no heed to instruction timings.

Whilst (apart from those two things) it successfully simulates the CPU there were a few design flaws, which led me not to continue with it:

- I wrote it in C++.

As the 6502 had no dedicated IO bus, everything was done via memory. I had the idea of having a pure virtual class which provided a generic interface, then as I wrote devices to sit in the memory space, they could just override portions of it, or trap on writes or something.

Whilst writing this, I kept getting the feeling I should have written it in asm instead Especially for manipulating flags and rotates and stuff. (as I could have just rotated AL, for example, rather than the mess I have in the C++ code.

- Sloppy instruction decoding.

I originally set out to decode the instructions properly, but there were lots of exceptions to the system used (esp. if I intended to support the 65C02 for example). This decended into a massive switch statement. I almost considered splitting it up to smaller files, and just #include them in the middle, just to make it more managable.

Also, as they are not in numerical order (grouped according to type, or addressing mode, cant remember atm) it wouldnt compile to a jump table. Does with optimisation on though.

The main thing that prompted me to write this was I found my BBC-B in the loft, and felt a pang of nostalgia for the hours wasted hunched over it in the lowest resolution text mode (IIRC mode 7 to save ram). I had the idea of writing a NES or BBC emulator, however it didnt get that far.

It has a pretty simple image format. The file must be >= 65536 bytes (64k) and that is simply the memory image for the system (16-bit address bus). There is a strange sort of ASCII text display at 0x200, which is ok enough for spewing a string to. As it was just thrown together in the space of 6 hours or so (took a long time to do the switch statement) its not very thouroughly documented, but hey.
<<less
Download (0.046MB)
Added: 2007-03-05 License: BSD License Price:
972 downloads
Critical Mass 1.0.1

Critical Mass 1.0.1


Critical Mass (Critter) is an SDL/OpenGL space shootem up game. more>>
Critical Mass (aka Critter) is an SDL/OpenGL space shootem up game. Critical Mass project currently runs on Mac OS X, Windows, and Linux.

The latter is my main development platform. Other platforms supported by SDL/OpenGL may also work with a bit of work.
<<less
Download (4.9MB)
Added: 2006-07-16 License: GPL (GNU General Public License) Price:
1213 downloads
Secleted [ 0 ] software to compare
  • Page: 1 of 5
  • 1
  • 2
  • 3
  • 4
  • 5