├── sim
├── ctrl
│ └── nc
│ │ └── run
│ │ ├── ctrl.sv
│ │ ├── ctrl2.sv
│ │ ├── dir.lst
│ │ ├── clean
│ │ ├── sim.lst
│ │ ├── lib.lst
│ │ └── test.py
├── lcd
│ └── nc
│ │ └── run
│ │ ├── lib.lst
│ │ ├── dir.lst
│ │ ├── rtl.lst
│ │ ├── sim.lst
│ │ ├── clean
│ │ └── test.py
├── sdm
│ └── nc
│ │ └── run
│ │ ├── lib.lst
│ │ ├── dir.lst
│ │ ├── clean
│ │ ├── rtl.lst
│ │ ├── sim.lst
│ │ └── test.py
├── sram
│ └── nc
│ │ └── run
│ │ ├── lib.lst
│ │ ├── sram.sv
│ │ ├── dir.lst
│ │ ├── clean
│ │ ├── rtl.lst
│ │ ├── sim.lst
│ │ └── test.py
├── uart
│ └── nc
│ │ └── run
│ │ ├── lib.lst
│ │ ├── dir.lst
│ │ ├── sim.lst
│ │ ├── clean
│ │ ├── rtl.lst
│ │ └── test.py
├── ps2mouse
│ └── nc
│ │ └── run
│ │ ├── dir.lst
│ │ ├── rtl.lst
│ │ ├── clean
│ │ ├── lib.lst
│ │ ├── sim.lst
│ │ └── test.py
├── cpu_cache_sdram
│ └── nc
│ │ └── run
│ │ ├── dir.lst
│ │ ├── clean
│ │ ├── lib.lst
│ │ ├── sim.lst
│ │ ├── rtl.lst
│ │ └── test.py
├── tg68
│ └── nc
│ │ └── run
│ │ ├── dir.lst
│ │ ├── clean
│ │ ├── rtl.lst
│ │ ├── lib.lst
│ │ ├── sim.lst
│ │ └── test.py
├── tg68k
│ └── nc
│ │ └── run
│ │ ├── dir.lst
│ │ ├── clean
│ │ ├── lib.lst
│ │ ├── sim.lst
│ │ ├── rtl.lst
│ │ └── test.py
├── common
│ └── clean
├── minimig
│ └── nc
│ │ └── run
│ │ ├── clean
│ │ ├── sim.lst
│ │ ├── dir.lst
│ │ ├── lib.lst
│ │ └── test.py
└── minimig_cpu
│ └── nc
│ └── run
│ ├── clean
│ ├── sim.lst
│ ├── dir.lst
│ ├── lib.lst
│ └── test.py
├── sw
├── sdm
│ ├── build.sh
│ └── sdm.c
├── vasm
│ ├── vasm.pdf
│ └── vasmm68k_mot
├── dice_disk
│ ├── Readme.txt
│ └── mm_tc64.adf
├── dma-seq-test
│ ├── dma-seq
│ └── dma-seq.c
├── 68kedit
│ ├── 68kedit5.1.exe
│ ├── 68kEditPatch_5.1.2.80.exe
│ └── File_id.diz
├── mkdrivesounds
│ ├── Step1.raw
│ ├── Step2.raw
│ ├── Step3.raw
│ ├── Step4.raw
│ ├── DiskEject.raw
│ ├── HDDStep1.raw
│ ├── HDDStep2.raw
│ ├── HDDStep3.raw
│ ├── HDDStep4.raw
│ ├── MotorLoop.raw
│ ├── MotorStop.raw
│ ├── drivesnd.bin
│ ├── DiskInsert.raw
│ ├── MotorStart.raw
│ ├── Makefile
│ └── mkdrivesounds.c
├── misc
│ ├── Minimig2OnBlue_edit.png
│ ├── makefont.py
│ └── makelogo.py
├── AmigaUtils
│ ├── build.sh
│ ├── Poke.c
│ ├── Peek.c
│ └── SetNMI.s
└── hex2mif
│ └── hex2mif.py
├── doc
├── amiga
│ ├── amiga_docs_links.txt
│ ├── ahi
│ │ ├── Aros_Developer_AHIDrivers - Wikibooks, open books for an open world_files
│ │ │ ├── index.php
│ │ │ ├── index(13).php
│ │ │ ├── wikimedia-button.png
│ │ │ ├── poweredby_mediawiki_88x31.png
│ │ │ ├── index(9).php
│ │ │ ├── index(5).php
│ │ │ ├── index(2).php
│ │ │ ├── index(7).php
│ │ │ ├── index(10).php
│ │ │ ├── index(8).php
│ │ │ ├── index(11).php
│ │ │ ├── index(1).php
│ │ │ ├── index(15).php
│ │ │ ├── index(14).php
│ │ │ ├── index(6).php
│ │ │ ├── index(12).php
│ │ │ ├── index(4).php
│ │ │ └── load(3).php
│ │ ├── ahisrc.tar.gz
│ │ ├── m68k-amigaos-ahidev.lha
│ │ └── m68k-amigaos-ahiusr.lha
│ └── aga
│ │ ├── AGA.guide
│ │ ├── RandyAGA.txt
│ │ ├── aga_guide.lha
│ │ ├── AGA Registers.pdf
│ │ ├── Action's guide to AGA fixing software!.mht
│ │ └── Mysterious Ways - How to Code the Amiga - AGA Chipset.mht
├── mist
│ ├── pcb.pdf
│ └── schematic.pdf
├── fpga
│ ├── cyc2_cii5v1.pdf
│ └── cyclone3_handbook.pdf
├── rtc
│ ├── OKI MSM6242B.pdf
│ ├── a1200clock_1_sm.jpg
│ ├── ide64clock_port.pdf
│ └── subway_sw_manual.pdf
└── avnet-spartan3
│ ├── ADV7123.pdf
│ ├── AT24C256W.pdf
│ ├── DP83846A.pdf
│ ├── CY7C1041V33.pdf
│ ├── 48LC16M16A2-75.pdf
│ ├── TE28F128J3C-150.pdf
│ ├── avbus
│ ├── sram_exp-ug.pdf
│ ├── flash_exp-sch.pdf
│ ├── flash_exp-ug.pdf
│ ├── flash_exp.bom.pdf
│ ├── sdram_exp-bom.pdf
│ ├── sdram_exp-sch.pdf
│ ├── sdram_exp-ug.pdf
│ ├── sram_exp-bom.pdf
│ ├── sram_exp-sch.pdf
│ ├── communications_memory_module_schematic_112202F.pdf
│ └── communications_memory_module_user_guide_112202.pdf
│ ├── Xilinx Spartan-3 Evaluation Kit - BOM 021904F.pdf
│ ├── Xilinx Spartan-3 Evaluation Kit - Schematics 021904F.pdf
│ ├── Xilinx Spartan-3 Evaluation Kit - Terms & Conditions 0….pdf
│ ├── Xilinx Spartan-3 Evaluation Kit - User's Guide 022304F.pdf
│ └── Release Notes.txt
├── fw
├── romgen
│ ├── Makefile
│ ├── rom_prologue.vhd
│ ├── rom_epilogue.vhd
│ └── romgen.c
├── ctrl_832
│ ├── hexdump.h
│ ├── audio.h
│ ├── rtc.h
│ ├── swap.h
│ ├── startup_m68k-elf.s
│ ├── small_printf.h
│ ├── akiko.h
│ ├── minimig_cfg.h
│ ├── hexdump.c
│ ├── osd_m68k-elf.ld
│ ├── akiko.c
│ ├── audio.c
│ ├── fpga.h
│ ├── uart.c
│ ├── interrupts.c
│ ├── errors.c
│ ├── swap.c
│ ├── printf.c
│ ├── interrupts.h
│ ├── spi.h
│ ├── firmware.h
│ ├── bincue.h
│ ├── audiotrack.h
│ ├── drivesounds.h
│ ├── c64keys.h
│ ├── rtc.c
│ ├── errors.h
│ ├── boot.h
│ ├── rafile.h
│ ├── fdd.h
│ ├── Makefile.68k
│ ├── osd_zpu-elf.ld
│ └── bootcustominit.h
├── ctrl_boot_832
│ ├── hexdump.h
│ ├── checksum.h
│ ├── bootdiag.s
│ ├── swap.h
│ ├── bootdiag.h
│ ├── small_printf.h
│ ├── uart.c
│ ├── uart.h
│ ├── checksum.c
│ ├── swap.c
│ ├── hexdump.c
│ ├── main.c
│ ├── mkchecksum.c
│ ├── rom_prologue.vhd
│ ├── spi.h
│ └── start68k.s
├── testbed
│ ├── swap.h
│ ├── bincue.h
│ ├── setstack.asm
│ ├── timer.h
│ ├── uart.c
│ ├── errors.c
│ ├── swap.c
│ ├── interrupts.c
│ ├── interrupts.h
│ ├── spi.h
│ ├── audiotrack.h
│ ├── errors.h
│ ├── boot.h
│ ├── rafile.h
│ └── malloc.h
├── dhrystone_832
│ ├── debug
│ ├── setstack.asm
│ ├── timer.h
│ └── uart.c
└── amiga_boot
│ └── Makefile
├── bench
├── cpu_cache_sdram_verilator
│ ├── .gitignore
│ ├── mt48lc16m16a2.v
│ └── Makefile
├── cpu_cache_sdram
│ ├── fw
│ │ └── test.S
│ └── tg68_ram.v
├── ps2mouse
│ └── ps2mouse_tb.v
├── de1
│ └── de1_clk_rst.v
└── lcd
│ └── lcd_tb.v
├── lib
├── altera
│ └── altera_mf.v
├── models
│ └── mt48lc16m16a2.v
└── io
│ └── generic_output.v
├── pcb
└── chaos-de1_ext2.zip
├── rtl
├── tg68
│ └── TG68_fast.vhd
├── mist
│ ├── vidclkcntrl.qip
│ ├── amigaclk_reconfig_pal.qip
│ ├── amigaclk_pll_reconfig.qip
│ ├── amigaclk_reconfig_ntsc.qip
│ ├── amiga_clk_altera.qip
│ └── amiga_clk_altera.ppf
├── de0_nano
│ ├── amiga_clk_altera.qip
│ └── amiga_clk_altera.ppf
├── soc
│ ├── tg68.qip
│ └── minimig_defines.vh
├── chameleonv1
│ ├── chameleonv1.qip
│ ├── ChamelonV1CPLD.qud
│ ├── amiga_clk_altera.qip
│ ├── amiga_clk_altera.ppf
│ └── chameleon_autofire.vhd
├── minimig
│ ├── agnus_refresh.v
│ ├── paula_audio_volume.v
│ ├── agnus_blitter_fill.v
│ ├── minimig_bankmapper.v
│ ├── agnus_blitter_minterm.v
│ └── minimig_syscontrol.v
├── de10-lite
│ ├── amiga_clk_altera.qip
│ └── amiga_clk_altera.ppf
├── chameleonv2
│ ├── amiga_clk_altera.qip
│ ├── chameleonv2.qip
│ ├── amiga_clk_altera.ppf
│ └── amiga_clk_altera.cmp
├── sdram
│ ├── tpram_inf_128x32.v
│ ├── tpram_inf_be_512x16.v
│ ├── dpram_inf_256x32.v
│ ├── dpram_inf_generic.v
│ ├── dpram_inf_be_1024x16.v
│ ├── dpram_inf_be_2048x16.v
│ ├── sdram.qip
│ └── dpram_inf_be_1024x32.v
├── io
│ ├── i_sync.v
│ └── sseg_decode.v
├── host
│ └── host.qip
├── chameleon
│ └── chameleon.qip
└── audio
│ ├── AudioMix.vhd
│ ├── audio_shifter.v
│ └── audio_top.v
├── amiga_sw
├── MinimigUtils.adf
├── WavPlay
│ ├── CompList
│ ├── WavPlay
│ ├── README.info
│ ├── wav.c.info
│ ├── Build68k.info
│ ├── WavPlay.info
│ ├── server.c.info
│ ├── _Server.s.info
│ ├── wavplay.c.info
│ ├── minimigaudio.c.info
│ ├── Build68k
│ ├── wav.h
│ ├── _Server.s
│ ├── Server.c
│ ├── README
│ ├── wav.h.info
│ └── minimigaudio.h
├── WheelDriver.adf
├── rtg
│ ├── README.info
│ ├── minimig.card
│ ├── Makefile
│ ├── P96CardStruct.i
│ ├── P96ModeInfo.i
│ └── README
├── WheelDriver
│ ├── Main.c
│ ├── CompList
│ ├── WheelDriver
│ ├── WheelDriver.info
│ ├── Build68k
│ ├── _Server.s
│ ├── newmouse.h
│ ├── WheelDriver.h
│ ├── Cx.h
│ └── Server.c
└── boingball
│ ├── minimig.art
│ ├── minimig.bal
│ └── minimig.cop
├── .gitmodules
├── paths.mk
├── debug
├── debugboot
├── misc
└── 51-usbblaster.rules
├── .gitignore
├── fpga
├── de0_nano
│ └── Makefile
├── mist
│ ├── Makefile
│ └── minimig_mist.qpf
├── virtual
│ └── minimig_virtual.qpf
├── chameleonv1
│ ├── Makefile
│ └── MinimigAGA_TC64V1.qpf
├── chameleonv2
│ ├── Makefile
│ └── MinimigAGA_TC64V2.qpf
└── de10_lite
│ └── minimig_de10.qpf
└── Makefile
/sim/ctrl/nc/run/ctrl.sv:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/sim/lcd/nc/run/lib.lst:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/sim/sdm/nc/run/lib.lst:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/sim/sram/nc/run/lib.lst:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/sim/sram/nc/run/sram.sv:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/sim/uart/nc/run/lib.lst:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/sim/ctrl/nc/run/ctrl2.sv:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/sim/lcd/nc/run/dir.lst:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sim/sdm/nc/run/dir.lst:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sim/sram/nc/run/dir.lst:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sim/uart/nc/run/dir.lst:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sim/ps2mouse/nc/run/dir.lst:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sim/ps2mouse/nc/run/rtl.lst:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sim/cpu_cache_sdram/nc/run/dir.lst:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/sim/tg68/nc/run/dir.lst:
--------------------------------------------------------------------------------
1 | ../../../../rtl/tg68
2 |
3 |
--------------------------------------------------------------------------------
/sim/ctrl/nc/run/dir.lst:
--------------------------------------------------------------------------------
1 | ../../../../rtl/or1200
2 |
3 |
--------------------------------------------------------------------------------
/sim/lcd/nc/run/rtl.lst:
--------------------------------------------------------------------------------
1 | ../../../../rtl/lcd/lcd.v
2 |
3 |
--------------------------------------------------------------------------------
/sim/lcd/nc/run/sim.lst:
--------------------------------------------------------------------------------
1 | ../../../../bench/lcd/lcd_tb.v
2 |
--------------------------------------------------------------------------------
/sim/tg68k/nc/run/dir.lst:
--------------------------------------------------------------------------------
1 | ../../../../rtl/tg68k
2 |
3 |
--------------------------------------------------------------------------------
/sim/common/clean:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rm -rf ../out/
4 |
5 |
--------------------------------------------------------------------------------
/sim/lcd/nc/run/clean:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rm -rf ../out/
4 |
5 |
--------------------------------------------------------------------------------
/sim/sdm/nc/run/clean:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rm -rf ../out/
4 |
5 |
--------------------------------------------------------------------------------
/sim/sdm/nc/run/rtl.lst:
--------------------------------------------------------------------------------
1 | ../../../../bench/sdm/sdm.v
2 |
3 |
--------------------------------------------------------------------------------
/sim/sdm/nc/run/sim.lst:
--------------------------------------------------------------------------------
1 | ../../../../bench/sdm/sdm_tb.v
2 |
3 |
--------------------------------------------------------------------------------
/sim/uart/nc/run/sim.lst:
--------------------------------------------------------------------------------
1 | ../../../../bench/uart/uart_tb.v
2 |
--------------------------------------------------------------------------------
/sim/ctrl/nc/run/clean:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rm -rf ../out/
4 |
5 |
--------------------------------------------------------------------------------
/sim/ctrl/nc/run/sim.lst:
--------------------------------------------------------------------------------
1 | ../../../../bench/ctrl/ctrl_tb.v
2 |
3 |
--------------------------------------------------------------------------------
/sim/minimig/nc/run/clean:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rm -rf ../out/
4 |
5 |
--------------------------------------------------------------------------------
/sim/ps2mouse/nc/run/clean:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rm -rf ../out/
4 |
5 |
--------------------------------------------------------------------------------
/sim/sram/nc/run/clean:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rm -rf ../out/
4 |
5 |
--------------------------------------------------------------------------------
/sim/tg68/nc/run/clean:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rm -rf ../out/
4 |
5 |
--------------------------------------------------------------------------------
/sim/tg68/nc/run/rtl.lst:
--------------------------------------------------------------------------------
1 | ../../../../rtl/tg68/TG68_fast.vhd
2 |
3 |
--------------------------------------------------------------------------------
/sim/tg68k/nc/run/clean:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rm -rf ../out/
4 |
5 |
--------------------------------------------------------------------------------
/sim/uart/nc/run/clean:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rm -rf ../out/
4 |
5 |
--------------------------------------------------------------------------------
/sim/minimig/nc/run/sim.lst:
--------------------------------------------------------------------------------
1 | ../../../../bench/minimig/soc_tb.v
2 |
3 |
--------------------------------------------------------------------------------
/sim/minimig_cpu/nc/run/clean:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rm -rf ../out/
4 |
5 |
--------------------------------------------------------------------------------
/sim/ps2mouse/nc/run/lib.lst:
--------------------------------------------------------------------------------
1 | ../../../../lib/models/ps2mouse.v
2 |
3 |
--------------------------------------------------------------------------------
/sim/tg68/nc/run/lib.lst:
--------------------------------------------------------------------------------
1 | ../../../../lib/models/IS61LV6416L.v
2 |
3 |
--------------------------------------------------------------------------------
/sim/tg68/nc/run/sim.lst:
--------------------------------------------------------------------------------
1 | ../../../../bench/tg68/tg68_fast_tb.v
2 |
3 |
--------------------------------------------------------------------------------
/sim/tg68k/nc/run/lib.lst:
--------------------------------------------------------------------------------
1 | ../../../../lib/models/IS61LV6416L.v
2 |
3 |
--------------------------------------------------------------------------------
/sim/tg68k/nc/run/sim.lst:
--------------------------------------------------------------------------------
1 | ../../../../bench/tg68k/tg68k_fast_tb.v
2 |
3 |
--------------------------------------------------------------------------------
/sw/sdm/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | gcc -Wall sdm.c -o sdm && ./sdm
3 |
4 |
--------------------------------------------------------------------------------
/sim/cpu_cache_sdram/nc/run/clean:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | rm -rf ../out/
4 |
5 |
--------------------------------------------------------------------------------
/sim/minimig_cpu/nc/run/sim.lst:
--------------------------------------------------------------------------------
1 | ../../../../bench/minimig/soc_tb.v
2 |
3 |
--------------------------------------------------------------------------------
/doc/amiga/amiga_docs_links.txt:
--------------------------------------------------------------------------------
1 | http://amiga.sourceforge.net/amigadevhelp/
2 |
3 |
--------------------------------------------------------------------------------
/doc/amiga/ahi/Aros_Developer_AHIDrivers - Wikibooks, open books for an open world_files/index.php:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/doc/mist/pcb.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/mist/pcb.pdf
--------------------------------------------------------------------------------
/fw/romgen/Makefile:
--------------------------------------------------------------------------------
1 | romgen: romgen.c
2 | gcc -o romgen romgen.c
3 |
4 | clean:
5 | rm romgen
6 |
--------------------------------------------------------------------------------
/sw/vasm/vasm.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/vasm/vasm.pdf
--------------------------------------------------------------------------------
/doc/amiga/ahi/Aros_Developer_AHIDrivers - Wikibooks, open books for an open world_files/index(13).php:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/sw/vasm/vasmm68k_mot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/vasm/vasmm68k_mot
--------------------------------------------------------------------------------
/bench/cpu_cache_sdram_verilator/.gitignore:
--------------------------------------------------------------------------------
1 | sdram.vcd
2 | sdram.sav
3 | obj_dir
4 | cpu_cache_sdram_tb
5 |
--------------------------------------------------------------------------------
/doc/amiga/aga/AGA.guide:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/amiga/aga/AGA.guide
--------------------------------------------------------------------------------
/doc/mist/schematic.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/mist/schematic.pdf
--------------------------------------------------------------------------------
/lib/altera/altera_mf.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/lib/altera/altera_mf.v
--------------------------------------------------------------------------------
/pcb/chaos-de1_ext2.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/pcb/chaos-de1_ext2.zip
--------------------------------------------------------------------------------
/rtl/tg68/TG68_fast.vhd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/rtl/tg68/TG68_fast.vhd
--------------------------------------------------------------------------------
/sim/sram/nc/run/rtl.lst:
--------------------------------------------------------------------------------
1 | ../../../../rtl/ctrl/qmem_sram.v
2 | ../../../../lib/models/IS61LV6416L.v
3 |
4 |
--------------------------------------------------------------------------------
/sw/dice_disk/Readme.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/dice_disk/Readme.txt
--------------------------------------------------------------------------------
/sw/dma-seq-test/dma-seq:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/dma-seq-test/dma-seq
--------------------------------------------------------------------------------
/amiga_sw/MinimigUtils.adf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/amiga_sw/MinimigUtils.adf
--------------------------------------------------------------------------------
/amiga_sw/WavPlay/CompList:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/amiga_sw/WavPlay/CompList
--------------------------------------------------------------------------------
/amiga_sw/WavPlay/WavPlay:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/amiga_sw/WavPlay/WavPlay
--------------------------------------------------------------------------------
/amiga_sw/WheelDriver.adf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/amiga_sw/WheelDriver.adf
--------------------------------------------------------------------------------
/amiga_sw/rtg/README.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/amiga_sw/rtg/README.info
--------------------------------------------------------------------------------
/amiga_sw/rtg/minimig.card:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/amiga_sw/rtg/minimig.card
--------------------------------------------------------------------------------
/doc/fpga/cyc2_cii5v1.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/fpga/cyc2_cii5v1.pdf
--------------------------------------------------------------------------------
/doc/rtc/OKI MSM6242B.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/rtc/OKI MSM6242B.pdf
--------------------------------------------------------------------------------
/sim/minimig/nc/run/dir.lst:
--------------------------------------------------------------------------------
1 | ../../../../rtl/soc/
2 | ../../../../lib/altera/
3 | ../../../../rtl/or1200/
4 |
5 |
--------------------------------------------------------------------------------
/sim/sram/nc/run/sim.lst:
--------------------------------------------------------------------------------
1 | ../../../../bench/sram/qmem_sram_tb.v
2 | ../../../../bench/sram/qmem_master.v
3 |
4 |
--------------------------------------------------------------------------------
/sw/68kedit/68kedit5.1.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/68kedit/68kedit5.1.exe
--------------------------------------------------------------------------------
/sw/dice_disk/mm_tc64.adf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/dice_disk/mm_tc64.adf
--------------------------------------------------------------------------------
/amiga_sw/WavPlay/README.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/amiga_sw/WavPlay/README.info
--------------------------------------------------------------------------------
/amiga_sw/WavPlay/wav.c.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/amiga_sw/WavPlay/wav.c.info
--------------------------------------------------------------------------------
/amiga_sw/WheelDriver/Main.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/amiga_sw/WheelDriver/Main.c
--------------------------------------------------------------------------------
/doc/amiga/aga/RandyAGA.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/amiga/aga/RandyAGA.txt
--------------------------------------------------------------------------------
/doc/amiga/aga/aga_guide.lha:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/amiga/aga/aga_guide.lha
--------------------------------------------------------------------------------
/doc/amiga/ahi/ahisrc.tar.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/amiga/ahi/ahisrc.tar.gz
--------------------------------------------------------------------------------
/doc/rtc/a1200clock_1_sm.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/rtc/a1200clock_1_sm.jpg
--------------------------------------------------------------------------------
/doc/rtc/ide64clock_port.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/rtc/ide64clock_port.pdf
--------------------------------------------------------------------------------
/doc/rtc/subway_sw_manual.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/rtc/subway_sw_manual.pdf
--------------------------------------------------------------------------------
/lib/models/mt48lc16m16a2.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/lib/models/mt48lc16m16a2.v
--------------------------------------------------------------------------------
/sim/minimig_cpu/nc/run/dir.lst:
--------------------------------------------------------------------------------
1 | ../../../../rtl/soc/
2 | ../../../../lib/altera/
3 | ../../../../rtl/or1200/
4 |
5 |
--------------------------------------------------------------------------------
/sw/mkdrivesounds/Step1.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/mkdrivesounds/Step1.raw
--------------------------------------------------------------------------------
/sw/mkdrivesounds/Step2.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/mkdrivesounds/Step2.raw
--------------------------------------------------------------------------------
/sw/mkdrivesounds/Step3.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/mkdrivesounds/Step3.raw
--------------------------------------------------------------------------------
/sw/mkdrivesounds/Step4.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/mkdrivesounds/Step4.raw
--------------------------------------------------------------------------------
/amiga_sw/WavPlay/Build68k.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/amiga_sw/WavPlay/Build68k.info
--------------------------------------------------------------------------------
/amiga_sw/WavPlay/WavPlay.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/amiga_sw/WavPlay/WavPlay.info
--------------------------------------------------------------------------------
/amiga_sw/WavPlay/server.c.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/amiga_sw/WavPlay/server.c.info
--------------------------------------------------------------------------------
/amiga_sw/WheelDriver/CompList:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/amiga_sw/WheelDriver/CompList
--------------------------------------------------------------------------------
/amiga_sw/boingball/minimig.art:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/amiga_sw/boingball/minimig.art
--------------------------------------------------------------------------------
/amiga_sw/boingball/minimig.bal:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/amiga_sw/boingball/minimig.bal
--------------------------------------------------------------------------------
/amiga_sw/boingball/minimig.cop:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/amiga_sw/boingball/minimig.cop
--------------------------------------------------------------------------------
/doc/avnet-spartan3/ADV7123.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/avnet-spartan3/ADV7123.pdf
--------------------------------------------------------------------------------
/doc/fpga/cyclone3_handbook.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/fpga/cyclone3_handbook.pdf
--------------------------------------------------------------------------------
/sim/cpu_cache_sdram/nc/run/lib.lst:
--------------------------------------------------------------------------------
1 | ../../../../lib/models/IS61LV6416L.v
2 | ../../../../lib/models/mt48lc16m16a2.v
3 |
4 |
--------------------------------------------------------------------------------
/sw/mkdrivesounds/DiskEject.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/mkdrivesounds/DiskEject.raw
--------------------------------------------------------------------------------
/sw/mkdrivesounds/HDDStep1.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/mkdrivesounds/HDDStep1.raw
--------------------------------------------------------------------------------
/sw/mkdrivesounds/HDDStep2.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/mkdrivesounds/HDDStep2.raw
--------------------------------------------------------------------------------
/sw/mkdrivesounds/HDDStep3.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/mkdrivesounds/HDDStep3.raw
--------------------------------------------------------------------------------
/sw/mkdrivesounds/HDDStep4.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/mkdrivesounds/HDDStep4.raw
--------------------------------------------------------------------------------
/sw/mkdrivesounds/MotorLoop.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/mkdrivesounds/MotorLoop.raw
--------------------------------------------------------------------------------
/sw/mkdrivesounds/MotorStop.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/mkdrivesounds/MotorStop.raw
--------------------------------------------------------------------------------
/sw/mkdrivesounds/drivesnd.bin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/mkdrivesounds/drivesnd.bin
--------------------------------------------------------------------------------
/amiga_sw/WavPlay/_Server.s.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/amiga_sw/WavPlay/_Server.s.info
--------------------------------------------------------------------------------
/amiga_sw/WavPlay/wavplay.c.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/amiga_sw/WavPlay/wavplay.c.info
--------------------------------------------------------------------------------
/amiga_sw/WheelDriver/WheelDriver:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/amiga_sw/WheelDriver/WheelDriver
--------------------------------------------------------------------------------
/doc/amiga/aga/AGA Registers.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/amiga/aga/AGA Registers.pdf
--------------------------------------------------------------------------------
/doc/avnet-spartan3/AT24C256W.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/avnet-spartan3/AT24C256W.pdf
--------------------------------------------------------------------------------
/doc/avnet-spartan3/DP83846A.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/avnet-spartan3/DP83846A.pdf
--------------------------------------------------------------------------------
/fw/ctrl_832/hexdump.h:
--------------------------------------------------------------------------------
1 | #ifndef HEXDUMP_H
2 | #define HEXDUMP_H
3 |
4 | void hexdump(char *p,int l);
5 |
6 | #endif
7 |
8 |
--------------------------------------------------------------------------------
/sim/ps2mouse/nc/run/sim.lst:
--------------------------------------------------------------------------------
1 | ../../../../bench/ps2mouse/ps2mouse_tb.v
2 | ../../../../bench/ps2mouse/ps2mouse_ctrl.v
3 |
4 |
--------------------------------------------------------------------------------
/sw/misc/Minimig2OnBlue_edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/misc/Minimig2OnBlue_edit.png
--------------------------------------------------------------------------------
/sw/mkdrivesounds/DiskInsert.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/mkdrivesounds/DiskInsert.raw
--------------------------------------------------------------------------------
/sw/mkdrivesounds/MotorStart.raw:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/mkdrivesounds/MotorStart.raw
--------------------------------------------------------------------------------
/doc/avnet-spartan3/CY7C1041V33.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/avnet-spartan3/CY7C1041V33.pdf
--------------------------------------------------------------------------------
/fw/ctrl_boot_832/hexdump.h:
--------------------------------------------------------------------------------
1 | #ifndef HEXDUMP_H
2 | #define HEXDUMP_H
3 |
4 | void hexdump(char *p,int l);
5 |
6 | #endif
7 |
8 |
--------------------------------------------------------------------------------
/amiga_sw/WavPlay/minimigaudio.c.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/amiga_sw/WavPlay/minimigaudio.c.info
--------------------------------------------------------------------------------
/amiga_sw/WheelDriver/WheelDriver.info:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/amiga_sw/WheelDriver/WheelDriver.info
--------------------------------------------------------------------------------
/doc/amiga/ahi/m68k-amigaos-ahidev.lha:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/amiga/ahi/m68k-amigaos-ahidev.lha
--------------------------------------------------------------------------------
/doc/amiga/ahi/m68k-amigaos-ahiusr.lha:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/amiga/ahi/m68k-amigaos-ahiusr.lha
--------------------------------------------------------------------------------
/doc/avnet-spartan3/48LC16M16A2-75.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/avnet-spartan3/48LC16M16A2-75.pdf
--------------------------------------------------------------------------------
/doc/avnet-spartan3/TE28F128J3C-150.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/avnet-spartan3/TE28F128J3C-150.pdf
--------------------------------------------------------------------------------
/sw/68kedit/68kEditPatch_5.1.2.80.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/sw/68kedit/68kEditPatch_5.1.2.80.exe
--------------------------------------------------------------------------------
/doc/avnet-spartan3/avbus/sram_exp-ug.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/avnet-spartan3/avbus/sram_exp-ug.pdf
--------------------------------------------------------------------------------
/doc/avnet-spartan3/avbus/flash_exp-sch.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/avnet-spartan3/avbus/flash_exp-sch.pdf
--------------------------------------------------------------------------------
/doc/avnet-spartan3/avbus/flash_exp-ug.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/avnet-spartan3/avbus/flash_exp-ug.pdf
--------------------------------------------------------------------------------
/doc/avnet-spartan3/avbus/flash_exp.bom.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/avnet-spartan3/avbus/flash_exp.bom.pdf
--------------------------------------------------------------------------------
/doc/avnet-spartan3/avbus/sdram_exp-bom.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/avnet-spartan3/avbus/sdram_exp-bom.pdf
--------------------------------------------------------------------------------
/doc/avnet-spartan3/avbus/sdram_exp-sch.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/avnet-spartan3/avbus/sdram_exp-sch.pdf
--------------------------------------------------------------------------------
/doc/avnet-spartan3/avbus/sdram_exp-ug.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/avnet-spartan3/avbus/sdram_exp-ug.pdf
--------------------------------------------------------------------------------
/doc/avnet-spartan3/avbus/sram_exp-bom.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/avnet-spartan3/avbus/sram_exp-bom.pdf
--------------------------------------------------------------------------------
/doc/avnet-spartan3/avbus/sram_exp-sch.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/avnet-spartan3/avbus/sram_exp-sch.pdf
--------------------------------------------------------------------------------
/sim/ctrl/nc/run/lib.lst:
--------------------------------------------------------------------------------
1 | ../../../../lib/models/IS61LV6416L.v
2 | ../../../../lib/models/s29al032d_00.v
3 | ../../../../lib/models/sd_card.v
4 |
5 |
--------------------------------------------------------------------------------
/bench/cpu_cache_sdram_verilator/mt48lc16m16a2.v:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/bench/cpu_cache_sdram_verilator/mt48lc16m16a2.v
--------------------------------------------------------------------------------
/fw/ctrl_boot_832/checksum.h:
--------------------------------------------------------------------------------
1 | #ifndef CHECKSUM_H
2 | #define CHECKSUM_H
3 |
4 | unsigned int checksum(const unsigned char *a,int l);
5 |
6 | #endif
7 |
8 |
--------------------------------------------------------------------------------
/sim/tg68k/nc/run/rtl.lst:
--------------------------------------------------------------------------------
1 | ../../../../rtl/tg68k/TG68K_Pack.vhd
2 | ../../../../rtl/tg68k/TG68K_ALU.vhd
3 | ../../../../rtl/tg68k/TG68KdotC_Kernel.vhd
4 |
5 |
--------------------------------------------------------------------------------
/fw/ctrl_boot_832/bootdiag.s:
--------------------------------------------------------------------------------
1 | org 0
2 | tag:
3 | dc.l 0
4 | dc.l 8
5 | start:
6 | move.w #$fff,$dff180 ; Just spam the colour register.
7 | bra.s start
8 |
9 |
--------------------------------------------------------------------------------
/doc/amiga/aga/Action's guide to AGA fixing software!.mht:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/amiga/aga/Action's guide to AGA fixing software!.mht
--------------------------------------------------------------------------------
/sim/cpu_cache_sdram/nc/run/sim.lst:
--------------------------------------------------------------------------------
1 | ../../../../bench/cpu_cache_sdram/cpu_cache_sdram_tb.v
2 | ../../../../bench/de1/de1_clk_rst.v
3 | ../../../../bench/cpu_cache_sdram/tg68_ram.v
4 |
5 |
--------------------------------------------------------------------------------
/doc/avnet-spartan3/Xilinx Spartan-3 Evaluation Kit - BOM 021904F.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/avnet-spartan3/Xilinx Spartan-3 Evaluation Kit - BOM 021904F.pdf
--------------------------------------------------------------------------------
/fw/ctrl_832/audio.h:
--------------------------------------------------------------------------------
1 | #ifndef AUDIO_H
2 | #define AUDIO_H
3 |
4 | int audio_busy(int buffer);
5 | void audio_start();
6 | void audio_stop();
7 | void audio_clear();
8 |
9 | #endif
10 |
11 |
--------------------------------------------------------------------------------
/sim/uart/nc/run/rtl.lst:
--------------------------------------------------------------------------------
1 | ../../../../rtl/tmp/uart_top.v
2 | ../../../../rtl/tmp/uart_old.v
3 | ../../../../rtl/tmp/uart_pkg.vhd
4 | ../../../../rtl/tmp/uart.vhd
5 | ../../../../rtl/tmp/uart_top.vhd
6 |
7 |
--------------------------------------------------------------------------------
/doc/avnet-spartan3/Xilinx Spartan-3 Evaluation Kit - Schematics 021904F.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/avnet-spartan3/Xilinx Spartan-3 Evaluation Kit - Schematics 021904F.pdf
--------------------------------------------------------------------------------
/doc/avnet-spartan3/avbus/communications_memory_module_schematic_112202F.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/avnet-spartan3/avbus/communications_memory_module_schematic_112202F.pdf
--------------------------------------------------------------------------------
/doc/avnet-spartan3/avbus/communications_memory_module_user_guide_112202.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/avnet-spartan3/avbus/communications_memory_module_user_guide_112202.pdf
--------------------------------------------------------------------------------
/doc/avnet-spartan3/Xilinx Spartan-3 Evaluation Kit - Terms & Conditions 0….pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/avnet-spartan3/Xilinx Spartan-3 Evaluation Kit - Terms & Conditions 0….pdf
--------------------------------------------------------------------------------
/doc/avnet-spartan3/Xilinx Spartan-3 Evaluation Kit - User's Guide 022304F.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/avnet-spartan3/Xilinx Spartan-3 Evaluation Kit - User's Guide 022304F.pdf
--------------------------------------------------------------------------------
/fw/ctrl_832/rtc.h:
--------------------------------------------------------------------------------
1 | #ifndef RTC_H
2 | #define RTC_H
3 |
4 |
5 | #define RTCBASE 0x0fffff72
6 | #define HW_RTC(x) *(volatile unsigned short *)(RTCBASE+x)
7 |
8 | void HandleRTC();
9 |
10 | #endif
11 |
12 |
--------------------------------------------------------------------------------
/fw/ctrl_832/swap.h:
--------------------------------------------------------------------------------
1 | #ifndef SWAP_H
2 | #define SWAP_H
3 |
4 | unsigned long SwapBBBB(unsigned long i);
5 | unsigned int SwapBB(unsigned int i);
6 | unsigned long SwapWW(unsigned long i);
7 |
8 | #endif
9 |
10 |
--------------------------------------------------------------------------------
/fw/ctrl_boot_832/swap.h:
--------------------------------------------------------------------------------
1 | #ifndef SWAP_H
2 | #define SWAP_H
3 |
4 | unsigned int SwapBBBB(unsigned int i);
5 | unsigned int SwapBB(unsigned int i);
6 | unsigned int SwapWW(unsigned int i);
7 |
8 | #endif
9 |
10 |
--------------------------------------------------------------------------------
/fw/testbed/swap.h:
--------------------------------------------------------------------------------
1 | #ifndef SWAP_H
2 | #define SWAP_H
3 |
4 | unsigned long SwapBBBB(unsigned long i);
5 | unsigned int SwapBB(unsigned int i);
6 | unsigned long SwapWW(unsigned long i);
7 |
8 | #endif
9 |
10 |
--------------------------------------------------------------------------------
/sw/AmigaUtils/build.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # build Peek & Poke
4 | vc Peek.c -o Peek
5 | vc Poke.c -o Poke
6 |
7 | # build SetNMI
8 | vasmm68k_mot -m68010 -Fhunkexe SetNMI.s -o SetNMI
9 | chmod +x SetNMI
10 |
11 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "rtl/tg68k"]
2 | path = rtl/tg68k
3 | url = https://github.com/TobiFlex/TG68K.C.git
4 | [submodule "EightThirtyTwo"]
5 | path = EightThirtyTwo
6 | url = https://github.com/robinsonb5/EightThirtyTwo
7 |
--------------------------------------------------------------------------------
/fw/ctrl_boot_832/bootdiag.h:
--------------------------------------------------------------------------------
1 | unsigned char bootdiag_bin[] = {
2 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x33, 0xfc, 0x0f, 0xff,
3 | 0x00, 0xdf, 0xf1, 0x80, 0x60, 0xf6
4 | };
5 | unsigned int bootdiag_bin_len = 18;
6 |
--------------------------------------------------------------------------------
/paths.mk:
--------------------------------------------------------------------------------
1 | QUARTUS_PATH_CIII =
2 | QUARTUS_PATH_CIV = $(HOME)/intelFPGA_lite/18.1/quartus/bin/
3 | QUARTUS_PATH_C10LP = $(HOME)/intelFPGA_lite/18.1/quartus/bin/
4 | QUARTUS_PATH_MAX10 = $(HOME)/intelFPGA_lite/18.1/quartus/bin/
5 |
6 |
--------------------------------------------------------------------------------
/rtl/mist/vidclkcntrl.qip:
--------------------------------------------------------------------------------
1 | set_global_assignment -name IP_TOOL_NAME "ALTCLKCTRL"
2 | set_global_assignment -name IP_TOOL_VERSION "13.1"
3 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "vidclkcntrl.v"]
4 |
--------------------------------------------------------------------------------
/rtl/mist/amigaclk_reconfig_pal.qip:
--------------------------------------------------------------------------------
1 | set_global_assignment -name IP_TOOL_NAME "ROM: 1-PORT"
2 | set_global_assignment -name IP_TOOL_VERSION "13.1"
3 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "amigaclk_reconfig_pal.v"]
4 |
--------------------------------------------------------------------------------
/rtl/mist/amigaclk_pll_reconfig.qip:
--------------------------------------------------------------------------------
1 | set_global_assignment -name IP_TOOL_NAME "ALTPLL_RECONFIG"
2 | set_global_assignment -name IP_TOOL_VERSION "13.1"
3 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "amigaclk_pll_reconfig.v"]
4 |
--------------------------------------------------------------------------------
/rtl/mist/amigaclk_reconfig_ntsc.qip:
--------------------------------------------------------------------------------
1 | set_global_assignment -name IP_TOOL_NAME "ROM: 1-PORT"
2 | set_global_assignment -name IP_TOOL_VERSION "13.1"
3 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "amigaclk_reconfig_ntsc.v"]
4 |
--------------------------------------------------------------------------------
/fw/ctrl_832/startup_m68k-elf.s:
--------------------------------------------------------------------------------
1 | move.l #stack_top,%a7
2 |
3 | /* clear bss */
4 | lea.l __s_bss,%a0
5 | move.l #__e_bss,%d0
6 | 1: cmp.l %d0,%a0
7 | beq.s 2f
8 | clr.b (%a0)+
9 | bra.s 1b
10 | 2:
11 | jmp c_entry
12 |
--------------------------------------------------------------------------------
/doc/amiga/ahi/Aros_Developer_AHIDrivers - Wikibooks, open books for an open world_files/wikimedia-button.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/amiga/ahi/Aros_Developer_AHIDrivers - Wikibooks, open books for an open world_files/wikimedia-button.png
--------------------------------------------------------------------------------
/fw/dhrystone_832/debug:
--------------------------------------------------------------------------------
1 | #! /bin/sh
2 | quartus_stp -t ../../EightThirtyTwo/tcl/832bridge.tcl 2>/dev/null >/dev/null &
3 | while ! netstat -tna | grep 'LISTEN\>' | grep -q ':33581\>'; do
4 | sleep 1
5 | done
6 | ../../EightThirtyTwo/832ocd/832ocd -eb -m 832OSDAB.map
7 | kill $!
8 |
--------------------------------------------------------------------------------
/debug:
--------------------------------------------------------------------------------
1 | #! /bin/sh
2 | quartus_stp -t EightThirtyTwo/tcl/832bridge.tcl 2>/dev/null >/dev/null &
3 | while ! netstat -tna | grep 'LISTEN\>' | grep -q ':33581\>'; do
4 | sleep 1
5 | done
6 | EightThirtyTwo/832ocd/832ocd -eb -u fw/ctrl_832/832OSDAD.bin -m fw/ctrl_832/832OSDAD.map
7 | kill $!
8 |
--------------------------------------------------------------------------------
/doc/amiga/ahi/Aros_Developer_AHIDrivers - Wikibooks, open books for an open world_files/poweredby_mediawiki_88x31.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/robinsonb5/MinimigAGA_TC64/HEAD/doc/amiga/ahi/Aros_Developer_AHIDrivers - Wikibooks, open books for an open world_files/poweredby_mediawiki_88x31.png
--------------------------------------------------------------------------------
/debugboot:
--------------------------------------------------------------------------------
1 | #! /bin/sh
2 | quartus_stp -t EightThirtyTwo/tcl/832bridge.tcl 2>/dev/null >/dev/null &
3 | while ! netstat -tna | grep 'LISTEN\>' | grep -q ':33581\>'; do
4 | sleep 1
5 | done
6 | EightThirtyTwo/832ocd/832ocd -eb -u fw/ctrl_boot_832/OSDBoot_832.bin -m fw/ctrl_boot_832/OSDBoot_832.map
7 | kill $!
8 |
--------------------------------------------------------------------------------
/doc/amiga/ahi/Aros_Developer_AHIDrivers - Wikibooks, open books for an open world_files/index(9).php:
--------------------------------------------------------------------------------
1 | // Force short review box to be on its own line.
2 |
3 | $(document).ready( function($) {
4 | $('.flaggedrevs_short').wrap('
');
5 | });
--------------------------------------------------------------------------------
/fw/ctrl_832/small_printf.h:
--------------------------------------------------------------------------------
1 | #ifndef SMALL_PRINTF_H
2 | #define SMALL_PRINTF_H
3 |
4 | #ifdef DISABLE_PRINTF
5 | #define small_printf(x,...)
6 | #define printf(x,...)
7 | #define puts(x)
8 | #else
9 | int small_printf(const char *fmt, ...);
10 | #define printf small_printf
11 | #endif
12 |
13 | #endif
14 |
15 |
--------------------------------------------------------------------------------
/amiga_sw/WavPlay/Build68k:
--------------------------------------------------------------------------------
1 | stack 50000
2 | Echo "Building project - this may take a while!"
3 | Echo " "
4 | CompList >t:BScr vc +68000 -+ -c %s -o 68kobj/%s%s
5 | execute t:BScr
6 | Echo " "
7 | Echo "Linking..."
8 | vc +68000 -o WavPlay 68kobj/#?.o
9 | delete >nil: t:BScr
10 | Echo " "
11 | Echo "All done."
12 |
13 |
--------------------------------------------------------------------------------
/amiga_sw/WheelDriver/Build68k:
--------------------------------------------------------------------------------
1 | stack 50000
2 | Echo "Building project - this may take a while!"
3 | Echo " "
4 | CompList >t:BScr vc +68000 -+ -c %s -o 68kobj/%s%s
5 | execute t:BScr
6 | Echo " "
7 | Echo "Linking..."
8 | vc +68000 -o WheelDriver 68kobj/#?.o
9 | delete >nil: t:BScr
10 | Echo " "
11 | Echo "All done."
12 |
13 |
--------------------------------------------------------------------------------
/rtl/mist/amiga_clk_altera.qip:
--------------------------------------------------------------------------------
1 | set_global_assignment -name IP_TOOL_NAME "ALTPLL"
2 | set_global_assignment -name IP_TOOL_VERSION "13.1"
3 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "amiga_clk_altera.v"]
4 | set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "amiga_clk_altera.ppf"]
5 |
--------------------------------------------------------------------------------
/amiga_sw/WavPlay/wav.h:
--------------------------------------------------------------------------------
1 | #ifndef AUDIOTRACK_H
2 | #define AUDIOTRACK_H
3 |
4 | struct Wav
5 | {
6 | BPTR file;
7 | int length;
8 | };
9 |
10 |
11 | int wav_read(struct Wav *wav,char *buf,int length);
12 | struct Wav *wav_open(const char *filename);
13 | void wav_close(struct Wav *wav);
14 |
15 |
16 | #endif
17 |
18 |
--------------------------------------------------------------------------------
/rtl/de0_nano/amiga_clk_altera.qip:
--------------------------------------------------------------------------------
1 | set_global_assignment -name IP_TOOL_NAME "ALTPLL"
2 | set_global_assignment -name IP_TOOL_VERSION "13.0"
3 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "amiga_clk_altera.v"]
4 | set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "amiga_clk_altera.ppf"]
5 |
--------------------------------------------------------------------------------
/amiga_sw/WavPlay/_Server.s:
--------------------------------------------------------------------------------
1 |
2 | XDEF _Audio_ServerStub
3 |
4 | XREF _Audio_Server
5 |
6 | _Audio_ServerStub
7 | movem.l d2-d7/a2-a4,-(a7)
8 | move.l a1,-(a7)
9 | jsr _Audio_Server
10 | lea (4,a7),a7
11 | movem.l (a7)+,d2-d7/a2-a4
12 | move.l #0,d0
13 | rts
14 |
15 |
16 |
--------------------------------------------------------------------------------
/fw/ctrl_832/akiko.h:
--------------------------------------------------------------------------------
1 | #ifndef AKIKO_H
2 | #define AKIKO_H
3 |
4 |
5 | #define AKIKOBASE 0x0fffff80
6 | #define HW_AKIKO(x) *(volatile unsigned short *)(AKIKOBASE+x)
7 |
8 | #define REG_AKIKO_ADDR 2
9 | #define REG_AKIKO_DATA 6
10 |
11 | #define AKIKO_REQ 0x8000
12 | #define AKIKO_WRITE 0x4000
13 |
14 | void akiko_inthandler();
15 |
16 | #endif
17 |
18 |
--------------------------------------------------------------------------------
/fw/ctrl_boot_832/small_printf.h:
--------------------------------------------------------------------------------
1 | #ifndef SMALL_PRINTF_H
2 | #define SMALL_PRINTF_H
3 |
4 | #ifdef DISABLE_PRINTF
5 | #define small_printf(x,...)
6 | #define printf(x,...)
7 | #define puts(x)
8 | #else
9 | #ifndef __EIGHTTHIRTYTWO__
10 | int small_printf(const char *fmt, ...);
11 | #define printf small_printf
12 | #endif
13 | #endif
14 |
15 | #endif
16 |
17 |
--------------------------------------------------------------------------------
/bench/cpu_cache_sdram/fw/test.S:
--------------------------------------------------------------------------------
1 | ; defines
2 | STACK equ $100
3 |
4 | ;init
5 | init_sp:
6 | dc.l STACK
7 | init_pc:
8 | dc.l START
9 |
10 | ;program
11 | ORG $10
12 | START:
13 | move.l #$200000,A0
14 | move.w #$dead,(A0)+
15 | move.w #$beef,(A0)+
16 | move.w #$0123,(A0)+
17 | move.w #$4567,(A0)+
18 |
19 | LOOP:
20 | jmp LOOP
21 |
22 | END START
23 |
--------------------------------------------------------------------------------
/sim/minimig/nc/run/lib.lst:
--------------------------------------------------------------------------------
1 | ../../../../lib/altera/altera_mf.v
2 | ../../../../lib/altera/lpm_mult.v
3 |
4 | ../../../../lib/io/generic_input.v
5 | ../../../../lib/io/generic_output.v
6 |
7 | ../../../../lib/vga/vga_monitor.v
8 |
9 | ../../../../lib/models/sd_card.v
10 | ../../../../lib/models/mt48lc16m16a2.v
11 | ../../../../lib/models/IS61LV6416L.v
12 |
13 |
--------------------------------------------------------------------------------
/sim/minimig_cpu/nc/run/lib.lst:
--------------------------------------------------------------------------------
1 | ../../../../lib/altera/altera_mf.v
2 | ../../../../lib/altera/lpm_mult.v
3 |
4 | ../../../../lib/io/generic_input.v
5 | ../../../../lib/io/generic_output.v
6 |
7 | ../../../../lib/vga/vga_monitor.v
8 |
9 | ../../../../lib/models/sd_card.v
10 | ../../../../lib/models/mt48lc16m16a2.v
11 | ../../../../lib/models/IS61LV6416L.v
12 |
13 |
--------------------------------------------------------------------------------
/fw/ctrl_832/minimig_cfg.h:
--------------------------------------------------------------------------------
1 | // minimig_cfg.h
2 |
3 |
4 | #ifndef __MINIMIG_CFG_H__
5 | #define __MINIMIG_CFG_H__
6 |
7 |
8 | //// type definitions ////
9 | typedef struct {
10 | uint8_t kick1x_memory_detection_patch;
11 | } minimig_cfg_t;
12 |
13 |
14 | //// global variables ////
15 | extern minimig_cfg_t minimig_cfg;
16 |
17 |
18 | #endif // __MINIMIG_CFG_H__
19 |
--------------------------------------------------------------------------------
/sw/mkdrivesounds/Makefile:
--------------------------------------------------------------------------------
1 | SOUNDS=DiskInsert.raw DiskEject.raw MotorStart.raw MotorLoop.raw MotorStop.raw \
2 | Step1.raw Step2.raw Step3.raw Step4.raw HDDStep1.raw HDDStep2.raw HDDStep3.raw HDDStep4.raw
3 |
4 | all: drivesnd.bin
5 |
6 | drivesnd.bin: mkdrivesounds
7 | ./mkdrivesounds $(SOUNDS) >$@
8 |
9 | mkdrivesounds: mkdrivesounds.c
10 | gcc -o $@ $+
11 |
12 |
13 |
--------------------------------------------------------------------------------
/amiga_sw/WheelDriver/_Server.s:
--------------------------------------------------------------------------------
1 |
2 | XDEF _WheelDriver_ServerStub
3 |
4 | XREF _WheelDriver_Server
5 |
6 | _WheelDriver_ServerStub
7 | movem.l d2-d7/a2-a4,-(a7)
8 | move.l a1,-(a7)
9 | jsr _WheelDriver_Server
10 | lea (4,a7),a7
11 | movem.l (a7)+,d2-d7/a2-a4
12 | move.l #0,d0
13 | rts
14 |
15 |
16 |
--------------------------------------------------------------------------------
/fw/ctrl_boot_832/uart.c:
--------------------------------------------------------------------------------
1 | #include "uart.h"
2 |
3 | int putchar(int c)
4 | {
5 | // while(!(HW_UART(REG_UART)&(1<
3 |
4 | #include "minimigaudio.h"
5 |
6 |
7 | void Audio_Server(struct AudioContext *ac)
8 | {
9 | short s=AUDIOHW;
10 | AUDIOHW=ac->Active ? AUDIOACTIVE|AUDIOINTACTIVE : 0;
11 | s&=1;
12 | if(ac->ActiveBuffer!=s)
13 | {
14 | ac->ActiveBuffer=s;
15 | Signal(ac->SigTask,ac->Signals);
16 | }
17 | }
18 |
19 |
--------------------------------------------------------------------------------
/doc/amiga/ahi/Aros_Developer_AHIDrivers - Wikibooks, open books for an open world_files/index(5).php:
--------------------------------------------------------------------------------
1 | function change_displaytitle()
2 | {
3 | var text = $("#displaytitle").attr('title'), what;
4 |
5 | if ( text ) {
6 | what = $("#ca-nstab-" + ( mw.config.get('wgCanonicalNamespace').toLowerCase() || 'main' ) );
7 | what.find('a').text(text);
8 | }
9 | }
10 |
11 | $(document).ready(change_displaytitle);
--------------------------------------------------------------------------------
/rtl/chameleonv1/chameleonv1.qip:
--------------------------------------------------------------------------------
1 | set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) chameleon_buttons.vhd]
2 | set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) chameleon_io.vhd]
3 | set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) chameleon_toplevel.vhd]
4 | set_global_assignment -name QIP_FILE [file join $::quartus(qip_path) ../chameleon/chameleon.qip]
5 |
6 |
--------------------------------------------------------------------------------
/fw/ctrl_boot_832/uart.h:
--------------------------------------------------------------------------------
1 | #ifndef UART_H
2 | #define UART_H
3 |
4 | /* Hardware registers for a supporting UART to the ZPUFlex project. */
5 |
6 | #define UARTBASE 0xfffffff0
7 | #define HW_UART(x) *(volatile unsigned char *)(UARTBASE+x)
8 |
9 | #define REG_UART 0x03
10 | #define REG_UART_RXINT 9
11 | #define REG_UART_TXREADY 8
12 |
13 | int putchar(int c);
14 | int puts(const char *msg);
15 |
16 | #endif
17 |
18 |
--------------------------------------------------------------------------------
/rtl/chameleonv1/ChamelonV1CPLD.qud:
--------------------------------------------------------------------------------
1 | /* Quartus II 64-Bit Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition */
2 | JedecChain;
3 | FileRevision(JESD32A);
4 | DefaultMfr(6E);
5 |
6 | P ActionCode(Ign)
7 | Device PartName(CHAMELEONV1_CPLD) InstructionReg(8) MfrSpec(n_idcodes(1)JTAGId(59604093)mask(ffffffff));
8 |
9 | ChainEnd;
10 |
11 | AlteraBegin;
12 | ChainType(User_part_list);
13 | AlteraEnd;
14 |
--------------------------------------------------------------------------------
/rtl/chameleonv1/amiga_clk_altera.qip:
--------------------------------------------------------------------------------
1 | set_global_assignment -name IP_TOOL_NAME "ALTPLL"
2 | set_global_assignment -name IP_TOOL_VERSION "13.0"
3 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "amiga_clk_altera.v"]
4 | set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "amiga_clk_altera_bb.v"]
5 | set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "amiga_clk_altera.ppf"]
6 |
--------------------------------------------------------------------------------
/fw/testbed/bincue.h:
--------------------------------------------------------------------------------
1 | #ifndef BINCUE_H
2 | #define BINCUE_H
3 |
4 | enum cdimagetype {CD_INVALID,CD_BINARY,CD_WAVE};
5 |
6 | struct cdimage
7 | {
8 | int tracks;
9 | int audiotracks;
10 | int currenttrack;
11 | int offset;
12 | int length; /* 0 for standalone WAV files. */
13 | enum cdimagetype type;
14 | char filename[261];
15 | };
16 |
17 | int cd_gettrack(struct cdimage *cd, char *in,int track);
18 |
19 | #endif
20 |
21 |
--------------------------------------------------------------------------------
/rtl/minimig/agnus_refresh.v:
--------------------------------------------------------------------------------
1 | // refresh dma channel (for compatibility)
2 |
3 |
4 | module agnus_refresh
5 | (
6 | input [8:0] hpos,
7 | output reg dma
8 | );
9 |
10 | //dma request
11 | always @(hpos)
12 | case (hpos)
13 | 9'b0000_0100_1 : dma = 1'b1;
14 | 9'b0000_0110_1 : dma = 1'b1;
15 | 9'b0000_1000_1 : dma = 1'b1;
16 | 9'b0000_1010_1 : dma = 1'b1;
17 | default : dma = 1'b0;
18 | endcase
19 |
20 |
21 | endmodule
22 |
23 |
--------------------------------------------------------------------------------
/sw/misc/makefont.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 |
3 | import sys,os
4 |
5 |
6 | fin = "font.in"
7 | fon = "font_hor.c"
8 |
9 |
10 | with open(fon, 'w') as fo:
11 | fo.write( "/* font_hor.c */\n\n")
12 | fo.write( "const char font_hor [][] = {\n")
13 | with open(fin, 'r') as fi:
14 | for line in fi.readlines():
15 | fo.write( " {%s},\n" % line.strip().replace("$", "0x").replace(",", ", "))
16 | fo.write( "};\n\n")
17 |
18 |
--------------------------------------------------------------------------------
/fw/ctrl_boot_832/checksum.c:
--------------------------------------------------------------------------------
1 |
2 | // Endian-neutral checksum of a memory region...
3 |
4 | unsigned int checksum(const unsigned char *a,int l)
5 | {
6 | unsigned int sum=0;
7 | unsigned int t;
8 | while(l>0)
9 | {
10 | t=*a++;
11 |
12 | t<<=8;
13 | --l; t|=l>0 ? *a++ : 0;
14 |
15 | t<<=8;
16 | --l; t|=l>0 ? *a++ : 0;
17 |
18 | t<<=8;
19 | --l; t|=l>0 ? *a++ : 0;
20 |
21 | sum+=t;
22 | --l;
23 | }
24 | return(sum);
25 | }
26 |
27 |
--------------------------------------------------------------------------------
/misc/51-usbblaster.rules:
--------------------------------------------------------------------------------
1 | # USB-Blaster
2 | BUS=="usb", SYSFS{idVendor}=="09fb", SYSFS{idProduct}=="6001", MODE="0666"
3 | BUS=="usb", SYSFS{idVendor}=="09fb", SYSFS{idProduct}=="6002", MODE="0666"
4 | BUS=="usb", SYSFS{idVendor}=="09fb", SYSFS{idProduct}=="6003", MODE="0666"
5 |
6 | # USB-Blaster II
7 |
8 | BUS=="usb", SYSFS{idVendor}=="09fb", SYSFS{idProduct}=="6010", MODE="0666"
9 | BUS=="usb", SYSFS{idVendor}=="09fb", SYSFS{idProduct}=="6810", MODE="0666"
10 |
11 |
--------------------------------------------------------------------------------
/rtl/de10-lite/amiga_clk_altera.qip:
--------------------------------------------------------------------------------
1 | set_global_assignment -name IP_TOOL_NAME "ALTPLL"
2 | set_global_assignment -name IP_TOOL_VERSION "18.1"
3 | set_global_assignment -name IP_GENERATED_DEVICE_FAMILY "{MAX 10}"
4 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) "amiga_clk_altera.v"]
5 | set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "amiga_clk_altera_bb.v"]
6 | set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "amiga_clk_altera.ppf"]
7 |
--------------------------------------------------------------------------------
/fw/testbed/setstack.asm:
--------------------------------------------------------------------------------
1 | .section .text.setstack
2 | .global _setstack
3 |
4 | // Seed function - call this from main to have the appropriate code included.
5 | _setstack:
6 | mr r7
7 |
8 | __setstack:
9 | mr r0
10 | .liabs _STACKTOP
11 | exg r6
12 | stdec r6
13 | mt r0
14 | mr r7
15 |
16 | __restorestack:
17 | mr r0
18 | ldinc r6
19 | mr r6
20 | mt r0
21 | mr r7
22 |
23 | .ctor 200.setstack
24 | .ref __setstack
25 |
26 | .dtor 200.restorestack
27 | .ref __restorestack
28 |
29 |
--------------------------------------------------------------------------------
/rtl/chameleonv2/amiga_clk_altera.qip:
--------------------------------------------------------------------------------
1 | set_global_assignment -name IP_TOOL_NAME "ALTPLL"
2 | set_global_assignment -name IP_TOOL_VERSION "18.1"
3 | set_global_assignment -name IP_GENERATED_DEVICE_FAMILY "{Cyclone 10 LP}"
4 | set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) "amiga_clk_altera.vhd"]
5 | set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "amiga_clk_altera.cmp"]
6 | set_global_assignment -name MISC_FILE [file join $::quartus(qip_path) "amiga_clk_altera.ppf"]
7 |
--------------------------------------------------------------------------------
/fw/dhrystone_832/setstack.asm:
--------------------------------------------------------------------------------
1 | .section .text.setstack
2 | .global _setstack
3 |
4 | // Seed function - call this from main to have the appropriate code included.
5 | _setstack:
6 | mr r7
7 |
8 | __setstack:
9 | mr r0
10 | .liabs _STACKTOP
11 | exg r6
12 | stdec r6
13 | mt r0
14 | mr r7
15 |
16 | __restorestack:
17 | mr r0
18 | ldinc r6
19 | mr r6
20 | mt r0
21 | mr r7
22 |
23 | .ctor 200.setstack
24 | .ref __setstack
25 |
26 | .dtor 200.restorestack
27 | .ref __restorestack
28 |
29 |
--------------------------------------------------------------------------------
/fw/ctrl_832/hexdump.c:
--------------------------------------------------------------------------------
1 |
2 | char putchar(char c);
3 |
4 | void hexdump(unsigned char *p,unsigned int l)
5 | {
6 | unsigned int *p2=(unsigned int *)p;
7 | l=(l/4);
8 | while(l--)
9 | {
10 | int i;
11 | unsigned int t=*p2++;
12 | for(i=0;i<8;++i)
13 | {
14 | unsigned int t2=(t>>28);
15 | t2+='0';
16 | if(t2>'9')
17 | t2+='@'-'9';
18 | putchar(t2);
19 | t<<=4;
20 | }
21 | putchar(' ');
22 | if((l&3)==0)
23 | putchar('\n');
24 | }
25 | putchar('\n');
26 | }
27 |
28 |
29 |
--------------------------------------------------------------------------------
/amiga_sw/rtg/Makefile:
--------------------------------------------------------------------------------
1 | AS=vasmm68k_mot
2 | INC_ASM=~/NDK_3.9/Include/include_i/
3 | VASM_FLAGS := -quiet -nowarn=1012 -m68020 -Fhunkexe -kick1hunks -nosym -no-opt
4 |
5 | TARGET := minimig.card
6 | SOURCE := minimig.card.asm
7 | INCLUDES := P96BoardInfo.i P96CardStruct.i P96ModeInfo.i
8 |
9 | all: $(TARGET)
10 | @echo ""
11 |
12 | $(TARGET): Makefile
13 | $(TARGET): $(INCLUDES)
14 | $(TARGET): $(SOURCE)
15 | $(AS) $< -o $@ $(VASM_FLAGS) -I $(INC_ASM)
16 |
17 | clean:
18 | rm -rf $(TARGET) $(LISTFILE)
19 |
20 |
--------------------------------------------------------------------------------
/fw/ctrl_832/osd_m68k-elf.ld:
--------------------------------------------------------------------------------
1 | SECTIONS
2 | {
3 | . = 0x2000;
4 | .code : {
5 | m68k-elf-build/startup_m68k-elf.o (.text)
6 | *(.text)
7 | *(.rodata)
8 | *(.rodata.*)
9 | *(.data)
10 | }
11 | .extra : {
12 | __s_bss = . ;
13 | *(.bss)
14 | __e_bss = . ;
15 | }
16 | .eh_frame : {
17 | *(.eh_frame)
18 | }
19 | heap_low = .; /* for _sbrk */
20 | . = . + 0x1000; /* 64kB of heap memory */
21 | heap_top = .; /* for _sbrk */
22 |
23 | stack_top = 0x7fffc; /* for startup.s */
24 | }
25 |
--------------------------------------------------------------------------------
/fw/ctrl_boot_832/swap.c:
--------------------------------------------------------------------------------
1 | unsigned int SwapBBBB(unsigned int i)
2 | {
3 | unsigned int result=(i>>24)&0xff;
4 | result|=(i>>8)&0xff00;
5 | result|=(i<<8)&0xff0000;
6 | result|=(i<<24)&0xff000000;
7 | return(result);
8 | }
9 |
10 | unsigned int SwapBB(unsigned int i)
11 | {
12 | unsigned int result=(i>>8)&0xff;
13 | result|=(i<<8)&0xff00;
14 | return(result);
15 | }
16 |
17 | unsigned long SwapWW(unsigned long i)
18 | {
19 | unsigned int result=(i>>16)&0xffff;
20 | result|=(i<<16)&0xffff0000;
21 | return(result);
22 | }
23 |
--------------------------------------------------------------------------------
/fw/testbed/timer.h:
--------------------------------------------------------------------------------
1 | #ifndef TIMER_H
2 | #define TIMER_H
3 |
4 | /* Hardware registers for a timer */
5 |
6 | #define TIMERBASE 0x0FFFFFD2
7 | #define HW_TIMER(x) *(volatile unsigned short *)(TIMERBASE+x)
8 |
9 | #define REG_TIMER_ENABLE 0
10 | #define REG_TIMER_INDEX 4
11 | #define REG_TIMER_COUNTER 8
12 |
13 | /* Legacy millisecond counter, needed for the Dhrystone ZPU demo.
14 | FIXME - replace this with a TIMER_COUNTER read at some point */
15 |
16 | #define REG_MILLISECONDS (0x0FFFFFD2-TIMERBASE)
17 |
18 | #endif
19 |
20 |
--------------------------------------------------------------------------------
/sw/68kedit/File_id.diz:
--------------------------------------------------------------------------------
1 | ---[ 68K Editor & Front End Assembler + Simulator ]---
2 |
3 | 68000 Editor, Assembler and Simulator lets you
4 | write and test assembly language programs for the
5 | Motorola 68000 processor. The program is designed
6 | to lets you edit, assemble and simulate 68000 programs
7 | in a Windows environment.
8 |
9 | 68000 Editor, Assembler and Simulator Home Page :
10 | http://welcome.to/68000
11 |
12 | -------------------------------------------------------
13 |
--------------------------------------------------------------------------------
/fw/dhrystone_832/timer.h:
--------------------------------------------------------------------------------
1 | #ifndef TIMER_H
2 | #define TIMER_H
3 |
4 | /* Hardware registers for a timer */
5 |
6 | #define TIMERBASE 0x0FFFFFD2
7 | #define HW_TIMER(x) *(volatile unsigned short *)(TIMERBASE+x)
8 |
9 | #define REG_TIMER_ENABLE 0
10 | #define REG_TIMER_INDEX 4
11 | #define REG_TIMER_COUNTER 8
12 |
13 | /* Legacy millisecond counter, needed for the Dhrystone ZPU demo.
14 | FIXME - replace this with a TIMER_COUNTER read at some point */
15 |
16 | #define REG_MILLISECONDS (0x0FFFFFD2-TIMERBASE)
17 |
18 | #endif
19 |
20 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # ignore backup files
2 | *~
3 |
4 | # ignore vi swapfiles
5 | .*.swp
6 |
7 | # ignore compiled python
8 | *pyc
9 |
10 | # ignore some backup files
11 | *bak
12 |
13 | # ignore some c files
14 | *\.o
15 | *\.d
16 |
17 | # ignore dropbox files
18 | .dropbox.attr
19 |
20 | # ignore directories
21 | bin/
22 | rel/
23 | fpga/*/out/
24 | fpga/*/db/
25 | fpga/*/incremental_db/
26 | greybox_tmp/
27 |
28 | # build script shouldn't be in repo
29 | build.sh
30 |
31 | # ignore generated version file
32 | rtl/minimig/minimig_version.vh
33 |
--------------------------------------------------------------------------------
/fw/ctrl_832/akiko.c:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | #include "interrupts.h"
4 |
5 | #include "akiko.h"
6 |
7 | void akiko_inthandler()
8 | {
9 | unsigned int aa;
10 | unsigned int ad;
11 |
12 | aa=HW_AKIKO(REG_AKIKO_ADDR);
13 | ad=HW_AKIKO(REG_AKIKO_DATA);
14 | if(aa&AKIKO_REQ)
15 | {
16 | if(aa&AKIKO_WRITE)
17 | printf("Akiko write: %x, %x\n",aa,ad);
18 | else
19 | printf("Akiko read: %x\n",aa);
20 | HW_AKIKO(REG_AKIKO_DATA)=0;
21 | }
22 |
23 | }
24 |
25 | __constructor(101.akiko) void akikoconstructor()
26 | {
27 | }
28 |
29 |
--------------------------------------------------------------------------------
/fw/ctrl_boot_832/hexdump.c:
--------------------------------------------------------------------------------
1 |
2 | char putchar(char c);
3 |
4 | void hexdump(unsigned char *p,unsigned int l)
5 | {
6 | unsigned int *p2=(unsigned int *)p;
7 | int cursor=0;
8 | l=(l/4);
9 | while(l--)
10 | {
11 | int i;
12 | unsigned int t=*p2++;
13 | for(i=0;i<8;++i)
14 | {
15 | unsigned int t2=(t>>28);
16 | t2+='0';
17 | if(t2>'9')
18 | t2+='@'-'9';
19 | putchar(t2);
20 | t<<=4;
21 | }
22 | putchar(' ');
23 | if((l&3)==0)
24 | {
25 | putchar('\n');
26 | }
27 | }
28 | putchar('\n');
29 | }
30 |
31 |
32 |
--------------------------------------------------------------------------------
/sim/cpu_cache_sdram/nc/run/rtl.lst:
--------------------------------------------------------------------------------
1 | ../../../../rtl/clock/amiga_clk.v
2 |
3 | ../../../../rtl/sdram/sdram_ctrl.v
4 | ../../../../rtl/sdram/cpu_cache.v
5 | ../../../../rtl/sdram/tpram_inf_128x32.v
6 | ../../../../rtl/sdram/tpram_inf_be_512x16.v
7 |
8 | ../../../../rtl/sdram/cpu_cache_new.v
9 | ../../../../rtl/sdram/dpram_inf_256x32.v
10 | ../../../../rtl/sdram/dpram_inf_be_1024x16.v
11 |
12 | ../../../../rtl/tg68k/TG68K.vhd
13 | ../../../../rtl/tg68k/TG68K_Pack.vhd
14 | ../../../../rtl/tg68k/TG68KdotC_Kernel.vhd
15 | ../../../../rtl/tg68k/TG68K_ALU.vhd
16 |
17 |
--------------------------------------------------------------------------------
/sw/AmigaUtils/Poke.c:
--------------------------------------------------------------------------------
1 | /*
2 | // Poke.c
3 | // 2013, rok.krajnc@gmail.com
4 | // Sets memory location to data
5 | */
6 |
7 | #include
8 | #include
9 | #include
10 |
11 | int main(int argc, char** argv)
12 | {
13 | unsigned int adr, dat;
14 |
15 | if (argc != 3) {
16 | fprintf(stderr, "Usage: %s address data\n", argv[0]);
17 | exit(EXIT_FAILURE);
18 | }
19 |
20 | adr = strtoul(argv[1], NULL, 0);
21 | dat = strtoul(argv[2], NULL, 0);
22 |
23 | *((unsigned int*)(adr)) = dat;
24 |
25 | exit(EXIT_SUCCESS);
26 | }
27 |
28 |
--------------------------------------------------------------------------------
/sw/AmigaUtils/Peek.c:
--------------------------------------------------------------------------------
1 | /*
2 | // peek.c
3 | // 2013, rok.krajnc@gmail.com
4 | // Reads memory location
5 | */
6 |
7 | #include
8 | #include
9 | #include
10 |
11 | int main(int argc, char** argv)
12 | {
13 | unsigned int adr, dat;
14 |
15 | if (argc != 2) {
16 | fprintf(stderr, "Usage: %s address\n", argv[0]);
17 | exit(EXIT_FAILURE);
18 | }
19 |
20 | adr = strtoul(argv[1], NULL, 0);
21 | dat = *((unsigned int*)(adr));
22 |
23 | fprintf(stdout, "*(0x%08x) = 0x%08x\n", adr, dat);
24 |
25 | exit(EXIT_SUCCESS);
26 | }
27 |
28 |
--------------------------------------------------------------------------------
/fw/ctrl_832/audio.c:
--------------------------------------------------------------------------------
1 | #include "audio.h"
2 | #include "hardware.h"
3 |
4 |
5 | int audio_busy(int buffer)
6 | {
7 | return((AUDIO&1)==buffer);
8 | }
9 |
10 |
11 | void audio_start()
12 | {
13 | AUDIO=AUDIOF_ENA;
14 | }
15 |
16 |
17 | void audio_stop()
18 | {
19 | AUDIO=AUDIOF_CLEAR;
20 | }
21 |
22 | void audio_clear()
23 | {
24 | unsigned char *p=AUDIO_BUFFER;
25 | int i;
26 | AUDIO=AUDIOF_CLEAR;
27 | for(i=0;i
5 | #include
6 |
7 |
8 | int main (int argc, char** argv)
9 | {
10 | int i;
11 | int a0;
12 | int a1;
13 | int step;
14 | int out;
15 | unsigned int n;
16 |
17 | a0 = 4;
18 | a1 = -4;
19 | step = a1 - a0;
20 | n=4;
21 | out = a0<>n);
26 | }
27 | printf("out>>n=%d\n", out>>n);
28 |
29 | exit(EXIT_SUCCESS);
30 | }
31 |
32 |
--------------------------------------------------------------------------------
/amiga_sw/rtg/P96CardStruct.i:
--------------------------------------------------------------------------------
1 | ;
2 | ; WWW.FPGAArcade.COM
3 | ;
4 | ; REPLAY Retro Gaming Platform
5 | ; No Emulation No Compromise
6 | ;
7 | ; Replay.card - P96 RTG driver for the REPLAY Amiga core
8 | ; Copyright (C) FPGAArcade community
9 | ;
10 | ; Contributors : Jakub Bednarski, Mike Johnson, Jim Drew, Erik Hemming, Nicolas Hamel
11 | ;
12 | ; This software is licensed under LPGLv2.1 ; see LICENSE file
13 | ;
14 | ;
15 |
16 | CARD_FLAGS = $22
17 | CARD_EXECBASE = $24
18 | CARD_EXPANSIONBASE = $28
19 | CARD_SEGMENTLIST = $2C
20 | CARD_NAME = $30
21 | CARD_INTUITIONBASE = $34
22 | CARD_SIZEOF = $38
23 |
24 |
--------------------------------------------------------------------------------
/rtl/chameleonv2/chameleonv2.qip:
--------------------------------------------------------------------------------
1 | set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) chameleon2_io_a.vhd]
2 | set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) chameleon2_io_e.vhd]
3 | set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) chameleon2_io_ps2iec.vhd]
4 | set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) chameleon2_io_shiftreg.vhd]
5 | set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) chameleon2_toplevel.vhd]
6 | set_global_assignment -name QIP_FILE [file join $::quartus(qip_path) ../chameleon/chameleon.qip]
7 |
8 |
--------------------------------------------------------------------------------
/rtl/io/i_sync.v:
--------------------------------------------------------------------------------
1 | /* i_sync.v */
2 | /* input synchronizer */
3 |
4 |
5 | module i_sync #(
6 | parameter DW = 1, // signal width
7 | parameter RS = 1'b0 // power up state
8 | )(
9 | // system
10 | input wire clk,
11 | // input
12 | input wire [ DW-1:0] i,
13 | // output
14 | output wire [ DW-1:0] o
15 | );
16 |
17 |
18 | reg [ DW-1:0] sync_0 = {DW{RS}};
19 | reg [ DW-1:0] sync_1 = {DW{RS}};
20 |
21 |
22 | always @ (posedge clk) begin
23 | sync_0 <= #1 i;
24 | sync_1 <= #1 sync_0;
25 | end
26 |
27 |
28 | assign o = sync_1;
29 |
30 |
31 | endmodule
32 |
33 |
--------------------------------------------------------------------------------
/rtl/host/host.qip:
--------------------------------------------------------------------------------
1 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) hostcache.v]
2 | set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) cfide.vhd]
3 | set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) 832_bridge.vhd]
4 | set_global_assignment -name QIP_FILE [file join $::quartus(qip_path) ../../EightThirtyTwo/RTL/eightthirtytwo.qip]
5 | set_global_assignment -name QIP_FILE [file join $::quartus(qip_path) ../../EightThirtyTwo/RTL/debug_bridge_jtag.qip]
6 | set_global_assignment -name VHDL_FILE [file join $::quartus(qip_path) ../../fw/ctrl_boot_832/OSDBoot_832_ROM.vhd]
7 |
8 |
--------------------------------------------------------------------------------
/doc/amiga/ahi/Aros_Developer_AHIDrivers - Wikibooks, open books for an open world_files/index(2).php:
--------------------------------------------------------------------------------
1 | (function(mw, $) {
2 | window.add_toolbox_link = function(action, name, id) {
3 | var $tools = $('#p-tb ul');
4 | if ( !$tools.length ) return;
5 | if (typeof action === "string") {
6 | $tools.append('' + name + '');
7 | } else if (typeof action === "function") {
8 | $('' + name + '').appendTo($tools).click(action);
9 | }
10 | };
11 | mw.hook('wikibooks.panels.tools').fire(mw, $);
12 | })(mediaWiki, jQuery);
--------------------------------------------------------------------------------
/fw/ctrl_832/fpga.h:
--------------------------------------------------------------------------------
1 | #ifndef FPGA_H
2 | #define FPGA_H
3 |
4 | #include "rafile.h"
5 |
6 | void ShiftFpga(unsigned char data);
7 | unsigned char ConfigureFpga(void);
8 | void SendFileV2(RAFile* file, unsigned char* key, int keysize, int address, int size);
9 | void SendFileEncrypted(RAFile *file,unsigned char *key,int keysize);
10 | char BootPrint(const char *text);
11 | char PrepareBootUpload(unsigned char base, unsigned char size);
12 | void BootExit(void);
13 | void ClearMemory(unsigned long base, unsigned long size);
14 | unsigned char GetFPGAStatus(void);
15 | void fpga_init();
16 |
17 | extern int checksum_pre;
18 |
19 | #endif
20 |
21 |
--------------------------------------------------------------------------------
/doc/amiga/ahi/Aros_Developer_AHIDrivers - Wikibooks, open books for an open world_files/index(7).php:
--------------------------------------------------------------------------------
1 | jQuery( function() {
2 | var pagename = mw.config.get( 'wgPageName' );
3 | // Main Page
4 | if ( pagename == 'Main_Page' || pagename == 'Talk:Main_Page' ) {
5 | $('#ca-nstab-main a').text( 'Main Page' );
6 | // Wikijunior
7 | } else if ( pagename == 'Wikijunior' || pagename == 'Talk:Wikijunior' ) {
8 | $('#ca-nstab-main a').text( 'Wikijunior' );
9 | // Cookbook:Table of Contents
10 | } else if ( pagename == 'Cookbook:Table_of_Contents' || pagename == 'Cookbook_talk:Table_of_Contents' ) {
11 | $('#ca-nstab-cookbook a').text( 'Cookbook' );
12 | }
13 | });
--------------------------------------------------------------------------------
/fw/testbed/uart.c:
--------------------------------------------------------------------------------
1 | #include "hardware.h"
2 |
3 | int putchar(int c)
4 | {
5 | RS232(c);
6 | return(c);
7 | }
8 |
9 |
10 | int puts(const char *msg)
11 | {
12 | int c;
13 | int result=0;
14 | // Because we haven't implemented loadb from ROM yet, we can't use *++.
15 | // Therefore we read the source data in 32-bit chunks and shift-and-split accordingly.
16 | int *s2=(int*)msg;
17 |
18 | do
19 | {
20 | int i;
21 | int cs=*s2++;
22 | for(i=0;i<4;++i)
23 | {
24 | c=(cs>>24)&0xff;
25 | cs<<=8;
26 | if(c==0)
27 | return(result);
28 | putchar(c);
29 | ++result;
30 | }
31 | }
32 | while(c);
33 | return(result);
34 | }
35 |
36 |
--------------------------------------------------------------------------------
/fw/ctrl_832/uart.c:
--------------------------------------------------------------------------------
1 | #include "hardware.h"
2 |
3 | int putchar(int c)
4 | {
5 | RS232(c);
6 | return(c);
7 | }
8 |
9 |
10 | int puts(const char *msg)
11 | {
12 | int c;
13 | int result=0;
14 | // Because we haven't implemented loadb from ROM yet, we can't use *++.
15 | // Therefore we read the source data in 32-bit chunks and shift-and-split accordingly.
16 | int *s2=(int*)msg;
17 |
18 | do
19 | {
20 | int i;
21 | int cs=*s2++;
22 | for(i=0;i<4;++i)
23 | {
24 | c=(cs>>24)&0xff;
25 | cs<<=8;
26 | if(c==0)
27 | return(result);
28 | putchar(c);
29 | ++result;
30 | }
31 | }
32 | while(c);
33 | return(result);
34 | }
35 |
36 |
--------------------------------------------------------------------------------
/fw/dhrystone_832/uart.c:
--------------------------------------------------------------------------------
1 | #include "hardware.h"
2 |
3 | int putchar(int c)
4 | {
5 | RS232(c);
6 | return(c);
7 | }
8 |
9 |
10 | int puts(const char *msg)
11 | {
12 | int c;
13 | int result=0;
14 | // Because we haven't implemented loadb from ROM yet, we can't use *++.
15 | // Therefore we read the source data in 32-bit chunks and shift-and-split accordingly.
16 | int *s2=(int*)msg;
17 |
18 | do
19 | {
20 | int i;
21 | int cs=*s2++;
22 | for(i=0;i<4;++i)
23 | {
24 | c=(cs>>24)&0xff;
25 | cs<<=8;
26 | if(c==0)
27 | return(result);
28 | putchar(c);
29 | ++result;
30 | }
31 | }
32 | while(c);
33 | return(result);
34 | }
35 |
36 |
--------------------------------------------------------------------------------
/doc/amiga/ahi/Aros_Developer_AHIDrivers - Wikibooks, open books for an open world_files/index(10).php:
--------------------------------------------------------------------------------
1 | /**
2 | * Hide prefix in category
3 | *
4 | * @source: http://www.mediawiki.org/wiki/Snippets/Hide_prefix_in_category
5 | * @rev: 2
6 | * @author: Krinkle
7 | */
8 |
9 | mw.hook('wikipage.content').add(function($content) {
10 | var prefix = $content.find( '#mw-cat-hideprefix' ).text();
11 | if ( $.trim( prefix ) === '' ) {
12 | prefix = mw.config.get( 'wgTitle' ) + '/';
13 | }
14 | $content.find( '#mw-pages' ).add( '#mw-subcategories' ).find( 'a' ).text( function( i, val ) {
15 | return val.replace( new RegExp( '^' + $.escapeRE( prefix ) ), '' );
16 | });
17 | });
--------------------------------------------------------------------------------
/rtl/de10-lite/amiga_clk_altera.ppf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/rtl/de0_nano/amiga_clk_altera.ppf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/rtl/chameleonv1/amiga_clk_altera.ppf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/rtl/chameleonv2/amiga_clk_altera.ppf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/fw/ctrl_832/interrupts.c:
--------------------------------------------------------------------------------
1 | #include "uart.h"
2 | #include "interrupts.h"
3 |
4 | static void dummy_handler()
5 | {
6 | GetInterrupts();
7 | }
8 |
9 |
10 | void SetIntHandler(void(*handler)())
11 | {
12 | HW_INTERRUPT(REG_INTERRUPT_CTRL)=0;
13 | *(void **)13=(void *)handler;
14 | }
15 |
16 | __constructor(100.interrupts) void intconstructor()
17 | {
18 | SetIntHandler(dummy_handler);
19 | }
20 |
21 |
22 | volatile int GetInterrupts()
23 | {
24 | return(HW_INTERRUPT(REG_INTERRUPT_CTRL));
25 | }
26 |
27 |
28 | void EnableInterrupts()
29 | {
30 | HW_INTERRUPT(REG_INTERRUPT_CTRL)=1;
31 | }
32 |
33 |
34 | void DisableInterrupts()
35 | {
36 | HW_INTERRUPT(REG_INTERRUPT_CTRL)=0;
37 | }
38 |
39 |
--------------------------------------------------------------------------------
/fw/ctrl_832/errors.c:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | #include "errors.h"
4 |
5 | void ClearError(int category)
6 | {
7 | int i,a,b;
8 | ErrorFatal=0;
9 | if(category!=ERROR_ALL)
10 | {
11 | ErrorMask&=~(1<
2 |
3 | #include "errors.h"
4 |
5 | void ClearError(int category)
6 | {
7 | int i,a,b;
8 | ErrorFatal=0;
9 | if(category!=ERROR_ALL)
10 | {
11 | ErrorMask&=~(1<>24)&0xff;
16 | result|=(i>>8)&0xff00;
17 | result|=(i<<8)&0xff0000;
18 | result|=(i<<24)&0xff000000;
19 | return(result);
20 | #endif
21 | }
22 |
23 | unsigned int SwapBB(unsigned int i)
24 | {
25 | int result=(i>>8)&0xff;
26 | result|=(i<<8)&0xff00;
27 | return(result);
28 | }
29 |
30 | unsigned long SwapWW(unsigned long i)
31 | {
32 | int result=(i>>16)&0xffff;
33 | result|=(i<<16)&0xffff0000;
34 | return(result);
35 | }
36 |
--------------------------------------------------------------------------------
/fw/testbed/swap.c:
--------------------------------------------------------------------------------
1 | unsigned long SwapBBBB(unsigned long i)
2 | {
3 | #ifdef _M68K
4 | asm volatile
5 | (
6 | "rol.w #8,%0\n\t"
7 | "swap %0\n\t"
8 | "rol.w #8,%0\n\t"
9 | : "=r" (i) /* out */
10 | : "r" (i)
11 | : /* no clobber */
12 | );
13 | return i;
14 | #else
15 | int result=(i>>24)&0xff;
16 | result|=(i>>8)&0xff00;
17 | result|=(i<<8)&0xff0000;
18 | result|=(i<<24)&0xff000000;
19 | return(result);
20 | #endif
21 | }
22 |
23 | unsigned int SwapBB(unsigned int i)
24 | {
25 | int result=(i>>8)&0xff;
26 | result|=(i<<8)&0xff00;
27 | return(result);
28 | }
29 |
30 | unsigned long SwapWW(unsigned long i)
31 | {
32 | int result=(i>>16)&0xffff;
33 | result|=(i<<16)&0xffff0000;
34 | return(result);
35 | }
36 |
--------------------------------------------------------------------------------
/amiga_sw/WheelDriver/newmouse.h:
--------------------------------------------------------------------------------
1 | /*
2 | * Include file for the NewMouse standard way of handling wheeled mice.
3 | *
4 | * Copyright (c) 1999 by Alessandro Zummo . All Rights Reserved.
5 | */
6 |
7 | #ifndef NEWMOUSE_H
8 | #define NEWMOUSE_H
9 |
10 | #define NEWMOUSE_VERSION 1
11 |
12 | #define IECLASS_NEWMOUSE (0x16) /* IECLASS_MAX + 1 as of V40 */
13 |
14 | /* These are issued both under IECLASS_NEWMOUSE and IECLASS_RAWKEY */
15 | /* by the NewMouse driver */
16 |
17 | #define NM_WHEEL_UP (0x7A)
18 | #define NM_WHEEL_DOWN (0x7B)
19 | #define NM_WHEEL_LEFT (0x7C)
20 | #define NM_WHEEL_RIGHT (0x7D)
21 |
22 | #define NM_BUTTON_FOURTH (0x7E)
23 |
24 |
25 | #endif /* NEWMOUSE_H */
26 |
27 |
--------------------------------------------------------------------------------
/fw/ctrl_boot_832/main.c:
--------------------------------------------------------------------------------
1 |
2 | #include "fpga.h"
3 |
4 | #if 0
5 | int puts(const char *msg)
6 | {
7 | int c;
8 | // int result=0;
9 | // Because we haven't implemented loadb from ROM yet, we can't use *++.
10 | // Therefore we read the source data in 32-bit chunks and shift-and-split accordingly.
11 | int *s2=(int*)msg;
12 |
13 | do
14 | {
15 | int i;
16 | int cs=*s2++;
17 | for(i=0;i<4;++i)
18 | {
19 | c=(cs>>24)&0xff;
20 | cs<<=8;
21 | if(c==0)
22 | return;//(result);
23 | putchar(c);
24 | // ++result;
25 | }
26 | }
27 | while(c);
28 | // return(result);
29 | }
30 | #endif
31 |
32 | int main(int argc,char**argv)
33 | {
34 | puts("Hello, world!\n");
35 | while(1)
36 | ;
37 | }
38 |
39 |
40 |
--------------------------------------------------------------------------------
/fw/testbed/interrupts.c:
--------------------------------------------------------------------------------
1 | #include "uart.h"
2 | #include "interrupts.h"
3 |
4 | static void dummy_handler()
5 | {
6 | GetInterrupts();
7 | }
8 |
9 |
10 | void SetIntHandler(void(*handler)())
11 | {
12 | HW_INTERRUPT(REG_INTERRUPT_CTRL)=0;
13 | *(void **)13=(void *)handler;
14 | puts("Set handler\n");
15 | }
16 |
17 | __constructor(100.interrupts) void intconstructor()
18 | {
19 | puts("In interrupt constructor\n");
20 | SetIntHandler(dummy_handler);
21 | }
22 |
23 |
24 | volatile int GetInterrupts()
25 | {
26 | return(HW_INTERRUPT(REG_INTERRUPT_CTRL));
27 | }
28 |
29 |
30 | void EnableInterrupts()
31 | {
32 | HW_INTERRUPT(REG_INTERRUPT_CTRL)=1;
33 | }
34 |
35 |
36 | void DisableInterrupts()
37 | {
38 | HW_INTERRUPT(REG_INTERRUPT_CTRL)=0;
39 | }
40 |
41 |
--------------------------------------------------------------------------------
/fpga/de0_nano/Makefile:
--------------------------------------------------------------------------------
1 | # MINIMIG-DE0_NANO
2 | # fpga makefile
3 | # 2012, rok.krajnc@gmail.com
4 | # 2015, Stefan Kristiansson
5 |
6 |
7 | ### programs ###
8 | MAP=quartus_map
9 | FIT=quartus_fit
10 | ASM=quartus_asm
11 |
12 |
13 | ### project ###
14 | PROJECT=minimig_de0_nano
15 |
16 | ### build rules ###
17 |
18 | # all
19 | all:
20 | @echo Making FPGA programming files ...
21 | @make map
22 | @make fit
23 | @make asm
24 |
25 | map:
26 | @echo Running mapper ...
27 | @$(MAP) $(PROJECT)
28 |
29 | fit:
30 | @echo Running fitter ...
31 | @$(FIT) $(PROJECT)
32 |
33 | asm:
34 | @echo Running assembler ...
35 | @$(ASM) $(PROJECT)
36 |
37 |
38 | # clean
39 | clean:
40 | @echo clean
41 | @rm -rf ./out/
42 | @rm -rf ./db/
43 | @rm -rf ./incremental_db/
44 |
--------------------------------------------------------------------------------
/fw/ctrl_832/printf.c:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 |
4 | char buf[256];
5 |
6 | #define TX ((volatile char *)0xda8001)
7 |
8 | int printf(const char *fmt,...)
9 | {
10 | int i;
11 |
12 | va_list ap;
13 | va_start(ap, fmt);
14 | int num = vsnprintf(buf, 256, fmt, ap);
15 | va_end(ap);
16 |
17 | for(i=0;i='A')&&(c<='Z')) {
44 | return c + 'a' - 'A';
45 | } else {
46 | return c;
47 | }
48 | }
--------------------------------------------------------------------------------
/rtl/minimig/paula_audio_volume.v:
--------------------------------------------------------------------------------
1 | //this module multiplies a signed 8 bit sample with an unsigned 6 bit volume setting
2 | //it produces a 14bit signed result
3 |
4 |
5 | module paula_audio_volume
6 | (
7 | input [7:0] sample, //signed sample input
8 | input [5:0] volume, //unsigned volume input
9 | output [13:0] out //signed product out
10 | );
11 |
12 | wire [13:0] sesample; //sign extended sample
13 | wire [13:0] sevolume; //sign extended volume
14 |
15 | //sign extend input parameters
16 | assign sesample[13:0] = {{6{sample[7]}},sample[7:0]};
17 | assign sevolume[13:0] = {8'b00000000,volume[5:0]};
18 |
19 | //multiply, synthesizer should infer multiplier here
20 | assign out[13:0] = {sesample[13:0] * sevolume[13:0]};
21 |
22 |
23 | endmodule
24 |
25 |
--------------------------------------------------------------------------------
/fw/ctrl_boot_832/mkchecksum.c:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | #include "checksum.h"
4 |
5 | unsigned char sector_buffer[512];
6 |
7 | int main(int argc,char **argv)
8 | {
9 | if(argc==3)
10 | {
11 | int l;
12 | FILE *f=fopen(argv[1],"rb");
13 | FILE *f2=fopen(argv[2],"wb");
14 | if(f && f2)
15 | {
16 | while(l=fread(sector_buffer,1,512,f))
17 | {
18 | if(l)
19 | {
20 | unsigned int cs=checksum(sector_buffer,l);
21 | unsigned char out[4];
22 | out[0]=(cs>>24)&255;
23 | out[1]=(cs>>16)&255;
24 | out[2]=(cs>>8)&255;
25 | out[3]=cs&255;
26 | printf("%08x\n",cs);
27 | fwrite(out,4,1,f2);
28 | }
29 | }
30 | }
31 | fclose(f2);
32 | fclose(f);
33 | }
34 | else
35 | printf("Usage: mkchecksum infile outfile\n");
36 | return(0);
37 | }
38 |
--------------------------------------------------------------------------------
/doc/amiga/ahi/Aros_Developer_AHIDrivers - Wikibooks, open books for an open world_files/index(8).php:
--------------------------------------------------------------------------------
1 | // Move icons and navigation to top of content area, which should place them right below the page title
2 |
3 | mw.hook('wikipage.content').add(function($where) {
4 | var $content = mw.util.$content, $what = $where.find('.topicon').css('display', 'inline');
5 |
6 | if ( $what.length ) {
7 | $content.find(':header').eq(0).wrapInner('').append( $('').append($what) );
8 | }
9 |
10 | $what = $where.find('#top-navigation').remove().slice(0,1).addClass('subpages');
11 | if ( $what.length ) { $content.find('.subpages').eq(0).replaceWith($what); }
12 |
13 | $what = $where.find('#bottom-navigation').remove().slice(0,1);
14 | if ( $what.length ) { $where.append($what); }
15 | });
--------------------------------------------------------------------------------
/fw/ctrl_832/interrupts.h:
--------------------------------------------------------------------------------
1 | #ifndef INTERRUPTS_H
2 | #define INTERRUPTS_H
3 |
4 | #define INTERRUPTBASE 0x0fffffa0
5 | #define HW_INTERRUPT(x) *(volatile unsigned int *)(INTERRUPTBASE+x)
6 |
7 | // Interrupt control register
8 | // Write a '1' to the low bit to enable interrupts, '0' to disable.
9 | // Reading current returns nothing but will return a set bit for each
10 | // interrupt that has been triggered since the last read, if we end up with
11 | // more than one interrupt, and also clears the register.
12 |
13 | #define REG_INTERRUPT_CTRL 0x0
14 |
15 | #ifdef __cplusplus
16 | extern "C" {
17 | #endif
18 |
19 | void SetIntHandler(void(*handler)());
20 | void EnableInterrupts();
21 | void DisableInterrupts();
22 | volatile int GetInterrupts();
23 |
24 | #ifdef __cplusplus
25 | }
26 | #endif
27 |
28 | #endif
29 |
30 |
--------------------------------------------------------------------------------
/fw/testbed/interrupts.h:
--------------------------------------------------------------------------------
1 | #ifndef INTERRUPTS_H
2 | #define INTERRUPTS_H
3 |
4 | #define INTERRUPTBASE 0x0fffffa0
5 | #define HW_INTERRUPT(x) *(volatile unsigned int *)(INTERRUPTBASE+x)
6 |
7 | // Interrupt control register
8 | // Write a '1' to the low bit to enable interrupts, '0' to disable.
9 | // Reading current returns nothing but will return a set bit for each
10 | // interrupt that has been triggered since the last read, if we end up with
11 | // more than one interrupt, and also clears the register.
12 |
13 | #define REG_INTERRUPT_CTRL 0x0
14 |
15 | #ifdef __cplusplus
16 | extern "C" {
17 | #endif
18 |
19 | void SetIntHandler(void(*handler)());
20 | void EnableInterrupts();
21 | void DisableInterrupts();
22 | volatile int GetInterrupts();
23 |
24 | #ifdef __cplusplus
25 | }
26 | #endif
27 |
28 | #endif
29 |
30 |
--------------------------------------------------------------------------------
/fpga/mist/Makefile:
--------------------------------------------------------------------------------
1 | # MINIMIG-DE1
2 | # fpga makefile
3 | # 2012, rok.krajnc@gmail.com
4 |
5 |
6 | ### programs ###
7 | MAP=quartus_map
8 | FIT=quartus_fit
9 | ASM=quartus_asm
10 | PGM=quartus_pgm
11 |
12 | ### project ###
13 | PROJECT=minimig_mist
14 |
15 |
16 | ### build rules ###
17 |
18 | # all
19 | all:
20 | @echo Making FPGA programming files ...
21 | @make map
22 | @make fit
23 | @make asm
24 |
25 | map:
26 | @echo Running mapper ...
27 | @$(MAP) $(PROJECT)
28 |
29 | fit:
30 | @echo Running fitter ...
31 | @$(FIT) $(PROJECT)
32 |
33 | asm:
34 | @echo Running assembler ...
35 | @$(ASM) $(PROJECT)
36 |
37 | run:
38 | @$(PGM) -c USB-Blaster -m jtag -o "p;./out/$(PROJECT).sof"
39 |
40 | # clean
41 | clean:
42 | @echo clean
43 | @rm -rf ./out/
44 | @rm -rf ./db/
45 | @rm -rf ./incremental_db/
46 |
47 |
--------------------------------------------------------------------------------
/amiga_sw/WavPlay/README:
--------------------------------------------------------------------------------
1 |
2 | Experimental 16-bit WAV player for Minimig.
3 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4 | By Alastair M. Robinson
5 |
6 |
7 | WavPlay can be run from the shell or from workbench.
8 | There is no user-interface - to play a file either
9 | type
10 | > wavplay path:to/file.wav
11 | on the shell, or set wavplay as the Default Tool in a Wave file's
12 | icon, and then double-click the Wav file, or click one on a Wav
13 | file's icon, hold shift and double-click on WavPlay.
14 |
15 | WavPlay will detect and terminate an already-running instance, so
16 | you can stop playback by running WavPlay with no arguments.
17 |
18 | Only one sample format is currently supported, namely 44.1Khz 16-bit
19 | stereo Little-endian. Don't attempt to play any other type of Wav file
20 | - your ears will thank you!
21 |
22 |
--------------------------------------------------------------------------------
/doc/avnet-spartan3/Release Notes.txt:
--------------------------------------------------------------------------------
1 | # Spartan-3 Evaluation Kit
2 |
3 | # Release Notes - 2/26/2004
4 |
5 | If using the Spartan-3 Evaluation board in a PCI slot, remove the fuse labeled "F1"
6 | before applying power to the PC. The purpose of the fuse is to act as a high-current
7 | shunt to disconnect the on-board voltage regulator from the 3.3V rail when the PCI
8 | slot is powering the 3.3V rail.
9 |
10 | Spartan-3 1500 boards -
11 | No additional I/O are connected on the XC3S1500 device so references to the 400 device
12 | apply. The UCF file is the same for both the 400 and 1500 devices. The only difference
13 | between a 400 and a 1500 board has to do with the configuration PROMs. The 1500 board
14 | requires two serial platform flash devices, a XCF04S and a XCF01S (the 400 only requires
15 | one XCF02S device).
--------------------------------------------------------------------------------
/rtl/sdram/tpram_inf_be_512x16.v:
--------------------------------------------------------------------------------
1 | // tpram_inf_be_512x16.v
2 | // 2013, rok.krajnc@gmail.com
3 | // inferrable two-port memory with byte-enables
4 |
5 | module tpram_inf_be_512x16 (
6 | input wire clock,
7 | input wire [ 9-1:0] wraddress,
8 | input wire wren,
9 | input wire [ 2-1:0] byteena_a,
10 | input wire [ 16-1:0] data,
11 | input wire [ 9-1:0] rdaddress,
12 | output reg [ 16-1:0] q
13 | );
14 |
15 | // memory
16 | reg [8-1:0] mem0 [0:512-1];
17 | reg [8-1:0] mem1 [0:512-1];
18 |
19 | // read / write
20 | always @ (posedge clock) begin
21 | if (wren && byteena_a[0]) mem0[wraddress] <= #1 data[ 8-1:0];
22 | if (wren && byteena_a[1]) mem1[wraddress] <= #1 data[16-1:8];
23 | q[ 8-1:0] <= #1 mem0[rdaddress];
24 | q[16-1:8] <= #1 mem1[rdaddress];
25 | end
26 |
27 | endmodule
28 |
29 |
--------------------------------------------------------------------------------
/fw/ctrl_832/spi.h:
--------------------------------------------------------------------------------
1 | #ifndef SPI_H
2 | #define SPI_H
3 |
4 | #if 0
5 | volatile void EnableCard();
6 | volatile void DisableCard();
7 | volatile void EnableFpga();
8 | volatile void DisableFpga();
9 | volatile void EnableOsd();
10 | volatile void DisableOsd();
11 | volatile void EnableDMode();
12 | volatile void DisableDMode();
13 |
14 | void spi_osd_cmd_cont(unsigned char cmd);
15 | void spi_osd_cmd(unsigned char cmd);
16 | void spi_osd_cmd8_cont(unsigned char cmd, unsigned char parm);
17 | void spi_osd_cmd8(unsigned char cmd, unsigned char parm);
18 | void spi_osd_cmd32_cont(unsigned char cmd, unsigned long parm);
19 | void spi_osd_cmd32(unsigned char cmd, unsigned long parm);
20 | void spi_osd_cmd32le_cont(unsigned char cmd, unsigned long parm);
21 | void spi_osd_cmd32le(unsigned char cmd, unsigned long parm);
22 | #endif
23 |
24 | #endif
25 |
26 |
--------------------------------------------------------------------------------
/fw/testbed/spi.h:
--------------------------------------------------------------------------------
1 | #ifndef SPI_H
2 | #define SPI_H
3 |
4 | #if 0
5 | volatile void EnableCard();
6 | volatile void DisableCard();
7 | volatile void EnableFpga();
8 | volatile void DisableFpga();
9 | volatile void EnableOsd();
10 | volatile void DisableOsd();
11 | volatile void EnableDMode();
12 | volatile void DisableDMode();
13 |
14 | void spi_osd_cmd_cont(unsigned char cmd);
15 | void spi_osd_cmd(unsigned char cmd);
16 | void spi_osd_cmd8_cont(unsigned char cmd, unsigned char parm);
17 | void spi_osd_cmd8(unsigned char cmd, unsigned char parm);
18 | void spi_osd_cmd32_cont(unsigned char cmd, unsigned long parm);
19 | void spi_osd_cmd32(unsigned char cmd, unsigned long parm);
20 | void spi_osd_cmd32le_cont(unsigned char cmd, unsigned long parm);
21 | void spi_osd_cmd32le(unsigned char cmd, unsigned long parm);
22 | #endif
23 |
24 | #endif
25 |
26 |
--------------------------------------------------------------------------------
/fw/ctrl_832/firmware.h:
--------------------------------------------------------------------------------
1 | typedef struct
2 | {
3 | unsigned long flags;
4 | unsigned long base;
5 | unsigned long size;
6 | unsigned long crc;
7 | } romTYPE;
8 |
9 | typedef struct
10 | {
11 | unsigned char id[8];
12 | unsigned char version[8];
13 | romTYPE rom;
14 | unsigned long padding[119];
15 | unsigned long crc;
16 | } UPGRADE;
17 |
18 | #define NVCONFIG 0x3FFFC
19 | #define NVCONFIG_SPIMODE 0x00000001
20 | #define SPIMODE_NORMAL 0
21 | #define SPIMODE_FAST 1
22 |
23 | #define true -1
24 | #define false 0
25 |
26 | unsigned long CalculateCRC32(unsigned long crc, unsigned char *pBuffer, unsigned long nSize);
27 | unsigned char CheckFirmware(fileTYPE *file, char *name);
28 | unsigned long WriteFirmware(fileTYPE *file);
29 | void SetSPIMode(unsigned long mode);
30 | unsigned long GetSPIMode(void);
31 |
32 |
--------------------------------------------------------------------------------
/rtl/sdram/dpram_inf_256x32.v:
--------------------------------------------------------------------------------
1 | // dpram_inf_256x32.v
2 | // 2015, rok.krajnc@gmail.com
3 | // inferrable dual-port memory
4 |
5 | module dpram_inf_256x32 (
6 | input wire clock,
7 | input wire wren_a,
8 | input wire [ 8-1:0] address_a,
9 | input wire [ 32-1:0] data_a,
10 | output reg [ 32-1:0] q_a,
11 | input wire wren_b,
12 | input wire [ 8-1:0] address_b,
13 | input wire [ 32-1:0] data_b,
14 | output reg [ 32-1:0] q_b
15 | );
16 |
17 | // memory
18 | reg [32-1:0] mem [0:256-1];
19 |
20 | // port a
21 | always @ (posedge clock) begin
22 | if (wren_a) mem[address_a] <= #1 data_a;
23 | q_a <= #1 mem[address_a];
24 | end
25 |
26 | // port b
27 | always @ (posedge clock) begin
28 | if (wren_b) mem[address_b] <= #1 data_b;
29 | q_b <= #1 mem[address_b];
30 | end
31 |
32 | endmodule
33 |
34 |
--------------------------------------------------------------------------------
/amiga_sw/WavPlay/wav.h.info:
--------------------------------------------------------------------------------
1 | #ifndef WHEELDRIVER_H
2 | #define WHEELDRIVER_H
3 |
4 | #include
5 | #include
6 | #include
7 |
8 | struct WheelDriverContext
9 | {
10 | void (*Dispose)(struct WheelDriverContext *wdc);
11 | BOOL (*Handle)(struct WheelDriverContext *wdc,unsigned long Signals);
12 | void (*Enable)(struct WheelDriverContext *wdc);
13 | void (*Disable)(struct WheelDriverContext *wdc);
14 | void *Server;
15 | BOOL Active;
16 | long SigBit;
17 | long Signals;
18 | struct Task *SigTask;
19 | struct MsgPort *Port;
20 | long WheelCounter;
21 | long ButtonStatus;
22 | long PreviousButtons;
23 | struct IOStdReq *IOReq;
24 | struct InputEvent Event;
25 | struct Interrupt Interrupt;
26 | };
27 |
28 | struct WheelDriverContext *WheelDriver_Create();
29 |
30 | #endif
31 |
32 |
--------------------------------------------------------------------------------
/doc/amiga/ahi/Aros_Developer_AHIDrivers - Wikibooks, open books for an open world_files/index(11).php:
--------------------------------------------------------------------------------
1 | /*
2 | * Load CSS and JS files temporarily through URL.
3 | * &use=File1.css|File2.css|File3.js
4 | */
5 | (function () {
6 | var files = mw.util.getParamValue( 'use' ), user, FileRE, what, u, f, l;
7 | if ( !files ) {
8 | return;
9 | }
10 | files = files.split('|');
11 | user = $.escapeRE( mw.config.get( 'wgUserName', '' ) );
12 | FileRE = new RegExp( '^(?:MediaWiki:' + ( user ? '|User:' + user + '/' : '' ) + ').*\\.(js|css)$' );
13 | for ( u = 0, f = $.trim( files[u] ), l = files.length; u < l; f = $.trim( files[++u] ) ) {
14 | what = FileRE.exec(f);
15 | if ( what == null ) {
16 | continue;
17 | }
18 | switch ( what[1] ) {
19 | case 'js': importScript(f); break;
20 | case 'css': importStylesheet(f); break;
21 | }
22 | }
23 | }());
--------------------------------------------------------------------------------
/fw/ctrl_832/bincue.h:
--------------------------------------------------------------------------------
1 | #ifndef BINCUE_H
2 | #define BINCUE_H
3 |
4 | #include "rafile.h"
5 | #include "audiotrack.h"
6 |
7 | enum cdimagetype {CD_INVALID,CD_BINARY,CD_WAVE};
8 | enum cderror {CD_OK,CD_FILENOTFOUND,CD_TRACKNOTFOUND};
9 |
10 | struct cdimage
11 | {
12 | enum cderror error;
13 | int tracks;
14 | int audiotracks;
15 | int currenttrack;
16 | int offset;
17 | int length; /* 0 for standalone WAV files. */
18 | enum cdimagetype type;
19 | RAFile cuefile;
20 | struct audiotrack audio;
21 | char linebuffer[512];
22 | char filename[261];
23 | };
24 |
25 | int cd_setcuefile(struct cdimage *cd,const char *filename);
26 | int cd_findtrack(struct cdimage *cd,int track);
27 | int cd_cueaudio(struct cdimage *cd,int track);
28 | int cd_playaudio(struct cdimage *cd,int track);
29 | void cd_continueaudio(struct cdimage *cd);
30 |
31 | #endif
32 |
33 |
--------------------------------------------------------------------------------
/amiga_sw/WheelDriver/WheelDriver.h:
--------------------------------------------------------------------------------
1 | #ifndef WHEELDRIVER_H
2 | #define WHEELDRIVER_H
3 |
4 | #include
5 | #include
6 | #include
7 |
8 | struct WheelDriverContext
9 | {
10 | void (*Dispose)(struct WheelDriverContext *wdc);
11 | BOOL (*Handle)(struct WheelDriverContext *wdc,unsigned long Signals);
12 | void (*Enable)(struct WheelDriverContext *wdc);
13 | void (*Disable)(struct WheelDriverContext *wdc);
14 | void *Server;
15 | BOOL Active;
16 | long SigBit;
17 | long Signals;
18 | struct Task *SigTask;
19 | struct MsgPort *Port;
20 | long WheelCounter;
21 | long ButtonStatus;
22 | long PreviousButtons;
23 | struct IOStdReq *IOReq;
24 | struct InputEvent Event;
25 | struct Interrupt Interrupt;
26 | };
27 |
28 | struct WheelDriverContext *WheelDriver_Create();
29 |
30 | #endif
31 |
32 |
--------------------------------------------------------------------------------
/fw/ctrl_832/audiotrack.h:
--------------------------------------------------------------------------------
1 | #ifndef AUDIOTRACK_H
2 | #define AUDIOTRACK_H
3 |
4 | #include "hardware.h"
5 | #include "rafile.h"
6 |
7 | #define AUDIOSEEK_STEP 2048
8 |
9 | struct audiotrack
10 | {
11 | RAFile file;
12 | int currentbuffer;
13 | int remain;
14 | int buffersize;
15 | int start;
16 | int length;
17 | unsigned char *buffer;
18 | };
19 |
20 |
21 | int audiotrack_busy(struct audiotrack *track);
22 | void audiotrack_cue(struct audiotrack *track);
23 | void audiotrack_play(struct audiotrack *track);
24 | void audiotrack_fastforward(struct audiotrack *track);
25 | void audiotrack_rewind(struct audiotrack *track);
26 | void audiotrack_stop(struct audiotrack *track);
27 | void audiotrack_fill(struct audiotrack *track);
28 | int audiotrack_init(struct audiotrack *track, const char *filename,int offset,int length,unsigned char *buffer);
29 |
30 | #endif
31 |
32 |
--------------------------------------------------------------------------------
/fw/ctrl_832/drivesounds.h:
--------------------------------------------------------------------------------
1 | #ifndef DRIVESOUNDS_H
2 | #define DRIVESOUNDS_H
3 |
4 | enum DriveSound_Type {
5 | DRIVESOUND_INSERT=0,DRIVESOUND_EJECT,DRIVESOUND_MOTORSTART,DRIVESOUND_MOTORLOOP,DRIVESOUND_MOTORSTOP,
6 | DRIVESOUND_STEP,DRIVESOUND_STEP2,DRIVESOUND_STEP3,DRIVESOUND_STEP4,
7 | DRIVESOUND_HDDSTEP,DRIVESOUND_HDDSTEP2,DRIVESOUND_HDDSTEP3,DRIVESOUND_HDDSTEP4
8 | };
9 | #define DRIVESOUND_COUNT (DRIVESOUND_HDDSTEP4+1)
10 |
11 | #define DRIVESOUNDS_FLOPPY 1
12 | #define DRIVESOUNDS_HDD 2
13 |
14 | void drivesounds_enable();
15 | void drivesounds_disable();
16 | void drivesounds_on();
17 | void drivesounds_off();
18 | void drivesounds_queueevent(enum DriveSound_Type type);
19 | void drivesounds_stop();
20 | void drivesounds_start();
21 | int drivesounds_fill();
22 | int drivesounds_init(const char *filename);
23 | int drivesounds_loaded();
24 |
25 | #endif
26 |
27 |
--------------------------------------------------------------------------------
/fw/testbed/audiotrack.h:
--------------------------------------------------------------------------------
1 | #ifndef AUDIOTRACK_H
2 | #define AUDIOTRACK_H
3 |
4 | #include "hardware.h"
5 | #include "rafile.h"
6 |
7 | #define AUDIOSEEK_STEP 2048
8 |
9 | struct audiotrack
10 | {
11 | RAFile file;
12 | int currentbuffer;
13 | int remain;
14 | int buffersize;
15 | int start;
16 | int length;
17 | unsigned char *buffer;
18 | };
19 |
20 |
21 | int audiotrack_busy(struct audiotrack *track);
22 | void audiotrack_cue(struct audiotrack *track);
23 | void audiotrack_play(struct audiotrack *track);
24 | void audiotrack_fastforward(struct audiotrack *track);
25 | void audiotrack_rewind(struct audiotrack *track);
26 | void audiotrack_stop(struct audiotrack *track);
27 | void audiotrack_fill(struct audiotrack *track);
28 | int audiotrack_init(struct audiotrack *track, const char *filename,int offset,int length,unsigned char *buffer);
29 |
30 | #endif
31 |
32 |
--------------------------------------------------------------------------------
/doc/amiga/aga/Mysterious Ways - How to Code the Amiga - AGA Chipset.mht:
--------------------------------------------------------------------------------
1 | Content-Type: multipart/related; start=; boundary=----------2j2qGH9q4v8wAUQ9DoGCTX
2 | Content-Location: http://www.mways.co.uk/amiga/howtocode/text/aga.php
3 | Subject: =?utf-8?Q?Mysterious=20Ways=20-=20How=20to=20Code=20the=20Amiga=20-=20AGA=20Chipset?=
4 | MIME-Version: 1.0
5 |
6 | ------------2j2qGH9q4v8wAUQ9DoGCTX
7 | Content-Disposition: inline; filename=aga.htm
8 | Content-Type: text/html; name=aga.htm
9 | Content-ID:
10 | Content-Location: http://www.mways.co.uk/amiga/howtocode/text/aga.php
11 | Content-Transfer-Encoding: 8bit
12 |
13 | MYSQL Error: Unable to query database
Too many connections
14 | ------------2j2qGH9q4v8wAUQ9DoGCTX--
15 |
--------------------------------------------------------------------------------
/amiga_sw/WheelDriver/Cx.h:
--------------------------------------------------------------------------------
1 | #ifndef CXCONTEXT_H
2 | #define CXCONTEXT_H
3 |
4 | #include
5 |
6 | struct CxContext
7 | {
8 | void (*Dispose)(struct CxContext *cx);
9 | BOOL (*Handle)(struct CxContext *cx,unsigned long signals);
10 | BOOL (*SetHotKey)(struct CxContext *cx,char *hotkey);
11 | BOOL (*SetCustom)(struct CxContext *cx,void (*rout)(CxMsg *msg,CxObj *obj));
12 | void (*ShowCallback)(void *userdata);
13 | void (*HideCallback)(void *userdata);
14 | void (*EnableCallback)(void *userdata);
15 | void (*DisableCallback)(void *userdata);
16 | void *UserData; /* Useful from within Callback functions */
17 | struct MsgPort *Port;
18 | void *Broker;
19 | void *CustomObject;
20 | void *HotKey;
21 | unsigned long Signals;
22 | };
23 |
24 | struct CxContext *CxContext_Create(char *name,char *title,char *descr);
25 |
26 | #endif
27 |
--------------------------------------------------------------------------------
/fw/ctrl_832/c64keys.h:
--------------------------------------------------------------------------------
1 | #ifndef C64KEYS_H
2 | #define C64KEYS_H
3 |
4 | #define KEYBOARDBASE 0x0fffff90
5 | #define HW_KEYBOARD(x) *(volatile unsigned short *)(KEYBOARDBASE+x)
6 |
7 | #define REG_KEYBOARD_WORD0 2
8 | #define REG_KEYBOARD_WORD1 6
9 | #define REG_KEYBOARD_WORD2 0xa
10 | #define REG_KEYBOARD_WORD3 0xe
11 |
12 | #define REG_KEYBOARD_OUT 2
13 |
14 | #define C64KEY_RINGBUFFER_SIZE 16
15 |
16 | struct c64keyboard
17 | {
18 | int active;
19 | int frame;
20 | int layer;
21 | int qualifiers;
22 | unsigned short keys[12];
23 | volatile int out_hw;
24 | volatile int out_cpu;
25 | unsigned int outbuf[C64KEY_RINGBUFFER_SIZE];
26 | };
27 |
28 | extern struct c64keyboard c64keys;
29 |
30 | void c64keyboard_init(struct c64keyboard *r);
31 | void c64keyboard_write(struct c64keyboard *r,int in);
32 | int c64keyboard_checkreset();
33 | void c64keys_inthandler();
34 |
35 | #endif
36 |
--------------------------------------------------------------------------------
/fw/ctrl_832/rtc.c:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | #include "hardware.h"
4 | #include "version.h"
5 | #include "rtc.h"
6 |
7 | void HandleRTC()
8 | {
9 | static int c=0;
10 | if((c++&8191)==0) /* No need to update this every loop */
11 | {
12 | int t1,t2,t3;
13 | // Communicate with RTC chip over SPI
14 | SPI_slow();
15 | EnableRTC();
16 | SPI(0x92); /* Read, Subaddress 001, start reading at register 0000 */
17 |
18 | t1=SPI(0xff); /* Seconds */
19 | t2=SPI(0xff); /* Minutes */
20 | HW_RTC(0x0c)=t1 | (t2 << 8);
21 |
22 | t1=SPI(0xff); /* Hours */
23 | t2=SPI(0xff); /* Day */
24 | HW_RTC(0x08)=t1 | (t2 << 8);
25 |
26 | t3=SPI(0xff); /* Weekday */
27 |
28 | t1=SPI(0xff); /* Month */
29 | t2=SPI(0xff); /* Year */
30 | HW_RTC(0x04)=t1 | (t2 << 8);
31 |
32 | HW_RTC(0x00)=0x4000 | t3; /* Flags + weekday */
33 | DisableRTC();
34 | SPI_fast();
35 | }
36 | }
37 |
38 |
--------------------------------------------------------------------------------
/rtl/sdram/dpram_inf_generic.v:
--------------------------------------------------------------------------------
1 | // dpram_inf_256x32.v
2 | // 2015, rok.krajnc@gmail.com
3 | // inferrable dual-port memory
4 |
5 | module dpram_inf_generic #(parameter depth = 8, parameter width = 32 ) (
6 | input wire clock,
7 | input wire wren_a,
8 | input wire [ depth-1:0] address_a,
9 | input wire [ width-1:0] data_a,
10 | output reg [ width-1:0] q_a,
11 | input wire wren_b,
12 | input wire [ depth-1:0] address_b,
13 | input wire [ width-1:0] data_b,
14 | output reg [ width-1:0] q_b
15 | );
16 |
17 | // memory
18 | reg [width-1:0] mem [0:(1< x"00"
2 | );
3 |
4 | begin
5 |
6 | -- We use a dual-port RAM here - one port for the lower byte, one for the upper byte. This allows us to
7 | -- present a 16-bit interface while allowing byte writes.
8 |
9 | process (clk)
10 | begin
11 | if (clk'event and clk = '1') then
12 | if we_n = '0' and lds_n='0' then
13 | ram(to_integer(unsigned(addr(maxAddrBitBRAM downto 1)&'1'))) := d(7 downto 0);
14 | q(7 downto 0) <= d(7 downto 0);
15 | else
16 | q(7 downto 0) <= ram(to_integer(unsigned(addr(maxAddrBitBRAM downto 1)&'1')));
17 | end if;
18 | end if;
19 | end process;
20 |
21 | process (clk)
22 | begin
23 | if (clk'event and clk = '1') then
24 | if we_n = '0' and uds_n='0' then
25 | ram(to_integer(unsigned(addr(maxAddrBitBRAM downto 1)&'0'))) := d(15 downto 8);
26 | q(15 downto 8) <= d(15 downto 8);
27 | else
28 | q(15 downto 8) <= ram(to_integer(unsigned(addr(maxAddrBitBRAM downto 1)&'0')));
29 | end if;
30 | end if;
31 | end process;
32 |
33 | end arch;
34 |
35 |
--------------------------------------------------------------------------------
/sw/misc/makelogo.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 |
3 | import sys,os
4 | from PIL import Image
5 |
6 |
7 | fin = "Minimig2OnBlue_edit.png"
8 | fon = "boot_logo.c"
9 |
10 | fi = Image.open(fin)
11 | di = fi.getdata()
12 |
13 | src_w = fi.size[0]
14 | src_h = fi.size[1]
15 |
16 | if (src_w % 8):
17 | sys.stderr.write("Input image width not a multiple of 8 pixels.\n")
18 | sys.exit(-1)
19 |
20 | with open(fon, 'w') as fo:
21 | fo.write( "/* %s */\n\n" % fon)
22 | fo.write( "const unsigned int logo_width = %s;\n" % (src_w/8))
23 | fo.write( "const unsigned int logo_height = %d;\n" % src_h)
24 | fo.write( "\n")
25 | fo.write( "const char boot_logo[][] = {\n")
26 | for h in range(src_h):
27 | fo.write( " { ")
28 | for w in range(0,src_w,8):
29 | d = 0
30 | for p in range (8):
31 | d = d<<1 | (fi.getpixel((w+p,h)) & 0x1)
32 | fo.write( "0x%02x, " % d)
33 | fo.seek(-2,1)
34 | fo.write( " },\n")
35 | fo.seek(-2,1)
36 | fo.write( "\n};\n\n")
37 |
38 |
--------------------------------------------------------------------------------
/fpga/virtual/minimig_virtual.qpf:
--------------------------------------------------------------------------------
1 | # Copyright (C) 1991-2007 Altera Corporation
2 | # Your use of Altera Corporation's design tools, logic functions
3 | # and other software and tools, and its AMPP partner logic
4 | # functions, and any output files from any of the foregoing
5 | # (including device programming or simulation files), and any
6 | # associated documentation or information are expressly subject
7 | # to the terms and conditions of the Altera Program License
8 | # Subscription Agreement, Altera MegaCore Function License
9 | # Agreement, or other applicable license agreement, including,
10 | # without limitation, that your use is for the sole purpose of
11 | # programming logic devices manufactured by Altera and sold by
12 | # Altera or its authorized distributors. Please refer to the
13 | # applicable agreement for further details.
14 |
15 |
16 |
17 | QUARTUS_VERSION = "7.2"
18 | DATE = "22:27:29 October 30, 2007"
19 |
20 |
21 | # Revisions
22 |
23 | PROJECT_REVISION = "minimig_virtual"
24 |
--------------------------------------------------------------------------------
/bench/ps2mouse/ps2mouse_tb.v:
--------------------------------------------------------------------------------
1 | // ps2mouse_tb.v
2 | // 2014, rok.krajnc@gmail.com
3 |
4 |
5 | `default_nettype none
6 | `timescale 1ns/1ps
7 |
8 |
9 | module ps2mouse_tb();
10 |
11 | reg CLK7=1;
12 | reg RST=1;
13 |
14 | tri1 mclk;
15 | tri1 mdat;
16 |
17 |
18 | // testbench
19 | initial begin
20 | #1;
21 | $display("BENCH : ps2mouse_tb BEGIN");
22 |
23 | repeat (200000) @ (posedge CLK7);
24 |
25 | $display("BENCH : ps2mouse_tb END");
26 | $finish();
27 | end
28 |
29 |
30 | // clocks & async reset
31 | initial begin
32 | CLK7 = 1'b1;
33 | #1;
34 | forever #143 CLK7 = ~CLK7;
35 | end
36 |
37 | initial begin
38 | RST = 1'b1;
39 | #1;
40 | repeat(10) @ (posedge CLK7);
41 | RST = 1'b0;
42 | end
43 |
44 |
45 | // modules
46 | ps2mouse_ctrl ps2mouse_ctrl (
47 | .clk (CLK7),
48 | .reset (RST),
49 | .mclk (mclk),
50 | .mdat (mdat)
51 | );
52 |
53 | ps2mouse ps2mouse (
54 | .clk (CLK7),
55 | .rst (RST),
56 | .mclk (mclk),
57 | .mdat (mdat)
58 | );
59 |
60 |
61 | endmodule
62 |
63 |
--------------------------------------------------------------------------------
/amiga_sw/WavPlay/minimigaudio.h:
--------------------------------------------------------------------------------
1 | #ifndef AUDIOTEST_H
2 | #define AUDIOTEST_H
3 |
4 | #include
5 | #include
6 |
7 | #define AUDIOHW (*(short *)0xb80200)
8 |
9 | #define AUDIOACTIVE 1
10 | #define AUDIOINTACTIVE 2
11 |
12 | #define AUDIOBUFFER ((char *)0xb00000)
13 | #define AUDIOBUFFERSIZE 32768
14 |
15 |
16 | struct AudioContext
17 | {
18 | void (*Dispose)(struct AudioContext *ac);
19 | BOOL (*Handle)(struct AudioContext *ac,unsigned long Signals);
20 | void (*Enable)(struct AudioContext *ac);
21 | void (*Disable)(struct AudioContext *ac);
22 | void (*SetFillFunction)(struct AudioContext *ac,int (*fillfunc)(void *,char *,int),void *userdata);
23 | void *Server;
24 | int (*FillFunction)(void *ud,char *buf,int len);
25 | void *FillUserData;
26 | BOOL Active;
27 | long SigBit;
28 | long Signals;
29 | struct Task *SigTask;
30 | struct MsgPort *Port;
31 | int ActiveBuffer;
32 | struct Interrupt Interrupt;
33 | };
34 |
35 | struct AudioContext *Audio_Create();
36 |
37 | #endif
38 |
39 |
--------------------------------------------------------------------------------
/bench/de1/de1_clk_rst.v:
--------------------------------------------------------------------------------
1 | // DE1 external clocks and resets
2 | // 2013, rok.krajnc@gmail.com
3 |
4 |
5 | //// timescale ////
6 | `timescale 1ns/1ps
7 |
8 |
9 | //// clock defines ////
10 | `define HP_24 20.833
11 | `define HP_27 18.519
12 | `define HP_50 10.000
13 | `define HP_EXT 5.000
14 |
15 |
16 | //// module ////
17 | module de1_clk_rst (
18 | output reg CLOCK24,
19 | output reg CLOCK27,
20 | output reg CLOCK50,
21 | output reg CLOCKEXT,
22 | output reg RST
23 | );
24 |
25 |
26 | //// clocks & async reset ////
27 | initial begin
28 | CLOCK24 = 1'b1;
29 | #2;
30 | forever #`HP_24 CLOCK24 = ~CLOCK24;
31 | end
32 |
33 | initial begin
34 | CLOCK27 = 1'b1;
35 | #3;
36 | forever #`HP_27 CLOCK27 = ~CLOCK27;
37 | end
38 |
39 | initial begin
40 | CLOCK50 = 1'b1;
41 | #5;
42 | forever #`HP_50 CLOCK50 = ~CLOCK50;
43 | end
44 |
45 | initial begin
46 | CLOCKEXT = 1'b1;
47 | #7;
48 | forever #`HP_EXT CLOCKEXT = ~CLOCKEXT;
49 | end
50 |
51 | initial begin
52 | RST = 1'b1;
53 | #101;
54 | RST = 1'b0;
55 | end
56 |
57 |
58 | endmodule
59 |
60 |
--------------------------------------------------------------------------------
/doc/amiga/ahi/Aros_Developer_AHIDrivers - Wikibooks, open books for an open world_files/index(1).php:
--------------------------------------------------------------------------------
1 | // This page is for keeping track of JavaScript that may no longer be useful/functional someday.
2 |
3 | mw.log.deprecate(window, 'addLoadEvent', function(fn) {
4 | jQuery.ready(fn);
5 | }, 'Use jQuery.ready instead.' );
6 |
7 | window.import_script = function(name) {
8 | mw.loader.load(
9 | mw.config.get('wgServer')
10 | + mw.config.get('wgScript')
11 | + '?title=' + mw.util.wikiUrlencode(name)
12 | + '&action=raw&ctype=text/javascript'
13 | );
14 | };
15 |
16 | window.import_style = function(name) {
17 | mw.loader.load(
18 | mw.config.get('wgServer')
19 | + mw.config.get('wgScript')
20 | + '?title=' + mw.util.wikiUrlencode(name)
21 | + '&action=raw&ctype=text/css'
22 | );
23 | };
24 |
25 | // Removes the default no-license option for uploads.
26 | function remove_no_license()
27 | {
28 | if ( mw.config.get('wgCanonicalSpecialPageName') !== 'Upload' )
29 | return;
30 | $('#wpLicense').find('option').eq(0).remove();
31 | }
32 |
33 | $(document).ready(remove_no_license);
--------------------------------------------------------------------------------
/rtl/mist/amiga_clk_altera.ppf:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/fpga/chameleonv1/Makefile:
--------------------------------------------------------------------------------
1 | # MINIMIG
2 | # fpga makefile
3 | # 2012, rok.krajnc@gmail.com
4 | # 2020, AMR
5 |
6 | include ../../paths.mk
7 |
8 | ### programs ###
9 | MAP=$(QUARTUS_PATH_CIII)quartus_map
10 | FIT=$(QUARTUS_PATH_CIII)quartus_fit
11 | ASM=$(QUARTUS_PATH_CIII)quartus_asm
12 | PGM=$(QUARTUS_PATH_CIII)quartus_pgm
13 | STA=$(QUARTUS_PATH_CIII)quartus_sta
14 |
15 | ### project ###
16 | PROJECT=MinimigAGA_TC64V1
17 |
18 |
19 | ### build rules ###
20 |
21 | # all
22 | all:
23 | @echo Making FPGA programming files ...
24 | @make map
25 | @make fit
26 | @make asm
27 | @make sta
28 |
29 | map:
30 | @echo Running mapper ...
31 | @$(MAP) $(PROJECT)
32 |
33 | fit:
34 | @echo Running fitter ...
35 | @$(FIT) $(PROJECT)
36 |
37 | asm:
38 | @echo Running assembler ...
39 | @$(ASM) $(PROJECT)
40 |
41 | sta:
42 | @echo Running STA ...
43 | @$(STA) $(PROJECT)
44 | @grep Design-wide\ TNS $(PROJECT).sta.rpt
45 |
46 | run:
47 | @$(PGM) -c USB-Blaster -m jtag -o "p;./out/$(PROJECT).sof"
48 |
49 | # clean
50 | clean:
51 | @echo clean
52 | @rm -rf ./out/
53 | @rm -rf ./db/
54 | @rm -rf ./incremental_db/
55 |
56 |
--------------------------------------------------------------------------------
/fpga/chameleonv2/Makefile:
--------------------------------------------------------------------------------
1 | # MINIMIG
2 | # fpga makefile
3 | # 2012, rok.krajnc@gmail.com
4 | # 2020, AMR
5 |
6 | include ../../paths.mk
7 |
8 | ### programs ###
9 | MAP=$(QUARTUS_PATH_C10LP)quartus_map
10 | FIT=$(QUARTUS_PATH_C10LP)quartus_fit
11 | ASM=$(QUARTUS_PATH_C10LP)quartus_asm
12 | PGM=$(QUARTUS_PATH_C10LP)quartus_pgm
13 | STA=$(QUARTUS_PATH_C10LP)quartus_sta
14 |
15 | ### project ###
16 | PROJECT=MinimigAGA_TC64V2
17 |
18 |
19 | ### build rules ###
20 |
21 | # all
22 | all:
23 | @echo Making FPGA programming files ...
24 | @make map
25 | @make fit
26 | @make asm
27 | @make sta
28 |
29 | map:
30 | @echo Running mapper ...
31 | @$(MAP) $(PROJECT)
32 |
33 | fit:
34 | @echo Running fitter ...
35 | @$(FIT) $(PROJECT)
36 |
37 | asm:
38 | @echo Running assembler ...
39 | @$(ASM) $(PROJECT)
40 |
41 | sta:
42 | @echo Running STA ...
43 | @$(STA) $(PROJECT)
44 | @grep Design-wide\ TNS $(PROJECT).sta.rpt
45 |
46 | run:
47 | @$(PGM) -c USB-Blaster -m jtag -o "p;./out/$(PROJECT).sof"
48 |
49 | # clean
50 | clean:
51 | @echo clean
52 | @rm -rf ./out/
53 | @rm -rf ./db/
54 | @rm -rf ./incremental_db/
55 |
56 |
--------------------------------------------------------------------------------
/fw/ctrl_832/boot.h:
--------------------------------------------------------------------------------
1 | // boot.h
2 | // bootscreen functions
3 | // 2014, rok.krajnc@gmail.com
4 |
5 |
6 | #ifndef __BOOT_H__
7 | #define __BOOT_H__
8 |
9 |
10 | //// defines ////
11 | #define SCREEN_WIDTH 640
12 | #define SCREEN_HEIGHT 256
13 | #define SCREEN_SIZE SCREEN_WIDTH * SCREEN_HEIGHT
14 | #define SCREEN_MEM_SIZE 2*SCREEN_SIZE/8
15 | #define SCREEN_ADDRESS 0x80000
16 | #define SCREEN_BPL1 0x80000
17 | #define SCREEN_BPL2 0x85000
18 |
19 |
20 | #define LOGO_WIDTH 208
21 | #define LOGO_HEIGHT 32
22 | #define LOGO_OFFSET (64*SCREEN_WIDTH/8+24)
23 | #define LOGO_LSKIP (SCREEN_WIDTH-LOGO_WIDTH)/8
24 | #define LOGO_SIZE 0x680
25 | #define LOGO_FILE "MINIMIG ART"
26 |
27 | #define BALL_SIZE 0x4000
28 | #define BALL_ADDRESS 0x8a000
29 | #define BALL_FILE "MINIMIG BAL"
30 |
31 | #define COPPER_SIZE 0x35c
32 | #define COPPER_ADDRESS 0x8e680
33 | #define COPPER_FILE "MINIMIG COP"
34 |
35 | #define BLITS 64
36 |
37 | //// functions ////
38 | void BootInit();
39 | void BootPrintEx(char * str);
40 | void BootHome();
41 |
42 | #endif // __BOOT_H__
43 |
44 |
--------------------------------------------------------------------------------
/fw/testbed/boot.h:
--------------------------------------------------------------------------------
1 | // boot.h
2 | // bootscreen functions
3 | // 2014, rok.krajnc@gmail.com
4 |
5 |
6 | #ifndef __BOOT_H__
7 | #define __BOOT_H__
8 |
9 |
10 | //// defines ////
11 | #define SCREEN_WIDTH 640
12 | #define SCREEN_HEIGHT 256
13 | #define SCREEN_SIZE SCREEN_WIDTH * SCREEN_HEIGHT
14 | #define SCREEN_MEM_SIZE 2*SCREEN_SIZE/8
15 | #define SCREEN_ADDRESS 0x80000
16 | #define SCREEN_BPL1 0x80000
17 | #define SCREEN_BPL2 0x85000
18 |
19 |
20 | #define LOGO_WIDTH 208
21 | #define LOGO_HEIGHT 32
22 | #define LOGO_OFFSET (64*SCREEN_WIDTH/8+24)
23 | #define LOGO_LSKIP (SCREEN_WIDTH-LOGO_WIDTH)/8
24 | #define LOGO_SIZE 0x680
25 | #define LOGO_FILE "MINIMIG ART"
26 |
27 | #define BALL_SIZE 0x4000
28 | #define BALL_ADDRESS 0x8a000
29 | #define BALL_FILE "MINIMIG BAL"
30 |
31 | #define COPPER_SIZE 0x35c
32 | #define COPPER_ADDRESS 0x8e680
33 | #define COPPER_FILE "MINIMIG COP"
34 |
35 | #define BLITS 64
36 |
37 | //// functions ////
38 | void BootInit();
39 | void BootPrintEx(char * str);
40 | void BootHome();
41 |
42 | #endif // __BOOT_H__
43 |
44 |
--------------------------------------------------------------------------------
/sim/lcd/nc/run/test.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import sys, os, copy
4 |
5 | sys.path.append("../../../common/")
6 | import nc_run
7 | import lst_parse
8 | import logger
9 |
10 |
11 | # defines
12 | debug = True
13 | do_compile = True
14 | do_elaborate = True
15 | do_simulate = True
16 | do_lint = False
17 | do_coverage = False
18 | opt_waves = True
19 | opt_mems = False
20 | opt_tasks = False
21 | opt_funcs = False
22 | top_rtl = "lcd"
23 | top_sim = "lcd_tb"
24 | top_cov = "lcd"
25 | out_dir = "../out"
26 | rtl_list = "rtl.lst"
27 | lib_list = "lib.lst"
28 | sim_list = "sim.lst"
29 | dir_list = "dir.lst"
30 |
31 | # run test
32 | nc_run.nc_run(debug=debug,
33 | do_compile=do_compile, do_elaborate=do_elaborate, do_simulate=do_simulate, do_lint=do_lint, do_coverage=do_coverage,
34 | opt_waves=opt_waves, opt_mems=opt_mems, opt_tasks=opt_tasks, opt_funcs=opt_funcs,
35 | top_rtl=top_rtl, top_sim=top_sim, top_cov=top_cov,
36 | out_dir=out_dir, rtl_list=rtl_list, lib_list=lib_list, sim_list=sim_list, dir_list=dir_list)
37 |
38 |
39 |
--------------------------------------------------------------------------------
/sim/sdm/nc/run/test.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import sys, os, copy
4 |
5 | sys.path.append("../../../common/")
6 | import nc_run
7 | import lst_parse
8 | import logger
9 |
10 |
11 | # defines
12 | debug = True
13 | do_compile = True
14 | do_elaborate = True
15 | do_simulate = True
16 | do_lint = False
17 | do_coverage = False
18 | opt_waves = True
19 | opt_mems = False
20 | opt_tasks = False
21 | opt_funcs = False
22 | top_rtl = "sdm"
23 | top_sim = "sdm_tb"
24 | top_cov = "sdm"
25 | out_dir = "../out"
26 | rtl_list = "rtl.lst"
27 | lib_list = "lib.lst"
28 | sim_list = "sim.lst"
29 | dir_list = "dir.lst"
30 |
31 | # run test
32 | nc_run.nc_run(debug=debug,
33 | do_compile=do_compile, do_elaborate=do_elaborate, do_simulate=do_simulate, do_lint=do_lint, do_coverage=do_coverage,
34 | opt_waves=opt_waves, opt_mems=opt_mems, opt_tasks=opt_tasks, opt_funcs=opt_funcs,
35 | top_rtl=top_rtl, top_sim=top_sim, top_cov=top_cov,
36 | out_dir=out_dir, rtl_list=rtl_list, lib_list=lib_list, sim_list=sim_list, dir_list=dir_list)
37 |
38 |
39 |
--------------------------------------------------------------------------------
/sim/uart/nc/run/test.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import sys, os, copy
4 |
5 | sys.path.append("../../../common/")
6 | import nc_run
7 | import lst_parse
8 | import logger
9 |
10 |
11 | # defines
12 | debug = True
13 | do_compile = True
14 | do_elaborate = True
15 | do_simulate = True
16 | do_lint = False
17 | do_coverage = False
18 | opt_waves = True
19 | opt_mems = False
20 | opt_tasks = True
21 | opt_funcs = True
22 | top_rtl = "uart"
23 | top_sim = "uart_tb"
24 | top_cov = "uart"
25 | out_dir = "../out"
26 | rtl_list = "rtl.lst"
27 | lib_list = "lib.lst"
28 | sim_list = "sim.lst"
29 | dir_list = "dir.lst"
30 |
31 | # run test
32 | nc_run.nc_run(debug=debug,
33 | do_compile=do_compile, do_elaborate=do_elaborate, do_simulate=do_simulate, do_lint=do_lint, do_coverage=do_coverage,
34 | opt_waves=opt_waves, opt_mems=opt_mems, opt_tasks=opt_tasks, opt_funcs=opt_funcs,
35 | top_rtl=top_rtl, top_sim=top_sim, top_cov=top_cov,
36 | out_dir=out_dir, rtl_list=rtl_list, lib_list=lib_list, sim_list=sim_list, dir_list=dir_list)
37 |
38 |
39 |
--------------------------------------------------------------------------------
/sim/ctrl/nc/run/test.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import sys, os, copy
4 |
5 | sys.path.append("../../../common/")
6 | import nc_run
7 | import lst_parse
8 | import logger
9 |
10 |
11 | # defines
12 | debug = True
13 | do_compile = True
14 | do_elaborate = True
15 | do_simulate = True
16 | do_lint = False
17 | do_coverage = False
18 | opt_waves = True
19 | opt_mems = True
20 | opt_tasks = False
21 | opt_funcs = False
22 | top_rtl = "ctrl_top"
23 | top_sim = "ctrl_tb"
24 | top_cov = "ctrl_top"
25 | out_dir = "../out"
26 | rtl_list = "rtl.lst"
27 | lib_list = "lib.lst"
28 | sim_list = "sim.lst"
29 | dir_list = "dir.lst"
30 |
31 | # run test
32 | nc_run.nc_run(debug=debug,
33 | do_compile=do_compile, do_elaborate=do_elaborate, do_simulate=do_simulate, do_lint=do_lint, do_coverage=do_coverage,
34 | opt_waves=opt_waves, opt_mems=opt_mems, opt_tasks=opt_tasks, opt_funcs=opt_funcs,
35 | top_rtl=top_rtl, top_sim=top_sim, top_cov=top_cov,
36 | out_dir=out_dir, rtl_list=rtl_list, lib_list=lib_list, sim_list=sim_list, dir_list=dir_list)
37 |
38 |
39 |
--------------------------------------------------------------------------------
/rtl/chameleonv2/amiga_clk_altera.cmp:
--------------------------------------------------------------------------------
1 | --Copyright (C) 2018 Intel Corporation. All rights reserved.
2 | --Your use of Intel Corporation's design tools, logic functions
3 | --and other software and tools, and its AMPP partner logic
4 | --functions, and any output files from any of the foregoing
5 | --(including device programming or simulation files), and any
6 | --associated documentation or information are expressly subject
7 | --to the terms and conditions of the Intel Program License
8 | --Subscription Agreement, the Intel Quartus Prime License Agreement,
9 | --the Intel FPGA IP License Agreement, or other applicable license
10 | --agreement, including, without limitation, that your use is for
11 | --the sole purpose of programming logic devices manufactured by
12 | --Intel and sold by Intel or its authorized distributors. Please
13 | --refer to the applicable agreement for further details.
14 |
15 |
16 | component amiga_clk_altera
17 | PORT
18 | (
19 | areset : IN STD_LOGIC := '0';
20 | inclk0 : IN STD_LOGIC := '0';
21 | c0 : OUT STD_LOGIC ;
22 | c1 : OUT STD_LOGIC ;
23 | c2 : OUT STD_LOGIC ;
24 | locked : OUT STD_LOGIC
25 | );
26 | end component;
27 |
--------------------------------------------------------------------------------
/sim/sram/nc/run/test.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import sys, os, copy
4 |
5 | sys.path.append("../../../common/")
6 | import nc_run
7 | import lst_parse
8 | import logger
9 |
10 |
11 | # defines
12 | debug = True
13 | do_compile = True
14 | do_elaborate = True
15 | do_simulate = True
16 | do_lint = False
17 | do_coverage = False
18 | opt_waves = True
19 | opt_mems = False
20 | opt_tasks = True
21 | opt_funcs = True
22 | top_rtl = "qmem_sram"
23 | top_sim = "qmem_sram_tb"
24 | top_cov = "qmem_sram"
25 | out_dir = "../out"
26 | rtl_list = "rtl.lst"
27 | lib_list = "lib.lst"
28 | sim_list = "sim.lst"
29 | dir_list = "dir.lst"
30 |
31 | # run test
32 | nc_run.nc_run(debug=debug,
33 | do_compile=do_compile, do_elaborate=do_elaborate, do_simulate=do_simulate, do_lint=do_lint, do_coverage=do_coverage,
34 | opt_waves=opt_waves, opt_mems=opt_mems, opt_tasks=opt_tasks, opt_funcs=opt_funcs,
35 | top_rtl=top_rtl, top_sim=top_sim, top_cov=top_cov,
36 | out_dir=out_dir, rtl_list=rtl_list, lib_list=lib_list, sim_list=sim_list, dir_list=dir_list)
37 |
38 |
39 |
--------------------------------------------------------------------------------
/sim/tg68/nc/run/test.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import sys, os, copy
4 |
5 | sys.path.append("../../../common/")
6 | import nc_run
7 | import lst_parse
8 | import logger
9 |
10 |
11 | # defines
12 | debug = True
13 | do_compile = True
14 | do_elaborate = True
15 | do_simulate = True
16 | do_lint = False
17 | do_coverage = False
18 | opt_waves = True
19 | opt_mems = True
20 | opt_tasks = False
21 | opt_funcs = False
22 | top_rtl = "TG68_fast"
23 | top_sim = "tg68_fast_tb"
24 | top_cov = "TG68_fast"
25 | out_dir = "../out"
26 | rtl_list = "rtl.lst"
27 | lib_list = "lib.lst"
28 | sim_list = "sim.lst"
29 | dir_list = "dir.lst"
30 |
31 | # run test
32 | nc_run.nc_run(debug=debug,
33 | do_compile=do_compile, do_elaborate=do_elaborate, do_simulate=do_simulate, do_lint=do_lint, do_coverage=do_coverage,
34 | opt_waves=opt_waves, opt_mems=opt_mems, opt_tasks=opt_tasks, opt_funcs=opt_funcs,
35 | top_rtl=top_rtl, top_sim=top_sim, top_cov=top_cov,
36 | out_dir=out_dir, rtl_list=rtl_list, lib_list=lib_list, sim_list=sim_list, dir_list=dir_list)
37 |
38 |
39 |
--------------------------------------------------------------------------------
/sim/tg68k/nc/run/test.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import sys, os, copy
4 |
5 | sys.path.append("../../../common/")
6 | import nc_run
7 | import lst_parse
8 | import logger
9 |
10 |
11 | # defines
12 | debug = True
13 | do_compile = True
14 | do_elaborate = True
15 | do_simulate = True
16 | do_lint = False
17 | do_coverage = False
18 | opt_waves = True
19 | opt_mems = True
20 | opt_tasks = False
21 | opt_funcs = False
22 | top_rtl = "TG68k_fast"
23 | top_sim = "tg68k_fast_tb"
24 | top_cov = "TG68k_fast"
25 | out_dir = "../out"
26 | rtl_list = "rtl.lst"
27 | lib_list = "lib.lst"
28 | sim_list = "sim.lst"
29 | dir_list = "dir.lst"
30 |
31 | # run test
32 | nc_run.nc_run(debug=debug,
33 | do_compile=do_compile, do_elaborate=do_elaborate, do_simulate=do_simulate, do_lint=do_lint, do_coverage=do_coverage,
34 | opt_waves=opt_waves, opt_mems=opt_mems, opt_tasks=opt_tasks, opt_funcs=opt_funcs,
35 | top_rtl=top_rtl, top_sim=top_sim, top_cov=top_cov,
36 | out_dir=out_dir, rtl_list=rtl_list, lib_list=lib_list, sim_list=sim_list, dir_list=dir_list)
37 |
38 |
39 |
--------------------------------------------------------------------------------
/amiga_sw/rtg/P96ModeInfo.i:
--------------------------------------------------------------------------------
1 | ;
2 | ; WWW.FPGAArcade.COM
3 | ;
4 | ; REPLAY Retro Gaming Platform
5 | ; No Emulation No Compromise
6 | ;
7 | ; Replay.card - P96 RTG driver for the REPLAY Amiga core
8 | ; Copyright (C) FPGAArcade community
9 | ;
10 | ; Contributors : Jakub Bednarski, Mike Johnson, Jim Drew, Erik Hemming, Nicolas Hamel
11 | ;
12 | ; This software is licensed under LPGLv2.1 ; see LICENSE file
13 | ;
14 | ;
15 |
16 | PSSO_ModeInfo_OpenCount = 14
17 | PSSO_ModeInfo_Active = 16
18 | PSSO_ModeInfo_Width = 18
19 | PSSO_ModeInfo_Height = 20
20 | PSSO_ModeInfo_Depth = 22
21 | PSSO_ModeInfo_Flags = 23
22 | PSSO_ModeInfo_HorTotal = 24
23 | PSSO_ModeInfo_HorBlankSize = 26
24 | PSSO_ModeInfo_HorSyncStart = 28
25 | PSSO_ModeInfo_HorSyncSize = 30
26 | PSSO_ModeInfo_HorSyncSkew = 32
27 | PSSO_ModeInfo_HorEnableSkew = 33
28 | PSSO_ModeInfo_VerTotal = 34
29 | PSSO_ModeInfo_VerBlankSize = 36
30 | PSSO_ModeInfo_VerSyncStart = 38
31 | PSSO_ModeInfo_VerSyncSize = 40
32 | PSSO_ModeInfo_first_union = 42
33 | PSSO_ModeInfo_second_union = 43
34 | PSSO_ModeInfo_PixelClock = 44
35 | PSSO_ModeInfo_sizeof = 48
36 |
37 | GMB_HPOLARITY = 3
38 | GMF_HPOLARITY = 8
39 | GMB_VPOLARITY = 4
40 | GMF_VPOLARITY = 16
41 |
--------------------------------------------------------------------------------
/sim/minimig/nc/run/test.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import sys, os, copy
4 |
5 | sys.path.append("../../../common/")
6 | import nc_run
7 | import lst_parse
8 | import logger
9 |
10 |
11 | # defines
12 | debug = True
13 | do_compile = True
14 | do_elaborate = True
15 | do_simulate = True
16 | do_lint = False
17 | do_coverage = False
18 | opt_waves = True
19 | opt_mems = False
20 | opt_tasks = False
21 | opt_funcs = False
22 | top_rtl = "minimig_de1_top"
23 | top_sim = "soc_tb"
24 | top_cov = "minimig_de1_top"
25 | out_dir = "../out"
26 | rtl_list = "rtl.lst"
27 | lib_list = "lib.lst"
28 | sim_list = "sim.lst"
29 | dir_list = "dir.lst"
30 |
31 | # run test
32 | nc_run.nc_run(debug=debug,
33 | do_compile=do_compile, do_elaborate=do_elaborate, do_simulate=do_simulate, do_lint=do_lint, do_coverage=do_coverage,
34 | opt_waves=opt_waves, opt_mems=opt_mems, opt_tasks=opt_tasks, opt_funcs=opt_funcs,
35 | top_rtl=top_rtl, top_sim=top_sim, top_cov=top_cov,
36 | out_dir=out_dir, rtl_list=rtl_list, lib_list=lib_list, sim_list=sim_list, dir_list=dir_list)
37 |
38 |
39 |
--------------------------------------------------------------------------------
/sim/ps2mouse/nc/run/test.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import sys, os, copy
4 |
5 | sys.path.append("../../../common/")
6 | import nc_run
7 | import lst_parse
8 | import logger
9 |
10 |
11 | # defines
12 | debug = True
13 | do_compile = True
14 | do_elaborate = True
15 | do_simulate = True
16 | do_lint = False
17 | do_coverage = False
18 | opt_waves = True
19 | opt_mems = True
20 | opt_tasks = True
21 | opt_funcs = True
22 | top_rtl = "ps2mouse_ctrl"
23 | top_sim = "ps2mouse_tb"
24 | top_cov = "ps2mouse_ctrl"
25 | out_dir = "../out"
26 | rtl_list = "rtl.lst"
27 | lib_list = "lib.lst"
28 | sim_list = "sim.lst"
29 | dir_list = "dir.lst"
30 |
31 | # run test
32 | nc_run.nc_run(debug=debug,
33 | do_compile=do_compile, do_elaborate=do_elaborate, do_simulate=do_simulate, do_lint=do_lint, do_coverage=do_coverage,
34 | opt_waves=opt_waves, opt_mems=opt_mems, opt_tasks=opt_tasks, opt_funcs=opt_funcs,
35 | top_rtl=top_rtl, top_sim=top_sim, top_cov=top_cov,
36 | out_dir=out_dir, rtl_list=rtl_list, lib_list=lib_list, sim_list=sim_list, dir_list=dir_list)
37 |
38 |
39 |
--------------------------------------------------------------------------------
/sim/minimig_cpu/nc/run/test.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import sys, os, copy
4 |
5 | sys.path.append("../../../common/")
6 | import nc_run
7 | import lst_parse
8 | import logger
9 |
10 |
11 | # defines
12 | debug = True
13 | do_compile = True
14 | do_elaborate = True
15 | do_simulate = True
16 | do_lint = False
17 | do_coverage = False
18 | opt_waves = True
19 | opt_mems = False
20 | opt_tasks = False
21 | opt_funcs = False
22 | top_rtl = "minimig_de1_top"
23 | top_sim = "soc_tb"
24 | top_cov = "minimig_de1_top"
25 | out_dir = "../out"
26 | rtl_list = "rtl.lst"
27 | lib_list = "lib.lst"
28 | sim_list = "sim.lst"
29 | dir_list = "dir.lst"
30 |
31 | # run test
32 | nc_run.nc_run(debug=debug,
33 | do_compile=do_compile, do_elaborate=do_elaborate, do_simulate=do_simulate, do_lint=do_lint, do_coverage=do_coverage,
34 | opt_waves=opt_waves, opt_mems=opt_mems, opt_tasks=opt_tasks, opt_funcs=opt_funcs,
35 | top_rtl=top_rtl, top_sim=top_sim, top_cov=top_cov,
36 | out_dir=out_dir, rtl_list=rtl_list, lib_list=lib_list, sim_list=sim_list, dir_list=dir_list)
37 |
38 |
39 |
--------------------------------------------------------------------------------
/rtl/minimig/agnus_blitter_fill.v:
--------------------------------------------------------------------------------
1 | //Blitter fill logic
2 | //The fill logic module has 2 modes,inclusive fill and exclusive fill.
3 | //Both share the same xor operation but in inclusive fill mode,
4 | //the output of the xor-filler is or-ed with the input data.
5 |
6 |
7 | module agnus_blitter_fill
8 | (
9 | input ife, //inclusive fill enable
10 | input efe, //exclusive fill enable
11 | input fci, //fill carry input
12 | output fco, //fill carry output
13 | input [15:0]in, //data in
14 | output reg [15:0]out //data out
15 | );
16 |
17 | //local signals
18 | reg [15:0]carry;
19 |
20 | //generate all fill carry's
21 | integer j;
22 | always @(fci or in[0])//least significant bit
23 | carry[0] = fci ^ in[0];
24 | always @(in or carry)//rest of bits
25 | for (j=1;j<=15;j=j+1)
26 | carry[j] = carry[j-1] ^ in[j];
27 |
28 | //fill carry output
29 | assign fco = carry[15];
30 |
31 | //fill data output
32 | always @(ife or efe or carry or in)
33 | if (efe)//exclusive fill
34 | out[15:0] = carry[15:0];
35 | else if (ife)//inclusive fill
36 | out[15:0] = carry[15:0] | in[15:0];
37 | else//bypass,no filling
38 | out[15:0] = in[15:0];
39 |
40 |
41 | endmodule
42 |
43 |
--------------------------------------------------------------------------------
/sim/cpu_cache_sdram/nc/run/test.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 | import sys, os, copy
4 |
5 | sys.path.append("../../../common/")
6 | import nc_run
7 | import lst_parse
8 | import logger
9 |
10 |
11 | # defines
12 | debug = True
13 | do_compile = True
14 | do_elaborate = True
15 | do_simulate = True
16 | do_lint = False
17 | do_coverage = False
18 | opt_waves = True
19 | opt_mems = True
20 | opt_tasks = True
21 | opt_funcs = True
22 | top_rtl = "cpu_cache_sdram_tb"
23 | top_sim = "cpu_cache_sdram_tb"
24 | top_cov = "cpu_cache_sdram_tb"
25 | out_dir = "../out"
26 | rtl_list = "rtl.lst"
27 | lib_list = "lib.lst"
28 | sim_list = "sim.lst"
29 | dir_list = "dir.lst"
30 |
31 | # run test
32 | nc_run.nc_run(debug=debug,
33 | do_compile=do_compile, do_elaborate=do_elaborate, do_simulate=do_simulate, do_lint=do_lint, do_coverage=do_coverage,
34 | opt_waves=opt_waves, opt_mems=opt_mems, opt_tasks=opt_tasks, opt_funcs=opt_funcs,
35 | top_rtl=top_rtl, top_sim=top_sim, top_cov=top_cov,
36 | out_dir=out_dir, rtl_list=rtl_list, lib_list=lib_list, sim_list=sim_list, dir_list=dir_list)
37 |
38 |
39 |
--------------------------------------------------------------------------------
/doc/amiga/ahi/Aros_Developer_AHIDrivers - Wikibooks, open books for an open world_files/index(15).php:
--------------------------------------------------------------------------------
1 | (function($) {
2 | if ( $.inArray( mw.config.get( 'wgAction' ), ['edit','submit']) === -1 || $.fn.wikiEditor === undefined ) {
3 | return;
4 | }
5 |
6 | if ( window.mwCustomEditButtons === undefined ) {
7 | window.mwCustomEditButtons = [];
8 | }
9 |
10 | $(document).ready( function() {
11 | var $tb = $('#wpTextbox1');
12 | $.each( mwCustomEditButtons, function(i) {
13 | var wikiOptions = { section: 'main', group: 'insert', tools: {}}, tool = this;
14 | wikiOptions.tools[ tool.name || 'mw-custom-edit-button-' + (i+1) ] = {
15 | label: tool.speedTip,
16 | type: 'button',
17 | icon: tool.imageFile,
18 | action: {
19 | type: 'callback',
20 | execute: function() {
21 | $tb.textSelection( 'encapsulateSelection', {
22 | pre: tool.tagOpen || '',
23 | peri: tool.sampleText || '',
24 | post: tool.tagClose || ''
25 | });
26 | if ( $.isFunction( tool.callbackFunct ) ) {
27 | tool.callbackFunct.call( window );
28 | }
29 | }
30 | }
31 | }
32 | $tb.wikiEditor( 'addToToolbar', wikiOptions );
33 | });
34 | });
35 | })( jQuery );
--------------------------------------------------------------------------------
/doc/amiga/ahi/Aros_Developer_AHIDrivers - Wikibooks, open books for an open world_files/index(14).php:
--------------------------------------------------------------------------------
1 | $(document).ready( function() {
2 | var ns = mw.config.get( 'wgNamespaceNumber' ),
3 | path = '//commons.wikimedia.org/wiki/',
4 | file_ns = mw.config.get( 'wgFormattedNamespaces' )['6'],
5 | re = RegExp('^\/\/upload\.wikimedia\.org\/wikipedia\/commons\/');
6 |
7 | if ( ns === 6 && !$('#ca-history').length && $('.sharedUploadNotice').length ) {
8 | var title = mw.util.wikiUrlencode( mw.config.get( 'wgTitle' ) ),
9 | lang = mw.config.get( 'wgUserLanguage' );
10 |
11 | // Discussion link
12 | $('#ca-talk').filter('.new').find('a').attr('href', function(i, val) {
13 | return path + 'File_talk:' + title + '?uselang=' + lang;
14 | });
15 |
16 | // Edit link
17 | $( document.getElementById('ca-edit') || document.getElementById('ca-viewsource') )
18 | .find('a')
19 | .attr('href', function(i, val) {
20 | return path + 'File:' + title + '?uselang=' + lang + '&action=edit';
21 | });
22 | }
23 |
24 | $('a.image').attr('href', function(i, val) {
25 | if ( re.test( $(this).find('img').attr('src') ) ) {
26 | return val.replace('/wiki/' + file_ns + ':', path + 'File:');
27 | }
28 | });
29 | });
--------------------------------------------------------------------------------
/rtl/soc/minimig_defines.vh:
--------------------------------------------------------------------------------
1 | /* minimig_defines.v */
2 | /* 2012, rok.krajnc@gmail.com */
3 |
4 | // virtual
5 | `ifdef MINIMIG_VIRTUAL
6 | `define MINIMIG_TOPLEVEL_DITHER // Use our own dithering since target boards have 4 or 5 bits per gun
7 | `define MINIMIG_EXTRA_KEYBOARD
8 | `define MINIMIG_ALTERA
9 | `define MINIMIG_CYCLONE3
10 | `define MINIMIG_VIDEO_FILTER
11 | `define MINIMIG_PARALLEL_AUDIO // Use own sigma-delta for audio
12 | `define MINIMIG_PS2_KEYBOARD
13 | `define MINIMIG_PS2_MOUSE
14 | `define MINIMIG_HOST_DIRECT // The host can access memory directly, so doesn't need to upload over SPI
15 | `endif
16 |
17 | // minimig-de0_nano
18 | `ifdef MINIMIG_DE0_NANO
19 | `define MINIMIG_ALTERA
20 | `define MINIMIG_CYCLONE4
21 | `define MINIMIG_MOR1KX
22 | //`define MINIMIG_VIDEO_FILTER
23 | `define MINIMIG_SERIAL_AUDIO
24 | `define MINIMIG_PS2_KEYBOARD
25 | `define MINIMIG_PS2_MOUSE
26 | `endif
27 |
28 | // mist
29 | `ifdef MINIMIG_MIST
30 | `define MINIMIG_TOPLEVEL_OSD // mix the OSD to the video in the toplevel
31 | `define MINIMIG_ALTERA_PLL_RECONFIG
32 | `define MINIMIG_CYCLONE3
33 | `define MINIMIG_VIDEO_FILTER
34 | `define MINIMIG_PARALLEL_AUDIO // Use own sigma-delta for audio
35 | // `define MINIMIG_SERIAL_AUDIO
36 | `endif
37 |
38 |
--------------------------------------------------------------------------------
/fw/ctrl_boot_832/rom_prologue.vhd:
--------------------------------------------------------------------------------
1 | library ieee;
2 | use ieee.std_logic_1164.all;
3 | use ieee.numeric_std.all;
4 |
5 | entity soc_firmware is
6 | generic
7 | (
8 | maxAddrBitBRAM : integer := 15 -- Specify your actual ROM size to save LEs and unnecessary block RAM usage.
9 | );
10 | port (
11 | clk : in std_logic;
12 | reset_n : in std_logic := '1';
13 | addr : in std_logic_vector(maxAddrBitBRAM-2 downto 0);
14 | q : out std_logic_vector(31 downto 0);
15 | -- Allow writes - defaults supplied to simplify projects that don't need to write.
16 | d : in std_logic_vector(31 downto 0) := X"00000000";
17 | we : in std_logic := '0';
18 | bytesel : in std_logic_vector(3 downto 0) := "1111";
19 | -- Second port
20 | addr2 : in std_logic_vector(maxAddrBitBRAM-2 downto 0) := (others=>'0');
21 | q2 : out std_logic_vector(31 downto 0);
22 | d2 : in std_logic_vector(31 downto 0) := X"00000000";
23 | we2 : in std_logic := '0';
24 | bytesel2 : in std_logic_vector(3 downto 0) := "1111"
25 | );
26 | end soc_firmware;
27 |
28 | architecture arch of soc_firmware is
29 |
30 | type word_t is array (0 to 3) of std_logic_vector(7 downto 0);
31 | type ram_type is array (0 to 2 ** (maxAddrBitBRAM-1) - 1) of word_t;
32 |
33 | signal ram : ram_type :=
34 | (
35 |
--------------------------------------------------------------------------------
/doc/amiga/ahi/Aros_Developer_AHIDrivers - Wikibooks, open books for an open world_files/index(6).php:
--------------------------------------------------------------------------------
1 | /* Per-book JavaScript.
2 | * Maintained by [[User:Darklama]]
3 | * Use book-specific stylesheet and JavaScript.
4 | * You can ask an administrator to add or update a global book specific Stylesheet or JavaScript.
5 | */
6 |
7 | (function( mw ) {
8 | var ns = mw.config.get( 'wgNameSpaceNumber' ),
9 | user = mw.config.get( 'wgUserName', false ),
10 | book = mw.config.get( 'wgBookName' );
11 |
12 | if ( ns === 8 || mw.config.get( 'wgIsArticle' ) === false ) {
13 | return; /* Disable in MediaWiki space and when not viewing book material */
14 | } else if ( ns === 2 ) {
15 | /* Find correct book name in User space */
16 | book = mw.config.get( 'wgPageName' ).split( '/', 2 )[1];
17 |
18 | if ( book === 'per_book' ) {
19 | return; /* Disable within reserved spaces */
20 | }
21 | }
22 |
23 | /* global styling */
24 | importStylesheet( 'MediaWiki:Perbook/' + book + '.css' );
25 | importScript( 'MediaWiki:Perbook/' + book + '.js' );
26 |
27 | /* user styling */
28 | if ( user ) {
29 | importStylesheet( 'User:' + user + '/per_book/' + book + '.css' );
30 | importScript( 'User:' + user + '/per_book/' + book + '.js' );
31 | }
32 | })( mediaWiki );
--------------------------------------------------------------------------------
/rtl/sdram/dpram_inf_be_1024x16.v:
--------------------------------------------------------------------------------
1 | // dpram_inf_be_1024x16.v
2 | // 2015, rok.krajnc@gmail.com
3 | // inferrable two-port memory with byte-enables
4 |
5 | module dpram_inf_be_1024x16 (
6 | input wire clock,
7 | input wire wren_a,
8 | input wire [ 2-1:0] byteena_a,
9 | input wire [ 10-1:0] address_a,
10 | input wire [ 16-1:0] data_a,
11 | output reg [ 16-1:0] q_a,
12 | input wire wren_b,
13 | input wire [ 2-1:0] byteena_b,
14 | input wire [ 10-1:0] address_b,
15 | input wire [ 16-1:0] data_b,
16 | output reg [ 16-1:0] q_b
17 | );
18 |
19 | // memory
20 | reg [8-1:0] mem0 [0:1024-1];
21 | reg [8-1:0] mem1 [0:1024-1];
22 |
23 | // port a
24 | always @ (posedge clock) begin
25 | if (wren_a && byteena_a[0]) mem0[address_a] <= #1 data_a[ 8-1:0];
26 | if (wren_a && byteena_a[1]) mem1[address_a] <= #1 data_a[16-1:8];
27 | q_a[ 8-1:0] <= #1 mem0[address_a];
28 | q_a[16-1:8] <= #1 mem1[address_a];
29 | end
30 |
31 | // port b
32 | always @ (posedge clock) begin
33 | if (wren_b && byteena_b[0]) mem0[address_b] <= #1 data_b[ 8-1:0];
34 | if (wren_b && byteena_b[1]) mem1[address_b] <= #1 data_b[16-1:8];
35 | q_b[ 8-1:0] <= #1 mem0[address_b];
36 | q_b[16-1:8] <= #1 mem1[address_b];
37 | end
38 |
39 | endmodule
40 |
41 |
--------------------------------------------------------------------------------
/rtl/sdram/dpram_inf_be_2048x16.v:
--------------------------------------------------------------------------------
1 | // dpram_inf_be_2048x16.v
2 | // 2015, rok.krajnc@gmail.com
3 | // inferrable two-port memory with byte-enables
4 |
5 | module dpram_inf_be_2048x16 (
6 | input wire clock,
7 | input wire wren_a,
8 | input wire [ 2-1:0] byteena_a,
9 | input wire [ 11-1:0] address_a,
10 | input wire [ 16-1:0] data_a,
11 | output reg [ 16-1:0] q_a,
12 | input wire wren_b,
13 | input wire [ 2-1:0] byteena_b,
14 | input wire [ 11-1:0] address_b,
15 | input wire [ 16-1:0] data_b,
16 | output reg [ 16-1:0] q_b
17 | );
18 |
19 | // memory
20 | reg [8-1:0] mem0 [0:2048-1];
21 | reg [8-1:0] mem1 [0:2048-1];
22 |
23 | // port a
24 | always @ (posedge clock) begin
25 | if (wren_a && byteena_a[0]) mem0[address_a] <= #1 data_a[ 8-1:0];
26 | if (wren_a && byteena_a[1]) mem1[address_a] <= #1 data_a[16-1:8];
27 | q_a[ 8-1:0] <= #1 mem0[address_a];
28 | q_a[16-1:8] <= #1 mem1[address_a];
29 | end
30 |
31 | // port b
32 | always @ (posedge clock) begin
33 | if (wren_b && byteena_b[0]) mem0[address_b] <= #1 data_b[ 8-1:0];
34 | if (wren_b && byteena_b[1]) mem1[address_b] <= #1 data_b[16-1:8];
35 | q_b[ 8-1:0] <= #1 mem0[address_b];
36 | q_b[16-1:8] <= #1 mem1[address_b];
37 | end
38 |
39 | endmodule
40 |
41 |
--------------------------------------------------------------------------------
/lib/io/generic_output.v:
--------------------------------------------------------------------------------
1 | /********************************************/
2 | /* generic_output.v */
3 | /* A generic implementation of outputs */
4 | /* (LEDs, ...) */
5 | /* */
6 | /* 2012, rok.krajnc@gmail.com */
7 | /********************************************/
8 |
9 |
10 | module generic_output #(
11 | parameter OW = 1, // output width
12 | parameter DS = 1'b0, // default (off) state
13 | parameter DBG = 0 // debug output
14 | )(
15 | output wire [ OW-1:0] i
16 | );
17 |
18 |
19 |
20 | ////////////////////////////////////////
21 | // logic //
22 | ////////////////////////////////////////
23 |
24 | reg [ OW-1:0] state_old = {OW{DS}};
25 |
26 | always @ (i) begin
27 | if (i != state_old) begin
28 | if (DBG) $display ("BENCH : %M : %t : changing state from [%b] to [%b].", $time, state_old, i);
29 | state_old = #1 i;
30 | end
31 | end
32 |
33 |
34 |
35 | ////////////////////////////////////////
36 | // tasks //
37 | ////////////////////////////////////////
38 |
39 | //// read ////
40 | task read;
41 | output [ OW-1:0] data;
42 | begin
43 | data = state_old;
44 | end
45 | endtask
46 |
47 |
48 |
49 | endmodule
50 |
51 |
--------------------------------------------------------------------------------
/amiga_sw/WheelDriver/Server.c:
--------------------------------------------------------------------------------
1 |
2 | #include
3 |
4 | #include "WheelDriver.h"
5 |
6 |
7 | extern void AddLongAtomic(long *a,long v);
8 |
9 |
10 | void WheelDriver_Server(struct WheelDriverContext *wdc)
11 | {
12 | static long old_wheel = 0;
13 | long new_wheel = 0;
14 | long sum;
15 | int overflow = 0;
16 |
17 |
18 | /* Read wheel events, middle and fourth buttons from hardware here. */
19 | new_wheel = *((volatile long *)(0xdff1f0));
20 | sum = old_wheel + new_wheel;
21 | if (new_wheel < 0 ? sum > old_wheel : sum < old_wheel) overflow = 1;
22 |
23 | if (new_wheel > old_wheel) AddLongAtomic(&wdc->WheelCounter,-1);
24 | if (new_wheel < old_wheel) AddLongAtomic(&wdc->WheelCounter,1);
25 |
26 | old_wheel = new_wheel;
27 |
28 | /*
29 | if( middle button is pressed )
30 | wdc->ButtonStatus|=1; should atomic; will be cleared with an "and" in the main task.
31 | if( fourth button is pressed )
32 | wdc->ButtonStatus|=2;
33 |
34 | if( scroll up - or is it down? I can't remember now! )
35 | AddLongAtomic(&wdc->WheelCounter,1);
36 | if( scroll the other way! )
37 | AddLongAtomic(&wdc->WheelCounter,-1);
38 | */
39 |
40 | if((wdc->ButtonStatus!=wdc->PreviousButtons)||(wdc->WheelCounter)) /* Is there anything we need to act upon? */
41 | Signal(wdc->SigTask,wdc->Signals);
42 | }
43 |
44 |
--------------------------------------------------------------------------------
/rtl/sdram/sdram.qip:
--------------------------------------------------------------------------------
1 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) sdram_ctrl.v]
2 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) cpu_cache_new.v]
3 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) cpu_cache.v]
4 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) dpram_inf_256x32.v]
5 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) dpram_inf_be_2048x16.v]
6 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) dpram_inf_be_1024x32.v]
7 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) dpram_256x32.v]
8 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) dpram_be_1024x16.v]
9 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) dpram_be_1024x32.v]
10 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) dpram_be_2048x16.v]
11 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) tpram_be_512x16.v]
12 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) tpram_inf_128x32.v]
13 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) tpram_inf_be_512x16.v]
14 | set_global_assignment -name VERILOG_FILE [file join $::quartus(qip_path) tpram_128x32.v]
15 |
16 |
--------------------------------------------------------------------------------
/fw/ctrl_boot_832/spi.h:
--------------------------------------------------------------------------------
1 | #ifndef SPI_H
2 | #define SPI_H
3 |
4 | #define SPIBASE 0xffffffe0
5 | #define HW_SPI(x) *(volatile unsigned char *)(SPIBASE+x)
6 |
7 | /* SPI registers */
8 | #define HW_SPI_CS 0x07
9 | #define HW_SPI_DATA 0x03 /* Blocks on both reads and writes, making BUSY signal redundant. */
10 | #define HW_SPI_SPEED 0x0b
11 |
12 | #define EnableOsd() HW_SPI(HW_SPI_CS)=0x20
13 | #define DisableOsd() HW_SPI(HW_SPI_CS)=0x21
14 |
15 | #define EnableCard() HW_SPI(HW_SPI_CS)=0x02
16 | #define DisableCard() HW_SPI(HW_SPI_CS)=0x03
17 |
18 | #define SPI_slow() HW_SPI(HW_SPI_SPEED)=0xef
19 | #define SPI_fast() HW_SPI(HW_SPI_SPEED)=0x07
20 |
21 | #define OSD_CMD_WR 0x1c
22 |
23 | #define OSD_CMD_RST 0x08
24 |
25 | #define SPI_RST_USR 0x1
26 | #define SPI_RST_CPU 0x2
27 | #define SPI_CPU_HLT 0x4
28 |
29 |
30 | #define OSD_CMD_CHIP 0x04
31 |
32 | #define CONFIG_TURBO 1
33 | #define CONFIG_NTSC 2
34 | #define CONFIG_A1000 4
35 | #define CONFIG_ECS 8
36 | #define CONFIG_AGA 16
37 |
38 | #define PLATFORM (*(volatile unsigned short *)0xffffffc2)
39 | #define PLATFORM_SCANDOUBLER 0
40 |
41 |
42 |
43 | int spi_init();
44 | int sd_read_sector(unsigned long lba,unsigned char *buf);
45 | int sd_write_sector(unsigned long lba,unsigned char *buf); // FIXME - stub
46 |
47 | #endif
48 |
--------------------------------------------------------------------------------
/amiga_sw/rtg/README:
--------------------------------------------------------------------------------
1 |
2 | Experimental P96 driver for the Minimig FPGA core.
3 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4 | By Alastair M. Robinson
5 | Huge thanks to the Replay team for releasing their own
6 | P96 driver as open-source - this driver is based heavily
7 | upon their work, and is thus under the same license - LGPL2.1.
8 |
9 |
10 | Installation
11 | ~~~~~~~~~~~~
12 |
13 | * Install P96 using its installer. You'll be prompted to pick a card
14 | (any card!) - it shouldn't matter which you choose, but I'll
15 | assume for the rest of these instructions that you chose PicassoIV)
16 |
17 | The P96 installer will create a new monitor file in Devs:Monitors
18 |
19 | * Rename the newly-created "PicassoIV" monitor file to "Minimig"
20 |
21 | * Edit the monitor file's tooltypes, changing the BOARDTYPE tooltype
22 | to minimig then save the changes.
23 |
24 | * Copy the minimig.card file to libs:picasso96/
25 |
26 | * Optionally, copy the Picasso96Settings file to Devs:
27 | (The Picasso96Settings file contains some pre-defined screenmodes
28 | which all work nicely on my Dell U2311H monitor - but may need
29 | tweaking, or just outright fail to work on other monitors.)
30 |
31 | * Reboot, and you should be able to run Picasso96Mode to try out the
32 | various screenmodes, or select them from within applications.
33 |
34 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | # MINIMIG-MIST
2 | # top makefile
3 | # 2015, rok.krajnc@gmail.com
4 | # 2020, AMR
5 |
6 | ### boards ###
7 | BOARDS?=mist chameleonv1 chameleonv2 de10_lite de0_nano
8 |
9 | ### release ###
10 | RELEASE?=minimig-mist-test
11 |
12 | ### paths ###
13 | REL_DIR = rel
14 | FW_DIR = fw
15 | FPGA_DIR = fpga
16 | FW_SRC_DIR = $(FW_DIR)
17 | FPGA_SRC_DIR = $(FPGA_DIR)
18 |
19 | # all
20 | all: dirs
21 | @echo Building all ...
22 | @make fw
23 | @make fpga
24 | @echo DONE building all!
25 |
26 | # directories
27 | dirs: Makefile
28 | @echo Creating release dirs $(REL_DIR)/$(RELEASE) ...
29 | @mkdir -p $(REL_DIR)
30 |
31 |
32 | # fw
33 | fw: Makefile dirs
34 | @echo Building firmware in $(FW_SRC_DIR) ...
35 | @$(MAKE) -C $(FW_SRC_DIR) $(BUILD_OPT)
36 |
37 |
38 | # fpga
39 | fpga: Makefile dirs
40 | cd rtl/minimig; \
41 | quartus_sh -t ../../tcl/build_id.tcl
42 | @for BOARD in ${BOARDS}; do \
43 | echo "Building $(FPGA_SRC_DIR)/$$BOARD ..."; \
44 | make -C fpga/$$BOARD; \
45 | done
46 | @for BOARD in ${BOARDS}; do \
47 | grep Design-wide\ TNS fpga/$$BOARD/*.sta.rpt;\
48 | done
49 | # @$(MAKE) -C $(FPGA_SRC_DIR) $(BUILD_OPT)
50 | # @cp $(FPGA_BIN_FILES) $(FPGA_REL_DIR)/
51 |
52 |
53 | # clean
54 | clean:
55 | @echo Clearing release dir ...
56 | @$(MAKE) -C $(FW_SRC_DIR) clean
57 | @$(MAKE) -C $(FPGA_SRC_DIR) clean
58 |
59 |
--------------------------------------------------------------------------------
/fpga/chameleonv2/MinimigAGA_TC64V2.qpf:
--------------------------------------------------------------------------------
1 | # -------------------------------------------------------------------------- #
2 | #
3 | # Copyright (C) 1991-2009 Altera Corporation
4 | # Your use of Altera Corporation's design tools, logic functions
5 | # and other software and tools, and its AMPP partner logic
6 | # functions, and any output files from any of the foregoing
7 | # (including device programming or simulation files), and any
8 | # associated documentation or information are expressly subject
9 | # to the terms and conditions of the Altera Program License
10 | # Subscription Agreement, Altera MegaCore Function License
11 | # Agreement, or other applicable license agreement, including,
12 | # without limitation, that your use is for the sole purpose of
13 | # programming logic devices manufactured by Altera and sold by
14 | # Altera or its authorized distributors. Please refer to the
15 | # applicable agreement for further details.
16 | #
17 | # -------------------------------------------------------------------------- #
18 | #
19 | # Quartus II
20 | # Version 9.0 Build 184 04/29/2009 Service Pack 1 SJ Web Edition
21 | # Date created = 20:32:22 April 24, 2011
22 | #
23 | # -------------------------------------------------------------------------- #
24 |
25 | QUARTUS_VERSION = "9.0"
26 | DATE = "20:32:22 April 24, 2011"
27 |
28 | # Revisions
29 |
30 | PROJECT_REVISION = "MinimigAGA_TC64V2"
31 |
--------------------------------------------------------------------------------
/fpga/mist/minimig_mist.qpf:
--------------------------------------------------------------------------------
1 | # -------------------------------------------------------------------------- #
2 | #
3 | # Copyright (C) 1991-2013 Altera Corporation
4 | # Your use of Altera Corporation's design tools, logic functions
5 | # and other software and tools, and its AMPP partner logic
6 | # functions, and any output files from any of the foregoing
7 | # (including device programming or simulation files), and any
8 | # associated documentation or information are expressly subject
9 | # to the terms and conditions of the Altera Program License
10 | # Subscription Agreement, Altera MegaCore Function License
11 | # Agreement, or other applicable license agreement, including,
12 | # without limitation, that your use is for the sole purpose of
13 | # programming logic devices manufactured by Altera and sold by
14 | # Altera or its authorized distributors. Please refer to the
15 | # applicable agreement for further details.
16 | #
17 | # -------------------------------------------------------------------------- #
18 | #
19 | # Quartus II 64-Bit
20 | # Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition
21 | # Date created = 20:05:12 September 12, 2020
22 | #
23 | # -------------------------------------------------------------------------- #
24 |
25 | QUARTUS_VERSION = "13.0"
26 | DATE = "20:05:12 September 12, 2020"
27 |
28 | # Revisions
29 |
30 | PROJECT_REVISION = "minimig_mist"
31 |
--------------------------------------------------------------------------------
/doc/amiga/ahi/Aros_Developer_AHIDrivers - Wikibooks, open books for an open world_files/index(12).php:
--------------------------------------------------------------------------------
1 | $.fn.slideshow = ( function() {
2 | return this.each( function() {
3 | var $ss = $(this), $sl = $ss.children( '.slide' ), $actions;
4 |
5 | if ( $sl.length < 2 ) {
6 | return;
7 | }
8 |
9 | $sl.slice(1).hide();
10 | $actions = $('
');
11 | $ss.data( 'slides', { 'at': 0, 'total': $sl.length }).append( $actions ).click( function(e) {
12 | var $where = $( e.target ), $ss, $sl, data;
13 |
14 | if ( $where.is( '.slide-prev' ) ) {
15 | e.stopPropagation();
16 | $ss = $(this); $sl = $ss.children( '.slide' ); data = $ss.data( 'slides' );
17 | if ( data.at > 0 ) {
18 | --data.at;
19 | $sl.eq( data.at + 1).fadeOut(1000).end().eq( data.at ).delay(1000).fadeIn(1000);
20 | $ss.data( 'slides', data );
21 | }
22 | } else if ( $where.is( '.slide-next' ) ) {
23 | e.stopPropagation();
24 | $ss = $(this); $sl = $ss.children( '.slide' ); data = $ss.data( 'slides' );
25 | if ( data.at < data.total - 1 ) {
26 | ++data.at;
27 | $sl.eq( data.at - 1).fadeOut(1000).end().eq( data.at ).delay(1000).fadeIn(1000);
28 | $ss.data( 'slides', data );
29 | }
30 | }
31 | });
32 | });
33 | });
34 |
35 | $(document).ready( function() { $( '.slides' ).slideshow(); } );
--------------------------------------------------------------------------------
/fpga/de10_lite/minimig_de10.qpf:
--------------------------------------------------------------------------------
1 | # -------------------------------------------------------------------------- #
2 | #
3 | # Copyright (C) 1991-2012 Altera Corporation
4 | # Your use of Altera Corporation's design tools, logic functions
5 | # and other software and tools, and its AMPP partner logic
6 | # functions, and any output files from any of the foregoing
7 | # (including device programming or simulation files), and any
8 | # associated documentation or information are expressly subject
9 | # to the terms and conditions of the Altera Program License
10 | # Subscription Agreement, Altera MegaCore Function License
11 | # Agreement, or other applicable license agreement, including,
12 | # without limitation, that your use is for the sole purpose of
13 | # programming logic devices manufactured by Altera and sold by
14 | # Altera or its authorized distributors. Please refer to the
15 | # applicable agreement for further details.
16 | #
17 | # -------------------------------------------------------------------------- #
18 | #
19 | # Quartus II 32-bit
20 | # Version 12.0 Build 232 07/05/2012 Service Pack 1 SJ Web Edition
21 | # Date created = 20:34:50 September 08, 2012
22 | #
23 | # -------------------------------------------------------------------------- #
24 |
25 | QUARTUS_VERSION = "12.0"
26 | DATE = "20:34:50 September 08, 2012"
27 |
28 | # Revisions
29 |
30 | PROJECT_REVISION = "minimig_de10"
31 |
--------------------------------------------------------------------------------
/fpga/chameleonv1/MinimigAGA_TC64V1.qpf:
--------------------------------------------------------------------------------
1 | # -------------------------------------------------------------------------- #
2 | #
3 | # Copyright (C) 1991-2013 Altera Corporation
4 | # Your use of Altera Corporation's design tools, logic functions
5 | # and other software and tools, and its AMPP partner logic
6 | # functions, and any output files from any of the foregoing
7 | # (including device programming or simulation files), and any
8 | # associated documentation or information are expressly subject
9 | # to the terms and conditions of the Altera Program License
10 | # Subscription Agreement, Altera MegaCore Function License
11 | # Agreement, or other applicable license agreement, including,
12 | # without limitation, that your use is for the sole purpose of
13 | # programming logic devices manufactured by Altera and sold by
14 | # Altera or its authorized distributors. Please refer to the
15 | # applicable agreement for further details.
16 | #
17 | # -------------------------------------------------------------------------- #
18 | #
19 | # Quartus II 64-Bit
20 | # Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition
21 | # Date created = 22:37:57 August 24, 2020
22 | #
23 | # -------------------------------------------------------------------------- #
24 |
25 | QUARTUS_VERSION = "13.0"
26 | DATE = "22:37:57 August 24, 2020"
27 |
28 | # Revisions
29 |
30 | PROJECT_REVISION = "MinimigAGA_TC64V1"
31 |
--------------------------------------------------------------------------------
/fw/ctrl_832/rafile.h:
--------------------------------------------------------------------------------
1 | #ifndef RAFILE_H
2 | #define RAFILE_H
3 |
4 | /* Utility functions to provide the Minimig OSD code with file access
5 | at single-byte rather than 512-byte-block granularity.
6 | Copyright (c) 2012 by Alastair M. Robinson
7 |
8 | Contributed to the Minimig project, which is free software;
9 | you can redistribute it and/or modify it under the terms of
10 | the GNU General Public License as published by the Free Software Foundation;
11 | either version 3 of the License, or (at your option) any later version.
12 |
13 | Minimig is distributed in the hope that it will be useful,
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | GNU General Public License for more details.
17 |
18 | You should have received a copy of the GNU General Public License
19 | along with this program. If not, see .
20 | */
21 |
22 | #include "fat.h"
23 |
24 | typedef struct
25 | {
26 | fileTYPE file;
27 | unsigned long size;
28 | unsigned long ptr;
29 | unsigned char buffer[512]; // Each RandomAccessFile has its own sector_buffer
30 | } RAFile;
31 |
32 | int RARead(RAFile *file,unsigned char *pBuffer, unsigned long bytes);
33 | int RAReadLine(RAFile *file,unsigned char *pBuffer, unsigned long bytes);
34 | int RASeek(RAFile *file,unsigned long offset,unsigned long origin);
35 | int RAOpen(RAFile *file,const char *filename);
36 | #endif
37 |
--------------------------------------------------------------------------------
/fw/testbed/rafile.h:
--------------------------------------------------------------------------------
1 | #ifndef RAFILE_H
2 | #define RAFILE_H
3 |
4 | /* Utility functions to provide the Minimig OSD code with file access
5 | at single-byte rather than 512-byte-block granularity.
6 | Copyright (c) 2012 by Alastair M. Robinson
7 |
8 | Contributed to the Minimig project, which is free software;
9 | you can redistribute it and/or modify it under the terms of
10 | the GNU General Public License as published by the Free Software Foundation;
11 | either version 3 of the License, or (at your option) any later version.
12 |
13 | Minimig is distributed in the hope that it will be useful,
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | GNU General Public License for more details.
17 |
18 | You should have received a copy of the GNU General Public License
19 | along with this program. If not, see .
20 | */
21 |
22 | #include "fat.h"
23 |
24 | typedef struct
25 | {
26 | fileTYPE file;
27 | unsigned long size;
28 | unsigned long ptr;
29 | unsigned char buffer[512]; // Each RandomAccessFile has its own sector_buffer
30 | } RAFile;
31 |
32 | int RARead(RAFile *file,unsigned char *pBuffer, unsigned long bytes);
33 | int RAReadLine(RAFile *file,unsigned char *pBuffer, unsigned long bytes);
34 | int RASeek(RAFile *file,unsigned long offset,unsigned long origin);
35 | int RAOpen(RAFile *file,const char *filename);
36 | #endif
37 |
--------------------------------------------------------------------------------
/rtl/audio/AudioMix.vhd:
--------------------------------------------------------------------------------
1 | -- A dirty audio mixer which avoids attenuation by clipping extremities
2 | --
3 | -- Copyright 2020 by Alastair M. Robinson
4 |
5 | library IEEE;
6 | use IEEE.STD_LOGIC_1164.ALL;
7 | use IEEE.numeric_std.ALL;
8 |
9 | entity AudioMix is
10 | port
11 | (
12 | clk : in std_logic;
13 | reset_n : in std_logic;
14 | audio_in_l1 : in signed(15 downto 0);
15 | audio_in_l2 : in signed(15 downto 0);
16 | audio_in_r1 : in signed(15 downto 0);
17 | audio_in_r2 : in signed(15 downto 0);
18 | audio_l : out signed(15 downto 0);
19 | audio_r : out signed(15 downto 0)
20 | );
21 | end entity;
22 |
23 | architecture rtl of AudioMix is
24 |
25 | signal in1 : signed(16 downto 0);
26 | signal in2 : signed(16 downto 0);
27 | signal sum : signed(16 downto 0);
28 | signal overflow : std_logic;
29 | signal clipped : signed(16 downto 0);
30 | signal toggle : std_logic;
31 |
32 | begin
33 |
34 | in1(16)<=in1(15);
35 | in2(16)<=in2(15);
36 |
37 | in1(15 downto 0)<=audio_in_l1 when toggle='0' else audio_in_r1;
38 | in2(15 downto 0)<=audio_in_l2 when toggle='0' else audio_in_r2;
39 |
40 | sum<=in1+in2;
41 | overflow<=sum(15) xor sum(16);
42 |
43 | clipped<=sum when overflow='0' else (others=>sum(16));
44 |
45 | process(clk)
46 | begin
47 | if rising_edge(clk) then
48 | if toggle='0' then
49 | audio_l<=clipped(15 downto 0);
50 | else
51 | audio_r<=clipped(15 downto 0);
52 | end if;
53 | toggle<=not toggle;
54 | end if;
55 | end process;
56 |
57 |
58 | end architecture;
--------------------------------------------------------------------------------
/fw/testbed/malloc.h:
--------------------------------------------------------------------------------
1 | #ifndef MALLOC_H
2 | #define MALLOC_H
3 |
4 | /*
5 | * malloc.h
6 | *
7 | * Internals for the memory allocator
8 | */
9 |
10 | // #include
11 | #include
12 |
13 | #ifdef __cplusplus
14 | extern "C" {
15 | #endif
16 |
17 | /*
18 | * This structure should be a power of two. This becomes the
19 | * alignment unit.
20 | */
21 | struct free_arena_header;
22 |
23 | struct arena_header {
24 | int type;
25 | size_t size;
26 | struct free_arena_header *next, *prev;
27 | };
28 |
29 | #ifdef DEBUG_MALLOC
30 | #define ARENA_TYPE_USED 0x64e69c70
31 | #define ARENA_TYPE_FREE 0x012d610a
32 | #define ARENA_TYPE_HEAD 0x971676b5
33 | #define ARENA_TYPE_DEAD 0xeeeeeeee
34 | #else
35 | #define ARENA_TYPE_USED 0
36 | #define ARENA_TYPE_FREE 1
37 | #define ARENA_TYPE_HEAD 2
38 | #endif
39 |
40 | #define MALLOC_CHUNK_MASK 511
41 |
42 | #define ARENA_SIZE_MASK (~(sizeof(struct arena_header)-1))
43 |
44 | /*
45 | * This structure should be no more than twice the size of the
46 | * previous structure.
47 | */
48 | struct free_arena_header {
49 | struct arena_header a;
50 | struct free_arena_header *next_free, *prev_free;
51 | };
52 |
53 | // extern char heap_low, heap_top; // Take the addresses of these.
54 |
55 | void malloc_add(void *p,size_t size);
56 |
57 | void *malloc(size_t);
58 | void *calloc(int nmemb,size_t size);
59 | void free(void *m);
60 | int availmem();
61 |
62 | void malloc_dump();
63 |
64 | #ifdef __cplusplus
65 | }
66 | #endif
67 |
68 | #endif
69 |
--------------------------------------------------------------------------------
/fw/ctrl_832/fdd.h:
--------------------------------------------------------------------------------
1 | #ifndef FDD_H
2 | #define FDD_H
3 |
4 | // floppy disk interface defs
5 | #define CMD_RDTRK 0x01
6 | #define CMD_WRTRK 0x02
7 |
8 | // floppy status
9 | #define DSK_INSERTED 0x01 /*disk is inserted*/
10 | #define DSK_WRITABLE 0x10 /*disk is writable*/
11 |
12 | #define MAX_TRACKS (83*2)
13 |
14 | typedef struct
15 | {
16 | unsigned char status; /*status of floppy*/
17 | unsigned char tracks; /*number of tracks*/
18 | unsigned long cache[MAX_TRACKS]; /*cluster cache*/
19 | unsigned long cluster_offset; /*cluster offset to handle tricky loaders*/
20 | unsigned char sector_offset; /*sector offset to handle tricky loaders*/
21 | unsigned char track; /*current track*/
22 | unsigned char track_prev; /*previous track*/
23 | unsigned char motor;
24 | char name[22]; /*floppy name*/
25 | } adfTYPE;
26 |
27 | extern adfTYPE df[4]; // drive 0 information structure
28 |
29 | void SectorGapToFpga(void);
30 | void SectorHeaderToFpga(unsigned char n, unsigned char dsksynch, unsigned char dsksyncl);
31 | //unsigned short SectorToFpga(unsigned char sector, unsigned char track, unsigned char dsksynch, unsigned char dsksyncl);
32 | void ReadTrack(adfTYPE *drive);
33 | unsigned char FindSync(adfTYPE *drive);
34 | unsigned char GetHeader(unsigned int *pTrack, unsigned int *pSector);
35 | unsigned char GetData(void);
36 | void WriteTrack(adfTYPE *drive);
37 | void UpdateDriveStatus(void);
38 | void HandleFDD(unsigned char c1, unsigned char c2, unsigned char c3, unsigned char c4);
39 |
40 | #endif
41 |
42 |
--------------------------------------------------------------------------------
/bench/lcd/lcd_tb.v:
--------------------------------------------------------------------------------
1 | /* lcd_tb.v */
2 |
3 |
4 | `timescale 1ns/1ps
5 |
6 |
7 | module lcd_tb();
8 |
9 |
10 | reg clk;
11 | reg rst;
12 |
13 | wire sof;
14 | wire [ 4-1:0] r;
15 | wire [ 4-1:0] g;
16 | wire [ 4-1:0] b;
17 | wire [ 16-1:0] lcd_dat;
18 | wire lcd_cs;
19 | wire lcd_rs;
20 | wire lcd_wr;
21 | wire lcd_rd;
22 | wire lcd_res;
23 |
24 |
25 | //// clock ////
26 | `define CLK_HP 17.857
27 | initial begin
28 | clk = 0;
29 | forever #`CLK_HP clk = ~clk;
30 | end
31 |
32 |
33 | //// reset ////
34 | initial begin
35 | rst = 1;
36 | repeat (10) @ (posedge clk); #1;
37 | rst = 0;
38 | end
39 |
40 |
41 | //// stop ////
42 | initial begin
43 | $display("LCD bench starting ...");
44 | repeat(1000) @ (posedge clk);
45 | $display("LCD bench stopping ...");
46 | $finish;
47 | end
48 |
49 | initial begin
50 | wait(lcd.init_cnt == 'd162);
51 | repeat(10) @ (posedge clk); #1;
52 | force sof = 1;
53 | @ (posedge clk); #1;
54 | release sof;
55 | end
56 |
57 |
58 | //// DUT ////
59 | lcd lcd(
60 | .clk (clk ),
61 | .rst (rst ),
62 | .sof (sof ),
63 | .r (r ),
64 | .g (g ),
65 | .b (b ),
66 | .lcd_dat (lcd_dat ),
67 | .lcd_cs (lcd_cs ),
68 | .lcd_rs (lcd_rs ),
69 | .lcd_wr (lcd_wr ),
70 | .lcd_rd (lcd_rd ),
71 | .lcd_res (lcd_res )
72 | );
73 |
74 |
75 | endmodule
76 |
77 |
--------------------------------------------------------------------------------
/sw/hex2mif/hex2mif.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/python
2 |
3 |
4 | import sys
5 | from optparse import OptionParser
6 |
7 |
8 | # get commandline options & arguments
9 | usage = "Usage: %prog [options] in.hex out.mif"
10 | parser = OptionParser(usage=usage)
11 | parser.add_option("-w", "--data-width", dest="dw", action="store", default="32", help="Force use of this many data bits")
12 | (options, args) = parser.parse_args()
13 |
14 | # parse args
15 | if (len(args) != 2) : parser.error("Invalid number of arguments.\n")
16 | fin = args[0]
17 | fon = args[1]
18 |
19 |
20 | # line counter
21 | line_cnt = 0
22 |
23 | # output
24 | out = ""
25 |
26 | # open input file
27 | with open(fin, 'r') as f:
28 | for line in f:
29 | line = line[0:len(line)-1]
30 | if (line != ""):
31 | #val = int(line, 0)
32 | out = out + " %x : %s;\n" % (line_cnt, line)
33 | line_cnt = line_cnt + 1
34 |
35 |
36 | # header
37 | header = ""
38 | header = header + "-- Memory Initialization File\n"
39 | header = header + "-- Generated by hex2mif.py\n"
40 | header = header + "-- From: %s\n\n" % fin
41 | header = header + "DEPTH = %d;\n" % line_cnt
42 | header = header + "WIDTH = %d;\n\n" % int(options.dw,0)
43 | header = header + "ADDRESS_RADIX = HEX;\n"
44 | header = header + "DATA_RADIX = HEX;\n\n"
45 | header = header + "CONTENT\n BEGIN\n"
46 |
47 | # footer
48 | footer = " END;\n"
49 |
50 | # add header + out + footer
51 | out = header + out + footer
52 |
53 |
54 | # write
55 | with open(fon, 'w') as f:
56 | f.write(out)
57 |
58 |
59 | # end
60 |
61 |
--------------------------------------------------------------------------------
/doc/amiga/ahi/Aros_Developer_AHIDrivers - Wikibooks, open books for an open world_files/index(4).php:
--------------------------------------------------------------------------------
1 | // Navigate Tabs. Allows for lots of information to be displayed on a page in a more compact form.
2 | // Maintained by [[User:Darklama]]
3 |
4 | function Navigate_Tabs()
5 | {
6 | function clicked_tab( e )
7 | {
8 | var $target = $( e.target ), id = e.target.hash;
9 |
10 | if ( !$target.is( 'a' ) || !id ) {
11 | return true;
12 | }
13 |
14 | $target = $(this).siblings( id );
15 |
16 | if ( !$target.hasClass( 'contents' ) || !$target.parent().hasClass( 'navtabs' ) ) {
17 | return true;
18 | }
19 |
20 | e.preventDefault();
21 |
22 | $target.parent().children( '.tabs' ).find( 'a' ).each( function() {
23 | if ( this.hash !== id ) {
24 | $(this).parent().addClass( 'inactive' ).removeClass( 'selected' );
25 | } else {
26 | $(this).parent().addClass( 'selected' ).removeClass( 'inactive' );
27 | }
28 | } );
29 |
30 | $target.parent().children( '.contents' ).hide();
31 | $target.show();
32 | }
33 |
34 | mw.util.$content.find('.navtabs').each( function() {
35 | var $this = $(this), $p = $this.children( 'p' ), $tabs, $any;
36 |
37 | // remove any surrounding paragraph first
38 | $p.has( '.tabs' ).before( $p.children( '.tabs' ) ).remove();
39 |
40 | // deal with clicks, and show default
41 | $tabs = $this.children( '.tabs' ).click( clicked_tab );
42 | $any = $tabs.children( '.selected' ).find('a[href^="#"]').click();
43 |
44 | if ( !$any.length ) {
45 | $tabs.children(':first-child').find('a[href^="#"]').click();
46 | }
47 | } );
48 | }
49 |
50 | $(document).ready(Navigate_Tabs);
--------------------------------------------------------------------------------
/rtl/minimig/minimig_bankmapper.v:
--------------------------------------------------------------------------------
1 | //This module maps physical 512KB blocks of every memory chip to different memory ranges in Amiga
2 |
3 |
4 | module minimig_bankmapper
5 | (
6 | input chip0, // chip ram select: 1st 512 KB block
7 | input chip1, // chip ram select: 2nd 512 KB block
8 | input chip2, // chip ram select: 3rd 512 KB block
9 | input chip3, // chip ram select: 4th 512 KB block
10 | input slow0, // slow ram select: 1st 512 KB block
11 | input slow1, // slow ram select: 2nd 512 KB block
12 | input slow2, // slow ram select: 3rd 512 KB block
13 | input kick, // Kickstart ROM address range select
14 | input kickext, // Kickstart extended ROM select
15 | input kick1mb, // 1MB Kickstart 'upper' half
16 | input cart, // Action Replay memory range select
17 | // input aron, // Action Replay enable
18 | input ecs, // ECS chipset enable
19 | input [3:0] memory_config, // memory configuration
20 | output reg [7:0] bank // bank select
21 | );
22 |
23 |
24 | always @(*)
25 | begin
26 | bank[7:4] = { kick , kickext, chip3 | chip2 | chip1 | chip0, kick1mb | slow0 | slow1 | slow2 | cart };
27 | case (memory_config[1:0])
28 | 2'b00 : bank[3:0] = { 1'b0, 1'b0, 1'b0, chip3 | chip2 | chip1 | chip0 }; // 0.5M CHIP
29 | 2'b01 : bank[3:0] = { 1'b0, 1'b0, chip3 | chip1, chip2 | chip0 }; // 1.0M CHIP
30 | 2'b10 : bank[3:0] = { 1'b0, chip2, chip1, chip0 }; // 1.5M CHIP
31 | 2'b11 : bank[3:0] = { chip3, chip2, chip1, chip0 }; // 2.0M CHIP
32 | endcase
33 | end
34 |
35 |
36 | endmodule
37 |
38 |
--------------------------------------------------------------------------------
/rtl/audio/audio_shifter.v:
--------------------------------------------------------------------------------
1 | /* audio_shifter.v */
2 |
3 |
4 | module audio_shifter(
5 | input wire clk, //32MHz
6 | input wire nreset,
7 | input wire mix,
8 | input wire [ 15-1:0] rdata,
9 | input wire [ 15-1:0] ldata,
10 | input wire exchan,
11 | output wire aud_bclk,
12 | output wire aud_daclrck,
13 | output wire aud_dacdat,
14 | output wire aud_xck
15 | );
16 |
17 |
18 | //// L-R mixer ////
19 |
20 | wire [ 16-1:0] rdata_mix;
21 | wire [ 16-1:0] ldata_mix;
22 |
23 | assign rdata_mix = {rdata[14], rdata} + {{2{ldata[14]}}, ldata[14:1]};
24 | assign ldata_mix = {ldata[14], ldata} + {{2{rdata[14]}}, rdata[14:1]};
25 |
26 | // data mux
27 | reg [16-1:0] rdata_mux;
28 | reg [16-1:0] ldata_mux;
29 |
30 | always @ (posedge clk) begin
31 | rdata_mux <= #1 (mix) ? rdata_mix : {rdata, rdata[13]};
32 | ldata_mux <= #1 (mix) ? ldata_mix : {ldata, ldata[13]};
33 | end
34 |
35 |
36 | //// audio output shifter ////
37 |
38 | reg [ 9-1:0] shiftcnt;
39 | reg [ 16-1:0] shift;
40 |
41 | always @(posedge clk, negedge nreset) begin
42 | if(~nreset)
43 | shiftcnt <= 9'd0;
44 | else
45 | shiftcnt <= shiftcnt - 9'd1;
46 | end
47 |
48 | always @ (posedge clk) begin
49 | if(~|shiftcnt[2:0]) begin
50 | if (~|shiftcnt[6:3])
51 | shift <= #1 (exchan ^ shiftcnt[7]) ? ldata_mux : rdata_mux;
52 | else
53 | shift <= #1 {shift[14:0], 1'b0};
54 | end
55 | end
56 |
57 |
58 | //// output ////
59 | assign aud_daclrck = shiftcnt[7];
60 | assign aud_bclk = ~shiftcnt[2];
61 | assign aud_xck = shiftcnt[0];
62 | assign aud_dacdat = shift[15];
63 |
64 |
65 | endmodule
66 |
67 |
--------------------------------------------------------------------------------
/sw/mkdrivesounds/mkdrivesounds.c:
--------------------------------------------------------------------------------
1 | #include
2 |
3 | enum DriveSound_Type {
4 | DRIVESOUND_INSERT=0,DRIVESOUND_EJECT,DRIVESOUND_MOTORSTART,DRIVESOUND_MOTORLOOP,DRIVESOUND_MOTORSTOP,
5 | DRIVESOUND_STEP1,DRIVESOUND_STEP2,DRIVESOUND_STEP3,DRIVESOUND_STEP4,
6 | DRIVESOUND_HDDSTEP1,DRIVESOUND_HDDSTEP2,DRIVESOUND_HDDSTEP3,DRIVESOUND_HDDSTEP4
7 | };
8 |
9 | int gains[]=
10 | {
11 | 75,75,75,75,80,160,170,165,161,16,21,18,15
12 | };
13 |
14 |
15 | void emit_longword_be(unsigned int v)
16 | {
17 | putchar((v>>24)&255);
18 | putchar((v>>16)&255);
19 | putchar((v>>8)&255);
20 | putchar(v&255);
21 | }
22 |
23 | unsigned char buffer[512];
24 |
25 | // Convert little endian to big endian
26 | int bufferswap(unsigned char *b,int c,int gain)
27 | {
28 | while(c>0)
29 | {
30 | int a=b[0] | (b[1]<<8);
31 | if(a&0x8000)
32 | a=-(0x10000-a);
33 | // Apply gain
34 | a=(a*gain)>>8;
35 | // Re-encode as S16BE
36 | b[0]=a>>8;
37 | b[1]=a&0xff;
38 | b+=2;
39 | c-=2;
40 | }
41 | }
42 |
43 |
44 | int main(int argc,char **argv)
45 | {
46 | int i;
47 | printf("DRIVESND");
48 | for(i=1;i0)
62 | {
63 | int r=fread(buffer,1,512,f);
64 | bufferswap(buffer,r,gains[i-1]);
65 | l-=r;
66 | fwrite(buffer,1,r,stdout);
67 | }
68 | }
69 | emit_longword_be(0);
70 | emit_longword_be(0);
71 | return(0);
72 | }
73 |
74 |
--------------------------------------------------------------------------------
/fw/ctrl_832/Makefile.68k:
--------------------------------------------------------------------------------
1 | # Supply these as parameters from higher up.
2 | TARGET=m68k-elf
3 | ARCH=68000
4 | DEFS=
5 | ID=_CA
6 |
7 | C_SRC=fat.c fdd.c fpga.c hardware.c hdd.c main.c menu.c mmc.c osd.c printf.c swap.c config.c rafile.c hexdump.c # small_printf.c
8 | KLIBC_SRC=vsnprintf.c sprintf.c memcpy.c memcmp.c strcpy.c strcat.c strncat.c strncmp.c strlen.c memset.c strncpy.c strchr.c
9 | A_SRC=startup_$(TARGET).s
10 |
11 | BUILD_DIR=$(TARGET)-build
12 | C_OBJ=$(patsubst %.c,$(BUILD_DIR)/%.o,$(C_SRC))
13 | LIBC_OBJ=$(patsubst %.c,$(BUILD_DIR)/%.o,$(KLIBC_SRC))
14 | A_OBJ=$(patsubst %.s,$(BUILD_DIR)/%.o,$(A_SRC))
15 | OBJ=$(C_OBJ) $(A_OBJ)
16 |
17 | CC=$(TARGET)-gcc
18 | AR=$(TARGET)-ar
19 | OBJCOPY=$(TARGET)-objcopy
20 | CFLAGS+=$(DEFS) -m$(ARCH) -Wall -Wno-char-subscripts -Os -fno-common -fomit-frame-pointer -I./include -DACTIONREPLAY_BROKEN
21 | LDFLAGS+=-m$(ARCH) -Xlinker -Map=menu.map -nostartfiles -nostdlib -lgcc -L$(BUILD_DIR)
22 |
23 | ELF=$(BUILD_DIR)/menu.elf
24 | OUTPUT=OSD$(ID)01.sys
25 | LINK_SCRIPT=osd_$(TARGET).ld
26 | LIBC_TARGET=$(BUILD_DIR)/libc.a
27 |
28 | all: $(BUILD_DIR) $(LIBC_TARGET) $(OUTPUT)
29 |
30 | clean:
31 | rm -rf $(BUILD_DIR) $(LIBC_TARGET) $(ELF) $(OUTPUT)
32 |
33 | $(LIBC_TARGET): $(LIBC_OBJ)
34 | $(AR) -r $(LIBC_TARGET) $(LIBC_OBJ)
35 |
36 | $(OUTPUT): $(ELF)
37 | $(OBJCOPY) -O binary $(ELF) $(OUTPUT)
38 |
39 | $(ELF): $(OBJ) $(LINK_SCRIPT)
40 | $(CC) -o $@ -T $(LINK_SCRIPT) $(OBJ) $(LIBC_OBJ) $(LDFLAGS)
41 |
42 | $(BUILD_DIR):
43 | mkdir $(BUILD_DIR)
44 |
45 | $(BUILD_DIR)/%.o: %.c
46 | $(CC) $(CFLAGS) -c -o $@ $<
47 |
48 | $(BUILD_DIR)/%.o: klibc/%.c
49 | $(CC) $(CFLAGS) -c -o $@ $<
50 |
51 | $(BUILD_DIR)/%.o: %.s
52 | $(CC) $(CFLAGS) -c -o $@ $<
53 |
54 |
--------------------------------------------------------------------------------
/rtl/minimig/agnus_blitter_minterm.v:
--------------------------------------------------------------------------------
1 | //Blitter minterm function generator
2 | //The minterm function generator takes , and
3 | //and checks every logic combination against the LF control byte.
4 | //If a combination is marked as 1 in the LF byte,the ouput will
5 | //also be 1,else the output is 0.
6 |
7 | module agnus_blitter_minterm
8 | (
9 | input [7:0] lf, //LF control byte
10 | input [15:0] ain, //A channel in
11 | input [15:0] bin, //B channel in
12 | input [15:0] cin, //C channel in
13 | output [15:0] out //function generator output
14 | );
15 |
16 | reg [15:0] mt0; //minterm 0
17 | reg [15:0] mt1; //minterm 1
18 | reg [15:0] mt2; //minterm 2
19 | reg [15:0] mt3; //minterm 3
20 | reg [15:0] mt4; //minterm 4
21 | reg [15:0] mt5; //minterm 5
22 | reg [15:0] mt6; //minterm 6
23 | reg [15:0] mt7; //minterm 7
24 |
25 | //Minterm generator for each bit. The code inside the loop
26 | //describes one bit. The loop is 'unrolled' by the
27 | //synthesizer to cover all 16 bits in the word.
28 | integer j;
29 | always @(ain or bin or cin or lf)
30 | for (j=15; j>=0; j=j-1)
31 | begin
32 | mt0[j] = ~ain[j] & ~bin[j] & ~cin[j] & lf[0];
33 | mt1[j] = ~ain[j] & ~bin[j] & cin[j] & lf[1];
34 | mt2[j] = ~ain[j] & bin[j] & ~cin[j] & lf[2];
35 | mt3[j] = ~ain[j] & bin[j] & cin[j] & lf[3];
36 | mt4[j] = ain[j] & ~bin[j] & ~cin[j] & lf[4];
37 | mt5[j] = ain[j] & ~bin[j] & cin[j] & lf[5];
38 | mt6[j] = ain[j] & bin[j] & ~cin[j] & lf[6];
39 | mt7[j] = ain[j] & bin[j] & cin[j] & lf[7];
40 | end
41 |
42 | //Generate function generator output by or-ing all
43 | //minterms together.
44 | assign out = mt0 | mt1 | mt2 | mt3 | mt4 | mt5 | mt6 | mt7;
45 |
46 |
47 | endmodule
48 |
49 |
--------------------------------------------------------------------------------
/fw/amiga_boot/Makefile:
--------------------------------------------------------------------------------
1 | # MINIMIG-DE1
2 | # amiga boot firmware
3 | # 2012, rok.krajnc@gmail.com
4 |
5 |
6 | ### paths ###
7 | # clear dir vars if these programs are in path
8 | VASM_DIR = ../../sw/vasm/
9 | HEX2MEM_DIR = ../../sw/hex2mem/
10 | HEX2MIF_DIR = ../../sw/hex2mif/
11 |
12 |
13 | ### programs ###
14 | VASM = $(VASM_DIR)vasmm68k_mot
15 | XXD = xxd
16 | HEX2MEM = $(HEX2MEM_DIR)hex2mem.py
17 | HEX2MIF = $(HEX2MIF_DIR)hex2mif.py
18 |
19 |
20 | ### flags ###
21 | ASMFLAGS=-m68000 -showopt -Fbin
22 | XXDFLAGS=-ps -c 2
23 | HEXFLAGS=-a 8 -s 256 -w 4
24 |
25 |
26 | ### variables ###
27 | BUILD_USER=\"$(USER)\"
28 | BUILD_T=$$(date +%Y-%m-%d)
29 | BUILD_TIME=\"$(BUILD_T)\"
30 | BUILD_N=$$(cat build_num.txt)
31 | BUILD_NUM=\"$(BUILD_N)\"
32 | BUILD_R=$$(git rev-parse --verify HEAD)
33 | BUILD_REV=\"$(BUILD_R)\"
34 |
35 | BINDIR=bin
36 | OBJDIR=obj
37 |
38 |
39 | ### files ###
40 |
41 | # asm sources
42 | ASM_SOURCES=amiga_boot.asm
43 |
44 |
45 | ### build rules ###
46 |
47 | # all
48 | all:
49 | @echo Making amiga_boot firmware ...
50 | @make bin
51 | @make bin/amiga_boot.v
52 | @make bin/amiga_boot.mif
53 |
54 | bin:
55 | @echo $@
56 | @mkdir -p $(BINDIR)
57 |
58 | bin/amiga_boot.bin : Makefile bin $(ASM_SOURCES)
59 | @echo $@
60 | @$(VASM) $(ASMFLAGS) $(ASM_SOURCES) -o $@
61 |
62 | bin/amiga_boot.hex : Makefile bin bin/amiga_boot.bin
63 | @echo $@
64 | @$(XXD) $(XXDFLAGS) $(@:.hex=.bin) > $@
65 |
66 | bin/amiga_boot.v : Makefile bin bin/amiga_boot.hex
67 | @echo $@
68 | @$(HEX2MEM) $(HEXFLAGS) $(@:.v=.hex) $@
69 |
70 | bin/amiga_boot.mif : bin/amiga_boot.hex
71 | @echo $@
72 | @$(HEX2MIF) -w 16 $(@:.mif=.hex) $@
73 |
74 | # clean
75 | clean:
76 | @echo clean
77 | @rm -rf ./$(BINDIR)
78 |
79 |
--------------------------------------------------------------------------------
/doc/amiga/ahi/Aros_Developer_AHIDrivers - Wikibooks, open books for an open world_files/load(3).php:
--------------------------------------------------------------------------------
1 | mw.loader.using('mediawiki.util',function(){if(mw.config.get('wgArticleId')===0&&mw.config.get('wgNamespaceNumber')===2){var titleParts=mw.config.get('wgPageName').split('/',3);if(titleParts.length==2){var userSkinPage=titleParts[0]+'/'+mw.config.get('skin');if(titleParts[1]==='skin.js'){window.location.href=mw.util.getUrl(userSkinPage+'.js');}else if(titleParts[1]=='skin.css'){window.location.href=mw.util.getUrl(userSkinPage+'.css');}}}mw.config.set('wgBookName',(mw.config.get('wgPageName').split('/',1)[0]||'').split(':',2).join(':'));importStylesheet('MediaWiki:Common.css/'+mw.config.get('wgBookName'));importScript('MediaWiki:Common.js/w/'+mw.config.get('wgPageName'));importScript('MediaWiki:Common.js/Relics.js');importScript('MediaWiki:Common.js/ExtraTools.js');importScript('MediaWiki:Common.js/CollapseElements.js');importScript('MediaWiki:Common.js/NavigationTabs.js');importScript('MediaWiki:Common.js/Displaytitle.js');importScript('MediaWiki:Common.js/Perbook.js');importScript(
2 | 'MediaWiki:Common.js/tabs.js');importScript('MediaWiki:Common.js/top.js');importScript('MediaWiki:Common.js/review.js');importScript('MediaWiki:Common.js/Categories.js');importScript('MediaWiki:Common.js/use.js');importScript('MediaWiki:Common.js/Slideshows.js');if(mw.config.get('wgCanonicalSpecialPageName')==='Watchlist'){importScript('MediaWiki:Common.js/WatchlistNotice.js');}else if($.inArray(mw.config.get('wgAction'),['edit','submit','upload'])!==-1){importScript('MediaWiki:Common.js/Special_characters.js');importScript('MediaWiki:Common.js/Toolbox.js');}});mw.loader.state({"site":"ready"});
3 | /* cache key: enwikibooks:resourceloader:filter:minify-js:7:e16978ddc3a5d40fd24d953a2509b7cd */
--------------------------------------------------------------------------------
/fw/romgen/romgen.c:
--------------------------------------------------------------------------------
1 | // zpuromgen.c
2 | //
3 | // Program to turn a binary file into a VHDL lookup table.
4 | // by Adam Pierce
5 | // 29-Feb-2008
6 | //
7 | // This software is free to use by anyone for any purpose.
8 | //
9 | // Modified by Alastair M. Robinson to output 8-bit data rather than 32
10 |
11 | #include
12 | #include
13 |
14 | typedef unsigned char BYTE;
15 |
16 | main(int argc, char **argv)
17 | {
18 | BYTE opcode[4];
19 | int fd;
20 | int addr = 0;
21 | ssize_t s;
22 |
23 | // Check the user has given us an input file.
24 | if(argc < 2)
25 | {
26 | printf("Usage: %s \n\n", argv[0]);
27 | return 1;
28 | }
29 |
30 | // Open the input file.
31 | fd = open(argv[1], 0);
32 | if(fd == -1)
33 | {
34 | perror("File Open");
35 | return 2;
36 | }
37 |
38 | while(1)
39 | {
40 | // Read 32 bits.
41 | // s = read(fd, opcode, 4);
42 | s = read(fd, opcode, 1);
43 | if(s == -1)
44 | {
45 | perror("File read");
46 | return 3;
47 | }
48 |
49 | if(s == 0)
50 | break; // End of file.
51 |
52 | // Output to STDOUT.
53 | // printf("%6d => x\"%02x%02x%02x%02x\",\n",
54 | // addr++, opcode[0], opcode[1],
55 | // opcode[2], opcode[3]);
56 | printf("%6d => x\"%02x\",\n",
57 | addr++, opcode[0]);
58 | }
59 |
60 | close(fd);
61 | return 0;
62 | }
63 |
64 |
--------------------------------------------------------------------------------
/rtl/minimig/minimig_syscontrol.v:
--------------------------------------------------------------------------------
1 | //syscontrol handles the startup of the FGPA,
2 | //after fpga config, it automatically does a global system reset and asserts boot.
3 | //the boot signal puts gary in a special mode so that the bootrom
4 | //is mapped into the system memory map. The firmware in the bootrom
5 | //then loads the kickstart via the diskcontroller into the kickstart ram area.
6 | //When kickstart has been loaded, the bootrom asserts bootdone by selecting both cia's at once.
7 | //This resets the system for a second time but it also de-asserts boot.
8 | //Thus, the system now boots as a regular amiga.
9 | //Subsequent resets by asserting mrst will not assert boot again.
10 | //
11 | // JB:
12 | // 2008-07-11 - reset to bootloader
13 | // 2009-03-13 - shorter reset
14 | // 2009-08-17 - reset generator modification
15 |
16 |
17 | module minimig_syscontrol
18 | (
19 | input clk, //bus clock
20 | input clk7_en,
21 | input cnt, //pulses for counting
22 | input mrst, //master/user reset input
23 | output reset //global synchronous system reset
24 | );
25 |
26 | //local signals
27 | reg smrst0, smrst1; //registered input
28 | reg [2:0] rst_cnt = 0; //reset timer SHOULD BE CLEARED BY CONFIG
29 | wire _rst; //local reset signal
30 |
31 | //asynchronous mrst input synchronizer
32 | always @(posedge clk) begin
33 | if (clk7_en) begin
34 | smrst0 <= mrst;
35 | smrst1 <= smrst0;
36 | end
37 | end
38 |
39 | //reset timer and mrst control
40 | always @(posedge clk) begin
41 | if (clk7_en) begin
42 | if (smrst1)
43 | rst_cnt <= 3'd0;
44 | else if (!_rst && cnt)
45 | rst_cnt <= rst_cnt + 3'd1;
46 | end
47 | end
48 |
49 | assign _rst = rst_cnt[2];
50 |
51 | //global reset output
52 | assign reset = ~_rst;
53 |
54 |
55 | endmodule
56 |
57 |
--------------------------------------------------------------------------------
/rtl/sdram/dpram_inf_be_1024x32.v:
--------------------------------------------------------------------------------
1 | // dpram_inf_be_1024x16.v
2 | // 2015, rok.krajnc@gmail.com
3 | // inferrable two-port memory with byte-enables
4 |
5 | module dpram_inf_be_1024x32 (
6 | input wire clock,
7 | input wire wren_a,
8 | input wire [ 4-1:0] byteena_a,
9 | input wire [ 10-1:0] address_a,
10 | input wire [ 32-1:0] data_a,
11 | output reg [ 32-1:0] q_a,
12 | input wire wren_b,
13 | input wire [ 4-1:0] byteena_b,
14 | input wire [ 10-1:0] address_b,
15 | input wire [ 32-1:0] data_b,
16 | output reg [ 32-1:0] q_b
17 | );
18 |
19 | // memory
20 | reg [8-1:0] mem0 [0:1024-1];
21 | reg [8-1:0] mem1 [0:1024-1];
22 | reg [8-1:0] mem2 [0:1024-1];
23 | reg [8-1:0] mem3 [0:1024-1];
24 |
25 | // port a
26 | always @ (posedge clock) begin
27 | if (wren_a && byteena_a[0]) mem0[address_a] <= #1 data_a[ 8-1: 0];
28 | if (wren_a && byteena_a[1]) mem1[address_a] <= #1 data_a[16-1: 8];
29 | if (wren_a && byteena_a[2]) mem2[address_a] <= #1 data_a[24-1:16];
30 | if (wren_a && byteena_a[3]) mem3[address_a] <= #1 data_a[32-1:24];
31 | q_a[ 8-1: 0] <= #1 mem0[address_a];
32 | q_a[16-1: 8] <= #1 mem1[address_a];
33 | q_a[24-1:16] <= #1 mem2[address_a];
34 | q_a[32-1:24] <= #1 mem3[address_a];
35 | end
36 |
37 | // port b
38 | always @ (posedge clock) begin
39 | if (wren_b && byteena_b[0]) mem0[address_b] <= #1 data_b[ 8-1: 0];
40 | if (wren_b && byteena_b[1]) mem1[address_b] <= #1 data_b[16-1: 8];
41 | if (wren_b && byteena_b[2]) mem2[address_b] <= #1 data_b[24-1:16];
42 | if (wren_b && byteena_b[3]) mem3[address_b] <= #1 data_b[32-1:24];
43 | q_b[ 8-1: 0] <= #1 mem0[address_b];
44 | q_b[16-1: 8] <= #1 mem1[address_b];
45 | q_b[24-1:16] <= #1 mem2[address_b];
46 | q_b[32-1:24] <= #1 mem3[address_b];
47 | end
48 |
49 | endmodule
50 |
51 |
--------------------------------------------------------------------------------
/rtl/chameleonv1/chameleon_autofire.vhd:
--------------------------------------------------------------------------------
1 | -- -----------------------------------------------------------------------
2 | --
3 | -- Turbo Chameleon
4 | --
5 | -- Multi purpose FPGA expansion for the Commodore 64 computer
6 | --
7 | -- -----------------------------------------------------------------------
8 | -- Copyright 2005-2010 by Peter Wendrich (pwsoft@syntiac.com)
9 | -- All Rights Reserved.
10 | --
11 | -- http://www.syntiac.com/chameleon.html
12 | -- -----------------------------------------------------------------------
13 | --
14 | -- Joystick autofire logic
15 | --
16 | -- -----------------------------------------------------------------------
17 |
18 | library IEEE;
19 | use IEEE.STD_LOGIC_1164.ALL;
20 | use IEEE.numeric_std.all;
21 |
22 | -- -----------------------------------------------------------------------
23 |
24 | entity chameleon_autofire is
25 | generic (
26 | autofire_period : integer := 75000
27 | );
28 | port (
29 | clk : in std_logic;
30 | ena_1mhz : in std_logic;
31 |
32 | button_n : in std_logic;
33 | autofire_n : out std_logic
34 | );
35 | end entity;
36 |
37 | -- -----------------------------------------------------------------------
38 |
39 | architecture rtl of chameleon_autofire is
40 | signal counter : integer range 0 to autofire_period;
41 | signal autofire_reg : std_logic := '1';
42 | begin
43 | autofire_n <= autofire_reg;
44 |
45 | process(clk)
46 | begin
47 | if rising_edge(clk) then
48 | if button_n = '1' then
49 | counter <= 0;
50 | autofire_reg <= '1';
51 | elsif counter = 0 then
52 | counter <= autofire_period;
53 | autofire_reg <= not autofire_reg;
54 | elsif ena_1mhz = '1' then
55 | counter <= counter - 1;
56 | end if;
57 | end if;
58 | end process;
59 | end architecture;
60 |
61 |
--------------------------------------------------------------------------------
/bench/cpu_cache_sdram/tg68_ram.v:
--------------------------------------------------------------------------------
1 | // simple ram
2 | // 2014, rok.krajnc@gmail.com
3 |
4 |
5 | module tg68_ram #(
6 | parameter MS = 512
7 | )(
8 | input wire clk,
9 | input wire tg68_as,
10 | input wire [ 32-1:0] tg68_adr,
11 | input wire tg68_rw,
12 | input wire tg68_lds,
13 | input wire tg68_uds,
14 | input wire [ 16-1:0] tg68_dat_out,
15 | output wire [ 16-1:0] tg68_dat_in,
16 | output wire tg68_dtack
17 | );
18 |
19 | // memory
20 | reg [8-1:0] mem0 [0:MS-1];
21 | reg [8-1:0] mem1 [0:MS-1];
22 |
23 | // internal signals
24 | reg [16-1:0] mem_do = 0;
25 | reg trn = 1;
26 | reg ack = 1;
27 |
28 | // clear on start
29 | integer i;
30 | initial begin
31 | for (i=0; i
2 | #include
3 | #include
4 |
5 | int main()
6 | {
7 | unsigned int ddfseq;
8 |
9 | printf("old sequencer:\n");
10 | printf("ddfseq shres hires lores\n");
11 | for (ddfseq=0; ddfseq<8; ddfseq++) {
12 | unsigned int ddfseq_neg = (~ddfseq);
13 | unsigned int shres = (((ddfseq_neg&1)?1:0)<<0);
14 | unsigned int hires = (((ddfseq_neg&1)?1:0)<<1) | (((ddfseq_neg&2)?1:0)<<0);
15 | unsigned int lores = (((ddfseq_neg&1)?1:0)<<2) | (((ddfseq_neg&2)?1:0)<<1) | (((ddfseq_neg&4)?1:0)<<0);
16 | printf("%01d %01d %01d %01d\n", ddfseq, shres, hires, lores);
17 | }
18 | printf("\n");
19 |
20 | printf("new sequencer:\n");
21 | printf(" mode 1 = 2-fetch sequence (SHRES FMode = 0)\n");
22 | printf(" mode 2 = 4-fetch sequence (HRES FMode = 0, SHRES FMode = 1)\n");
23 | printf(" mode 3 = 8-fetch sequence (LRES FMode = 0, HRES FMode = 1, SHRES, FMode = 3)\n");
24 | printf(" mode 4 = 8-fetch sequence followed by 8 free cycles (LRES FMode = 1, HRES FMode = 3)\n");
25 | printf(" mode 5 = 8-fetch sequence followed by 24 free cycles (LRES FMode = 3)\n");
26 | printf("ddfseq 01 02 03 04 05\n");
27 | for (ddfseq=0; ddfseq<32; ddfseq++) {
28 | unsigned int ddfseq_neg = (~ddfseq);
29 | unsigned int m1 = (((ddfseq_neg&1)?1:0)<<0);
30 | unsigned int m2 = (((ddfseq_neg&1)?1:0)<<1) | (((ddfseq_neg&2)?1:0)<<0);
31 | unsigned int m3 = (((ddfseq_neg&1)?1:0)<<2) | (((ddfseq_neg&2)?1:0)<<1) | (((ddfseq_neg&4)?1:0)<<0);
32 | unsigned int m4 = (((ddfseq &8)?1:0)<<3) | (((ddfseq_neg&1)?1:0)<<2) | (((ddfseq_neg&2)?1:0)<<1) | (((ddfseq_neg&4)?1:0)<<0);
33 | unsigned int m5 = (((ddfseq &16)?1:0)<<4) | (((ddfseq &8)?1:0)<<3) | (((ddfseq_neg&1)?1:0)<<2) | (((ddfseq_neg&2)?1:0)<<1) | (((ddfseq_neg&4)?1:0)<<0);
34 | printf("%02d %02d %02d %02d %02d %02d\n", ddfseq, m1, m2, m3, m4, m5);
35 | }
36 |
37 |
38 | exit(EXIT_SUCCESS);
39 | }
40 |
41 |
--------------------------------------------------------------------------------
/rtl/io/sseg_decode.v:
--------------------------------------------------------------------------------
1 | /************************************************/
2 | /* sseg_decode */
3 | /* 2011, rok.krajnc@gmail.com */
4 | /* */
5 | /* decodes 8-bit number to hexadecimal display */
6 | /************************************************/
7 |
8 | // bits
9 | // 0
10 | // ___
11 | // | |
12 | // 5 |___| 1
13 | // | 6 |
14 | // 4 |___| 2
15 | // 3
16 |
17 |
18 | module sseg_decode #(
19 | parameter REG = 0, // register outputs
20 | parameter INV = 1 // invert outputs
21 | )(
22 | input wire clk,
23 | input wire rst,
24 | input wire [ 4-1:0] num, // input
25 | output wire [ 7-1:0] sseg // output
26 | );
27 |
28 |
29 | reg [ 7-1:0] sseg_decode;
30 |
31 |
32 | always @ (*)
33 | begin
34 | case(num)
35 | 4'h0 : sseg_decode = 7'b0111111;
36 | 4'h1 : sseg_decode = 7'b0000110;
37 | 4'h2 : sseg_decode = 7'b1011011;
38 | 4'h3 : sseg_decode = 7'b1001111;
39 | 4'h4 : sseg_decode = 7'b1100110;
40 | 4'h5 : sseg_decode = 7'b1101101;
41 | 4'h6 : sseg_decode = 7'b1111101;
42 | 4'h7 : sseg_decode = 7'b0000111;
43 | 4'h8 : sseg_decode = 7'b1111111;
44 | 4'h9 : sseg_decode = 7'b1101111;
45 | 4'ha : sseg_decode = 7'b1110111;
46 | 4'hb : sseg_decode = 7'b1111100;
47 | 4'hc : sseg_decode = 7'b0111001;
48 | 4'hd : sseg_decode = 7'b1011110;
49 | 4'he : sseg_decode = 7'b1111001;
50 | 4'hf : sseg_decode = 7'b1110001;
51 | default : sseg_decode = 7'b0000000;
52 | endcase
53 | end
54 |
55 |
56 | generate if (REG == 1) begin
57 | reg [ 7-1:0] sseg_reg;
58 | always @ (posedge clk, posedge rst) begin
59 | if (rst)
60 | sseg_reg <= #1 7'h0;
61 | else
62 | sseg_reg <= #1 INV ? ~sseg_decode : sseg_decode;
63 | end
64 | assign sseg = sseg_reg;
65 | end else begin
66 | assign sseg = INV ? ~sseg_decode : sseg_decode;
67 | end
68 | endgenerate
69 |
70 |
71 | endmodule
72 |
73 |
--------------------------------------------------------------------------------