Преглед на файлове

- alpha simulator removed: we never used it so far, fpc has no alpha support, alpha is basically dead, qemu supports alpha

git-svn-id: trunk@13530 -
florian преди 16 години
родител
ревизия
9280f60779
променени са 9 файла, в които са добавени 0 реда и са изтрити 4243 реда
  1. 0 7
      .gitattributes
  2. 0 7
      .gitignore
  3. 0 2098
      utils/simulator/Makefile
  4. 0 18
      utils/simulator/Makefile.fpc
  5. 0 1275
      utils/simulator/alphasim.pas
  6. 0 203
      utils/simulator/fastmm64.pas
  7. 0 295
      utils/simulator/mm64.pas
  8. 0 115
      utils/simulator/simbase.pas
  9. 0 225
      utils/simulator/simlib.pas

+ 0 - 7
.gitattributes

@@ -10471,13 +10471,6 @@ utils/sim_pasc/token.c svneol=native#text/plain
 utils/sim_pasc/token.h svneol=native#text/plain
 utils/sim_pasc/tokenarray.c svneol=native#text/plain
 utils/sim_pasc/tokenarray.h svneol=native#text/plain
-utils/simulator/Makefile svneol=native#text/plain
-utils/simulator/Makefile.fpc svneol=native#text/plain
-utils/simulator/alphasim.pas svneol=native#text/plain
-utils/simulator/fastmm64.pas svneol=native#text/plain
-utils/simulator/mm64.pas svneol=native#text/plain
-utils/simulator/simbase.pas svneol=native#text/plain
-utils/simulator/simlib.pas svneol=native#text/plain
 utils/svn2cl.pp svneol=native#text/plain
 utils/svn2cvs/svn2cvs.lpi svneol=native#text/plain
 utils/svn2cvs/svn2cvs.pp svneol=native#text/plain

+ 0 - 7
.gitignore

@@ -1551,13 +1551,6 @@ utils/ptop
 utils/ptop.exe
 utils/rstconv
 utils/rstconv.exe
-utils/simulator/*.bak
-utils/simulator/*.exe
-utils/simulator/*.o
-utils/simulator/*.ppu
-utils/simulator/*.s
-utils/simulator/fpcmade.*
-utils/simulator/units
 utils/tply/*.bak
 utils/tply/*.exe
 utils/tply/*.o

+ 0 - 2098
utils/simulator/Makefile

@@ -1,2098 +0,0 @@
-#
-# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/08/02]
-#
-default: all
-MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded
-BSDs = freebsd netbsd openbsd darwin
-UNIXs = linux $(BSDs) solaris qnx
-LIMIT83fs = go32v2 os2 emx watcom
-OSNeedsComspecToRunBatch = go32v2 watcom
-FORCE:
-.PHONY: FORCE
-override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
-ifneq ($(findstring darwin,$(OSTYPE)),)
-inUnix=1 #darwin
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-ifeq ($(findstring ;,$(PATH)),)
-inUnix=1
-SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
-else
-SEARCHPATH:=$(subst ;, ,$(PATH))
-endif
-endif
-SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
-PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
-ifeq ($(PWD),)
-PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
-ifeq ($(PWD),)
-$(error You need the GNU utils package to use this Makefile)
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=
-endif
-else
-PWD:=$(firstword $(PWD))
-SRCEXEEXT=.exe
-endif
-ifndef inUnix
-ifeq ($(OS),Windows_NT)
-inWinNT=1
-else
-ifdef OS2_SHELL
-inOS2=1
-endif
-endif
-else
-ifneq ($(findstring cygdrive,$(PATH)),)
-inCygWin=1
-endif
-endif
-ifdef inUnix
-SRCBATCHEXT=.sh
-else
-ifdef inOS2
-SRCBATCHEXT=.cmd
-else
-SRCBATCHEXT=.bat
-endif
-endif
-ifdef COMSPEC
-ifneq ($(findstring $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),)
-ifndef RUNBATCH
-RUNBATCH=$(COMSPEC) /C
-endif
-endif
-endif
-ifdef inUnix
-PATHSEP=/
-else
-PATHSEP:=$(subst /,\,/)
-ifdef inCygWin
-PATHSEP=/
-endif
-endif
-ifdef PWD
-BASEDIR:=$(subst \,/,$(shell $(PWD)))
-ifdef inCygWin
-ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
-BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
-BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
-BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
-endif
-endif
-else
-BASEDIR=.
-endif
-ifdef inOS2
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO=echo
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-endif
-override DEFAULT_FPCDIR=../..
-ifndef FPC
-ifdef PP
-FPC=$(PP)
-endif
-endif
-ifndef FPC
-FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
-ifneq ($(FPCPROG),)
-FPCPROG:=$(firstword $(FPCPROG))
-ifneq ($(CPU_TARGET),)
-FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB)
-else
-FPC:=$(shell $(FPCPROG) -PB)
-endif
-ifneq ($(findstring Error,$(FPC)),)
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-else
-ifeq ($(strip $(wildcard $(FPC))),)
-FPC:=$(firstword $(FPCPROG))
-endif
-endif
-else
-override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
-endif
-endif
-override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
-override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
-FOUNDFPC:=$(strip $(wildcard $(FPC)))
-ifeq ($(FOUNDFPC),)
-FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
-ifeq ($(FOUNDFPC),)
-$(error Compiler $(FPC) not found)
-endif
-endif
-ifndef FPC_COMPILERINFO
-FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
-endif
-ifndef FPC_VERSION
-FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
-endif
-export FPC FPC_VERSION FPC_COMPILERINFO
-unexport CHECKDEPEND ALLDEPENDENCIES
-ifndef CPU_TARGET
-ifdef CPU_TARGET_DEFAULT
-CPU_TARGET=$(CPU_TARGET_DEFAULT)
-endif
-endif
-ifndef OS_TARGET
-ifdef OS_TARGET_DEFAULT
-OS_TARGET=$(OS_TARGET_DEFAULT)
-endif
-endif
-ifneq ($(words $(FPC_COMPILERINFO)),5)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTP)
-FPC_COMPILERINFO+=$(shell $(FPC) -iSO)
-FPC_COMPILERINFO+=$(shell $(FPC) -iTO)
-endif
-ifndef CPU_SOURCE
-CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
-endif
-ifndef CPU_TARGET
-CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
-endif
-ifndef OS_SOURCE
-OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
-endif
-ifndef OS_TARGET
-OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
-endif
-FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifeq ($(CPU_TARGET),armeb)
-ARCH=arm
-override FPCOPT+=-Cb
-else
-ifeq ($(CPU_TARGET),armel)
-ARCH=arm
-override FPCOPT+=-CaEABI
-else
-ARCH=$(CPU_TARGET)
-endif
-endif
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-TARGETSUFFIX=$(OS_TARGET)
-SOURCESUFFIX=$(OS_SOURCE)
-else
-TARGETSUFFIX=$(FULL_TARGET)
-SOURCESUFFIX=$(FULL_SOURCE)
-endif
-ifneq ($(FULL_TARGET),$(FULL_SOURCE))
-CROSSCOMPILE=1
-endif
-ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
-ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
-$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
-endif
-endif
-ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
-BSDhier=1
-endif
-ifeq ($(OS_TARGET),linux)
-linuxHier=1
-endif
-export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
-ifdef FPCDIR
-override FPCDIR:=$(subst \,/,$(FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-else
-override FPCDIR=wrong
-endif
-ifdef DEFAULT_FPCDIR
-ifeq ($(FPCDIR),wrong)
-override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=wrong
-endif
-endif
-endif
-ifeq ($(FPCDIR),wrong)
-ifdef inUnix
-override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
-ifeq ($(wildcard $(FPCDIR)/units),)
-override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
-endif
-else
-override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(FPCDIR)/..
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR:=$(BASEDIR)
-ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
-override FPCDIR=c:/pp
-endif
-endif
-endif
-endif
-endif
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
-endif
-ifeq ($(OS_TARGET),darwin)
-ifeq ($(OS_SOURCE),darwin)
-DARWIN2DARWIN=1
-endif
-endif
-ifndef BINUTILSPREFIX
-ifndef CROSSBINDIR
-ifdef CROSSCOMPILE
-ifndef DARWIN2DARWIN
-BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
-endif
-endif
-endif
-endif
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
-ifeq ($(UNITSDIR),)
-UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
-endif
-PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
-ifeq ($(FULL_TARGET),i386-linux)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),i386-haiku)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),x86_64-darwin)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),arm-darwin)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),avr-embedded)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),armeb-linux)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),armeb-embedded)
-override TARGET_PROGRAMS+=alphasim
-endif
-ifeq ($(FULL_TARGET),i386-linux)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),i386-haiku)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),x86_64-darwin)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),arm-darwin)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),avr-embedded)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),armeb-linux)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-ifeq ($(FULL_TARGET),armeb-embedded)
-override CLEAN_UNITS+=mm64 fastmm64 simlib simbase
-endif
-override INSTALL_FPCPACKAGE=y
-ifdef REQUIRE_UNITSDIR
-override UNITSDIR+=$(REQUIRE_UNITSDIR)
-endif
-ifdef REQUIRE_PACKAGESDIR
-override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
-endif
-ifdef ZIPINSTALL
-ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
-UNIXHier=1
-endif
-else
-ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
-UNIXHier=1
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef PREFIX
-INSTALL_PREFIX=$(PREFIX)
-endif
-endif
-ifndef INSTALL_PREFIX
-ifdef UNIXHier
-INSTALL_PREFIX=/usr/local
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=/pp
-else
-INSTALL_BASEDIR:=/$(PACKAGE_NAME)
-endif
-endif
-endif
-export INSTALL_PREFIX
-ifdef INSTALL_FPCSUBDIR
-export INSTALL_FPCSUBDIR
-endif
-ifndef DIST_DESTDIR
-DIST_DESTDIR:=$(BASEDIR)
-endif
-export DIST_DESTDIR
-ifndef COMPILER_UNITTARGETDIR
-ifdef PACKAGEDIR_MAIN
-COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
-else
-COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
-endif
-endif
-ifndef COMPILER_TARGETDIR
-COMPILER_TARGETDIR=.
-endif
-ifndef INSTALL_BASEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
-endif
-else
-INSTALL_BASEDIR:=$(INSTALL_PREFIX)
-endif
-endif
-ifndef INSTALL_BINDIR
-ifdef UNIXHier
-INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
-else
-INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
-ifdef INSTALL_FPCPACKAGE
-ifdef CROSSCOMPILE
-ifdef CROSSINSTALL
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-else
-INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
-endif
-endif
-endif
-endif
-ifndef INSTALL_UNITDIR
-INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
-ifdef INSTALL_FPCPACKAGE
-ifdef PACKAGE_NAME
-INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
-endif
-endif
-endif
-ifndef INSTALL_LIBDIR
-ifdef UNIXHier
-INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
-else
-INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
-endif
-endif
-ifndef INSTALL_SOURCEDIR
-ifdef UNIXHier
-ifdef BSDhier
-SRCPREFIXDIR=share/src
-else
-ifdef linuxHier
-SRCPREFIXDIR=share/src
-else
-SRCPREFIXDIR=src
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-ifdef INSTALL_FPCSUBDIR
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
-endif
-else
-INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
-endif
-endif
-endif
-ifndef INSTALL_DOCDIR
-ifdef UNIXHier
-ifdef BSDhier
-DOCPREFIXDIR=share/doc
-else
-ifdef linuxHier
-DOCPREFIXDIR=share/doc
-else
-DOCPREFIXDIR=doc
-endif
-endif
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
-else
-INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
-endif
-endif
-endif
-ifndef INSTALL_EXAMPLEDIR
-ifdef UNIXHier
-ifdef INSTALL_FPCPACKAGE
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
-endif
-endif
-else
-ifdef BSDhier
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-ifdef linuxHier
-INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
-endif
-endif
-endif
-else
-ifdef INSTALL_FPCPACKAGE
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
-else
-INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
-endif
-endif
-endif
-ifndef INSTALL_DATADIR
-INSTALL_DATADIR=$(INSTALL_BASEDIR)
-endif
-ifndef INSTALL_SHAREDDIR
-INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
-endif
-ifdef CROSSCOMPILE
-ifndef CROSSBINDIR
-CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
-ifeq ($(CROSSBINDIR),)
-CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
-endif
-endif
-else
-CROSSBINDIR=
-endif
-BATCHEXT=.bat
-LOADEREXT=.as
-EXEEXT=.exe
-PPLEXT=.ppl
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.so
-SHAREDLIBPREFIX=libfp
-STATICLIBPREFIX=libp
-IMPORTLIBPREFIX=libimp
-RSTEXT=.rst
-ifeq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),go32v1)
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-IMPORTLIBPREFIX=
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-OEXT=.obj
-ASMEXT=.asm
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=wat
-IMPORTLIBPREFIX=
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=fbs
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=nbs
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=obs
-endif
-ifeq ($(OS_TARGET),win32)
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-IMPORTLIBPREFIX=
-endif
-ifeq ($(OS_TARGET),emx)
-BATCHEXT=.cmd
-AOUTEXT=.out
-STATICLIBPREFIX=
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=emx
-ECHO=echo
-IMPORTLIBPREFIX=
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),morphos)
-EXEEXT=
-SHAREDLIBEXT=.library
-SHORTSUFFIX=mos
-endif
-ifeq ($(OS_TARGET),atari)
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),haiku)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=hai
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nw
-IMPORTLIBPREFIX=imp
-endif
-ifeq ($(OS_TARGET),netwlibc)
-EXEEXT=.nlm
-STATICLIBPREFIX=
-SHORTSUFFIX=nwl
-IMPORTLIBPREFIX=imp
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-IMPORTLIBPREFIX=imp
-endif
-ifeq ($(OS_TARGET),darwin)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=dwn
-endif
-ifeq ($(OS_TARGET),gba)
-EXEEXT=.gba
-SHAREDLIBEXT=.so
-SHORTSUFFIX=gba
-endif
-ifeq ($(OS_TARGET),symbian)
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=symbian
-endif
-else
-ifeq ($(OS_TARGET),go32v1)
-PPUEXT=.pp1
-OEXT=.o1
-ASMEXT=.s1
-SMARTEXT=.sl1
-STATICLIBEXT=.a1
-SHAREDLIBEXT=.so1
-STATICLIBPREFIX=
-SHORTSUFFIX=v1
-IMPORTLIBPREFIX=
-endif
-ifeq ($(OS_TARGET),go32v2)
-STATICLIBPREFIX=
-SHORTSUFFIX=dos
-IMPORTLIBPREFIX=
-endif
-ifeq ($(OS_TARGET),watcom)
-STATICLIBPREFIX=
-SHORTSUFFIX=wat
-IMPORTLIBPREFIX=
-endif
-ifeq ($(OS_TARGET),linux)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=lnx
-endif
-ifeq ($(OS_TARGET),freebsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=fbs
-endif
-ifeq ($(OS_TARGET),netbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=nbs
-endif
-ifeq ($(OS_TARGET),openbsd)
-BATCHEXT=.sh
-EXEEXT=
-HASSHAREDLIB=1
-SHORTSUFFIX=obs
-endif
-ifeq ($(OS_TARGET),win32)
-PPUEXT=.ppw
-OEXT=.ow
-ASMEXT=.sw
-SMARTEXT=.slw
-STATICLIBEXT=.aw
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=w32
-endif
-ifeq ($(OS_TARGET),os2)
-BATCHEXT=.cmd
-PPUEXT=.ppo
-ASMEXT=.so2
-OEXT=.oo2
-AOUTEXT=.out
-SMARTEXT=.sl2
-STATICLIBPREFIX=
-STATICLIBEXT=.ao2
-SHAREDLIBEXT=.dll
-SHORTSUFFIX=os2
-ECHO=echo
-IMPORTLIBPREFIX=
-endif
-ifeq ($(OS_TARGET),amiga)
-EXEEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.library
-SHORTSUFFIX=amg
-endif
-ifeq ($(OS_TARGET),atari)
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=.ttp
-SHORTSUFFIX=ata
-endif
-ifeq ($(OS_TARGET),beos)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=be
-endif
-ifeq ($(OS_TARGET),solaris)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=sun
-endif
-ifeq ($(OS_TARGET),qnx)
-BATCHEXT=.sh
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-SHORTSUFFIX=qnx
-endif
-ifeq ($(OS_TARGET),netware)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nw
-IMPORTLIBPREFIX=imp
-endif
-ifeq ($(OS_TARGET),netwlibc)
-STATICLIBPREFIX=
-PPUEXT=.ppu
-OEXT=.o
-ASMEXT=.s
-SMARTEXT=.sl
-STATICLIBEXT=.a
-SHAREDLIBEXT=.nlm
-EXEEXT=.nlm
-SHORTSUFFIX=nwl
-IMPORTLIBPREFIX=imp
-endif
-ifeq ($(OS_TARGET),macos)
-BATCHEXT=
-PPUEXT=.ppu
-ASMEXT=.s
-OEXT=.o
-SMARTEXT=.sl
-STATICLIBEXT=.a
-EXEEXT=
-DEBUGSYMEXT=.xcoff
-SHORTSUFFIX=mac
-IMPORTLIBPREFIX=imp
-endif
-endif
-ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
-FPCMADE=fpcmade.$(SHORTSUFFIX)
-ZIPSUFFIX=$(SHORTSUFFIX)
-ZIPCROSSPREFIX=
-ZIPSOURCESUFFIX=src
-ZIPEXAMPLESUFFIX=exm
-else
-FPCMADE=fpcmade.$(TARGETSUFFIX)
-ZIPSOURCESUFFIX=.source
-ZIPEXAMPLESUFFIX=.examples
-ifdef CROSSCOMPILE
-ZIPSUFFIX=.$(SOURCESUFFIX)
-ZIPCROSSPREFIX=$(TARGETSUFFIX)-
-else
-ZIPSUFFIX=.$(TARGETSUFFIX)
-ZIPCROSSPREFIX=
-endif
-endif
-ifndef ECHO
-ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ECHO),)
-ECHO= __missing_command_ECHO
-else
-ECHO:=$(firstword $(ECHO))
-endif
-else
-ECHO:=$(firstword $(ECHO))
-endif
-endif
-export ECHO
-ifndef DATE
-DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(DATE),)
-DATE= __missing_command_DATE
-else
-DATE:=$(firstword $(DATE))
-endif
-else
-DATE:=$(firstword $(DATE))
-endif
-endif
-export DATE
-ifndef GINSTALL
-GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(GINSTALL),)
-GINSTALL= __missing_command_GINSTALL
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-else
-GINSTALL:=$(firstword $(GINSTALL))
-endif
-endif
-export GINSTALL
-ifndef CPPROG
-CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(CPPROG),)
-CPPROG= __missing_command_CPPROG
-else
-CPPROG:=$(firstword $(CPPROG))
-endif
-endif
-export CPPROG
-ifndef RMPROG
-RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(RMPROG),)
-RMPROG= __missing_command_RMPROG
-else
-RMPROG:=$(firstword $(RMPROG))
-endif
-endif
-export RMPROG
-ifndef MVPROG
-MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MVPROG),)
-MVPROG= __missing_command_MVPROG
-else
-MVPROG:=$(firstword $(MVPROG))
-endif
-endif
-export MVPROG
-ifndef MKDIRPROG
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(MKDIRPROG),)
-MKDIRPROG= __missing_command_MKDIRPROG
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-else
-MKDIRPROG:=$(firstword $(MKDIRPROG))
-endif
-endif
-export MKDIRPROG
-ifndef ECHOREDIR
-ifndef inUnix
-ECHOREDIR=echo
-else
-ECHOREDIR=$(ECHO)
-endif
-endif
-ifndef COPY
-COPY:=$(CPPROG) -fp
-endif
-ifndef COPYTREE
-COPYTREE:=$(CPPROG) -Rfp
-endif
-ifndef MKDIRTREE
-MKDIRTREE:=$(MKDIRPROG) -p
-endif
-ifndef MOVE
-MOVE:=$(MVPROG) -f
-endif
-ifndef DEL
-DEL:=$(RMPROG) -f
-endif
-ifndef DELTREE
-DELTREE:=$(RMPROG) -rf
-endif
-ifndef INSTALL
-ifdef inUnix
-INSTALL:=$(GINSTALL) -c -m 644
-else
-INSTALL:=$(COPY)
-endif
-endif
-ifndef INSTALLEXE
-ifdef inUnix
-INSTALLEXE:=$(GINSTALL) -c -m 755
-else
-INSTALLEXE:=$(COPY)
-endif
-endif
-ifndef MKDIR
-MKDIR:=$(GINSTALL) -m 755 -d
-endif
-export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
-ifndef PPUMOVE
-PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(PPUMOVE),)
-PPUMOVE= __missing_command_PPUMOVE
-else
-PPUMOVE:=$(firstword $(PPUMOVE))
-endif
-endif
-export PPUMOVE
-ifndef FPCMAKE
-FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(FPCMAKE),)
-FPCMAKE= __missing_command_FPCMAKE
-else
-FPCMAKE:=$(firstword $(FPCMAKE))
-endif
-endif
-export FPCMAKE
-ifndef ZIPPROG
-ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(ZIPPROG),)
-ZIPPROG= __missing_command_ZIPPROG
-else
-ZIPPROG:=$(firstword $(ZIPPROG))
-endif
-endif
-export ZIPPROG
-ifndef TARPROG
-TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(TARPROG),)
-TARPROG= __missing_command_TARPROG
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-else
-TARPROG:=$(firstword $(TARPROG))
-endif
-endif
-export TARPROG
-ASNAME=$(BINUTILSPREFIX)as
-LDNAME=$(BINUTILSPREFIX)ld
-ARNAME=$(BINUTILSPREFIX)ar
-RCNAME=$(BINUTILSPREFIX)rc
-ifneq ($(findstring 1.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),win32)
-ifeq ($(CROSSBINDIR),)
-ASNAME=asw
-LDNAME=ldw
-ARNAME=arw
-endif
-endif
-endif
-ifndef ASPROG
-ifdef CROSSBINDIR
-ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
-else
-ASPROG=$(ASNAME)
-endif
-endif
-ifndef LDPROG
-ifdef CROSSBINDIR
-LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
-else
-LDPROG=$(LDNAME)
-endif
-endif
-ifndef RCPROG
-ifdef CROSSBINDIR
-RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
-else
-RCPROG=$(RCNAME)
-endif
-endif
-ifndef ARPROG
-ifdef CROSSBINDIR
-ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
-else
-ARPROG=$(ARNAME)
-endif
-endif
-AS=$(ASPROG)
-LD=$(LDPROG)
-RC=$(RCPROG)
-AR=$(ARPROG)
-PPAS=ppas$(SRCBATCHEXT)
-ifdef inUnix
-LDCONFIG=ldconfig
-else
-LDCONFIG=
-endif
-ifdef DATE
-DATESTR:=$(shell $(DATE) +%Y%m%d)
-else
-DATESTR=
-endif
-ifndef UPXPROG
-ifeq ($(OS_TARGET),go32v2)
-UPXPROG:=1
-endif
-ifeq ($(OS_TARGET),win32)
-UPXPROG:=1
-endif
-ifdef UPXPROG
-UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH))))
-ifeq ($(UPXPROG),)
-UPXPROG=
-else
-UPXPROG:=$(firstword $(UPXPROG))
-endif
-else
-UPXPROG=
-endif
-endif
-export UPXPROG
-ZIPOPT=-9
-ZIPEXT=.zip
-ifeq ($(USETAR),bz2)
-TAROPT=vj
-TAREXT=.tar.bz2
-else
-TAROPT=vz
-TAREXT=.tar.gz
-endif
-override REQUIRE_PACKAGES=rtl 
-ifeq ($(FULL_TARGET),i386-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-go32v2)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-win32)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-os2)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-freebsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-beos)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-haiku)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-netbsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-solaris)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-qnx)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-netware)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-openbsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-wdosx)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-darwin)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-emx)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-watcom)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-netwlibc)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-wince)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),i386-symbian)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-freebsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-netbsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-amiga)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-atari)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-openbsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-palmos)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),m68k-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc-amiga)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc-macos)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc-darwin)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc-morphos)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),sparc-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),sparc-netbsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),sparc-solaris)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),sparc-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),x86_64-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),x86_64-freebsd)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),x86_64-darwin)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),x86_64-win64)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),x86_64-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-palmos)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-darwin)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-wince)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-gba)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-nds)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),arm-symbian)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-darwin)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),powerpc64-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),avr-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),armeb-linux)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifeq ($(FULL_TARGET),armeb-embedded)
-REQUIRE_PACKAGES_RTL=1
-endif
-ifdef REQUIRE_PACKAGES_RTL
-PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
-ifneq ($(PACKAGEDIR_RTL),)
-ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),)
-UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)
-else
-UNITDIR_RTL=$(PACKAGEDIR_RTL)
-endif
-ifdef CHECKDEPEND
-$(PACKAGEDIR_RTL)/$(FPCMADE):
-	$(MAKE) -C $(PACKAGEDIR_RTL) $(FPCMADE)
-override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(FPCMADE)
-endif
-else
-PACKAGEDIR_RTL=
-UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
-ifneq ($(UNITDIR_RTL),)
-UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
-else
-UNITDIR_RTL=
-endif
-endif
-ifdef UNITDIR_RTL
-override COMPILER_UNITDIR+=$(UNITDIR_RTL)
-endif
-endif
-ifndef NOCPUDEF
-override FPCOPTDEF=$(ARCH)
-endif
-ifneq ($(OS_TARGET),$(OS_SOURCE))
-override FPCOPT+=-T$(OS_TARGET)
-endif
-ifneq ($(CPU_TARGET),$(CPU_SOURCE))
-override FPCOPT+=-P$(ARCH)
-endif
-ifeq ($(OS_SOURCE),openbsd)
-override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
-endif
-ifndef CROSSBOOTSTRAP
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-XP$(BINUTILSPREFIX)
-endif
-ifneq ($(BINUTILSPREFIX),)
-override FPCOPT+=-Xr$(RLINKPATH)
-endif
-endif
-ifdef UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
-endif
-ifdef LIBDIR
-override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
-endif
-ifdef OBJDIR
-override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
-endif
-ifdef INCDIR
-override FPCOPT+=$(addprefix -Fi,$(INCDIR))
-endif
-ifdef LINKSMART
-override FPCOPT+=-XX
-endif
-ifdef CREATESMART
-override FPCOPT+=-CX
-endif
-ifdef DEBUG
-override FPCOPT+=-gl
-override FPCOPTDEF+=DEBUG
-endif
-ifdef RELEASE
-ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
-ifeq ($(CPU_TARGET),i386)
-FPCCPUOPT:=-OG2p3
-endif
-ifeq ($(CPU_TARGET),powerpc)
-FPCCPUOPT:=-O1r
-endif
-else
-FPCCPUOPT:=-O2
-endif
-override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
-override FPCOPTDEF+=RELEASE
-endif
-ifdef STRIP
-override FPCOPT+=-Xs
-endif
-ifdef OPTIMIZE
-override FPCOPT+=-O2
-endif
-ifdef VERBOSE
-override FPCOPT+=-vwni
-endif
-ifdef COMPILER_OPTIONS
-override FPCOPT+=$(COMPILER_OPTIONS)
-endif
-ifdef COMPILER_UNITDIR
-override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
-endif
-ifdef COMPILER_LIBRARYDIR
-override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
-endif
-ifdef COMPILER_OBJECTDIR
-override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
-endif
-ifdef COMPILER_INCLUDEDIR
-override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
-endif
-ifdef CROSSBINDIR
-override FPCOPT+=-FD$(CROSSBINDIR)
-endif
-ifdef COMPILER_TARGETDIR
-override FPCOPT+=-FE$(COMPILER_TARGETDIR)
-ifeq ($(COMPILER_TARGETDIR),.)
-override TARGETDIRPREFIX=
-else
-override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
-endif
-endif
-ifdef COMPILER_UNITTARGETDIR
-override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
-ifeq ($(COMPILER_UNITTARGETDIR),.)
-override UNITTARGETDIRPREFIX=
-else
-override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
-endif
-else
-ifdef COMPILER_TARGETDIR
-override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
-override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
-endif
-endif
-ifdef CREATESHARED
-override FPCOPT+=-Cg
-ifeq ($(CPU_TARGET),i386)
-override FPCOPT+=-Aas
-endif
-endif
-ifeq ($(findstring 2.0.,$(FPC_VERSION)),)
-ifeq ($(OS_TARGET),linux)
-ifeq ($(CPU_TARGET),x86_64)
-override FPCOPT+=-Cg
-endif
-endif
-endif
-ifdef LINKSHARED
-endif
-ifdef OPT
-override FPCOPT+=$(OPT)
-endif
-ifdef FPCOPTDEF
-override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
-endif
-ifdef CFGFILE
-override FPCOPT+=@$(CFGFILE)
-endif
-ifdef USEENV
-override FPCEXTCMD:=$(FPCOPT)
-override FPCOPT:=!FPCEXTCMD
-export FPCEXTCMD
-endif
-override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
-override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
-ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
-override ACROSSCOMPILE=1
-endif
-ifdef ACROSSCOMPILE
-override FPCOPT+=$(CROSSOPT)
-endif
-override COMPILER:=$(FPC) $(FPCOPT)
-ifeq (,$(findstring -s ,$(COMPILER)))
-EXECPPAS=
-else
-ifeq ($(FULL_SOURCE),$(FULL_TARGET))
-ifdef RUNBATCH
-EXECPPAS:=@$(RUNBATCH) $(PPAS)
-else
-EXECPPAS:=@$(PPAS)
-endif
-endif
-endif
-.PHONY: fpc_exes
-ifndef CROSSINSTALL
-ifneq ($(TARGET_PROGRAMS),)
-override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))
-override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS)))
-override ALLTARGET+=fpc_exes
-override INSTALLEXEFILES+=$(EXEFILES)
-override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)
-ifeq ($(OS_TARGET),os2)
-override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
-endif
-ifeq ($(OS_TARGET),emx)
-override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
-endif
-endif
-endif
-fpc_exes: $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES)
-ifdef TARGET_RSTS
-override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
-override CLEANRSTFILES+=$(RSTFILES)
-endif
-.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared
-$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
-	@$(ECHOREDIR) Compiled > $(FPCMADE)
-fpc_all: $(FPCMADE)
-fpc_smart:
-	$(MAKE) all LINKSMART=1 CREATESMART=1
-fpc_debug:
-	$(MAKE) all DEBUG=1
-fpc_release:
-	$(MAKE) all RELEASE=1
-.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res
-$(COMPILER_UNITTARGETDIR):
-	$(MKDIRTREE) $(COMPILER_UNITTARGETDIR)
-$(COMPILER_TARGETDIR):
-	$(MKDIRTREE) $(COMPILER_TARGETDIR)
-%$(PPUEXT): %.pp
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(PPUEXT): %.pas
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.pp
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.pas
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.lpr
-	$(COMPILER) $<
-	$(EXECPPAS)
-%$(EXEEXT): %.dpr
-	$(COMPILER) $<
-	$(EXECPPAS)
-%.res: %.rc
-	windres -i $< -o $@
-vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
-vpath %.inc $(COMPILER_INCLUDEDIR)
-vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
-vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
-.PHONY: fpc_shared
-override INSTALLTARGET+=fpc_shared_install
-ifndef SHARED_LIBVERSION
-SHARED_LIBVERSION=$(FPC_VERSION)
-endif
-ifndef SHARED_LIBNAME
-SHARED_LIBNAME=$(PACKAGE_NAME)
-endif
-ifndef SHARED_FULLNAME
-SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT)
-endif
-ifndef SHARED_LIBUNITS
-SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)
-override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS))
-endif
-fpc_shared:
-ifdef HASSHAREDLIB
-	$(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1
-ifneq ($(SHARED_BUILD),n)
-	$(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)
-endif
-else
-	@$(ECHO) Shared Libraries not supported
-endif
-fpc_shared_install:
-ifneq ($(SHARED_BUILD),n)
-ifneq ($(SHARED_LIBUNITS),)
-ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)
-	$(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR)
-endif
-endif
-endif
-.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
-ifdef INSTALL_UNITS
-override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
-endif
-ifdef INSTALL_BUILDUNIT
-override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
-endif
-ifdef INSTALLPPUFILES
-override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
-ifneq ($(UNITTARGETDIRPREFIX),)
-override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES)))
-override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES))))
-endif
-override INSTALL_CREATEPACKAGEFPC=1
-endif
-ifdef INSTALLEXEFILES
-ifneq ($(TARGETDIRPREFIX),)
-override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES)))
-endif
-endif
-fpc_install: all $(INSTALLTARGET)
-ifdef INSTALLEXEFILES
-	$(MKDIR) $(INSTALL_BINDIR)
-ifdef UPXPROG
-	-$(UPXPROG) $(INSTALLEXEFILES)
-endif
-	$(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
-endif
-ifdef INSTALL_CREATEPACKAGEFPC
-ifdef FPCMAKE
-ifdef PACKAGE_VERSION
-ifneq ($(wildcard Makefile.fpc),)
-	$(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc
-	$(MKDIR) $(INSTALL_UNITDIR)
-	$(INSTALL) Package.fpc $(INSTALL_UNITDIR)
-endif
-endif
-endif
-endif
-ifdef INSTALLPPUFILES
-	$(MKDIR) $(INSTALL_UNITDIR)
-	$(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
-ifneq ($(INSTALLPPULINKFILES),)
-	$(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
-endif
-ifneq ($(wildcard $(LIB_FULLNAME)),)
-	$(MKDIR) $(INSTALL_LIBDIR)
-	$(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
-ifdef inUnix
-	ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
-endif
-endif
-endif
-ifdef INSTALL_FILES
-	$(MKDIR) $(INSTALL_DATADIR)
-	$(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
-endif
-fpc_sourceinstall: distclean
-	$(MKDIR) $(INSTALL_SOURCEDIR)
-	$(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
-fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
-ifdef HASEXAMPLES
-	$(MKDIR) $(INSTALL_EXAMPLEDIR)
-endif
-ifdef EXAMPLESOURCEFILES
-	$(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
-endif
-ifdef TARGET_EXAMPLEDIRS
-	$(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
-endif
-.PHONY: fpc_clean fpc_cleanall fpc_distclean
-ifdef EXEFILES
-override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
-endif
-ifdef CLEAN_UNITS
-override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
-endif
-ifdef CLEANPPUFILES
-override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
-ifdef DEBUGSYMEXT
-override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
-endif
-override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
-override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
-endif
-fpc_clean: $(CLEANTARGET)
-ifdef CLEANEXEFILES
-	-$(DEL) $(CLEANEXEFILES)
-endif
-ifdef CLEANPPUFILES
-	-$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
-	-$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
-	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-ifdef CLEAN_FILES
-	-$(DEL) $(CLEAN_FILES)
-endif
-ifdef LIB_NAME
-	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
-endif
-	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
-fpc_cleanall: $(CLEANTARGET)
-ifdef CLEANEXEFILES
-	-$(DEL) $(CLEANEXEFILES)
-endif
-ifdef COMPILER_UNITTARGETDIR
-ifdef CLEANPPUFILES
-	-$(DEL) $(CLEANPPUFILES)
-endif
-ifneq ($(CLEANPPULINKFILES),)
-	-$(DEL) $(CLEANPPULINKFILES)
-endif
-ifdef CLEANRSTFILES
-	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
-endif
-endif
-	-$(DELTREE) units
-	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
-ifneq ($(PPUEXT),.ppu)
-	-$(DEL) *.o *.ppu *.a
-endif
-	-$(DELTREE) *$(SMARTEXT)
-	-$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
-	-$(DEL) *_ppas$(BATCHEXT)
-ifdef AOUTEXT
-	-$(DEL) *$(AOUTEXT)
-endif
-ifdef DEBUGSYMEXT
-	-$(DEL) *$(DEBUGSYMEXT)
-endif
-fpc_distclean: cleanall
-.PHONY: fpc_baseinfo
-override INFORULES+=fpc_baseinfo
-fpc_baseinfo:
-	@$(ECHO)
-	@$(ECHO)  == Package info ==
-	@$(ECHO)  Package Name..... $(PACKAGE_NAME)
-	@$(ECHO)  Package Version.. $(PACKAGE_VERSION)
-	@$(ECHO)
-	@$(ECHO)  == Configuration info ==
-	@$(ECHO)
-	@$(ECHO)  FPC.......... $(FPC)
-	@$(ECHO)  FPC Version.. $(FPC_VERSION)
-	@$(ECHO)  Source CPU... $(CPU_SOURCE)
-	@$(ECHO)  Target CPU... $(CPU_TARGET)
-	@$(ECHO)  Source OS.... $(OS_SOURCE)
-	@$(ECHO)  Target OS.... $(OS_TARGET)
-	@$(ECHO)  Full Source.. $(FULL_SOURCE)
-	@$(ECHO)  Full Target.. $(FULL_TARGET)
-	@$(ECHO)  SourceSuffix. $(SOURCESUFFIX)
-	@$(ECHO)  TargetSuffix. $(TARGETSUFFIX)
-	@$(ECHO)
-	@$(ECHO)  == Directory info ==
-	@$(ECHO)
-	@$(ECHO)  Required pkgs... $(REQUIRE_PACKAGES)
-	@$(ECHO)
-	@$(ECHO)  Basedir......... $(BASEDIR)
-	@$(ECHO)  FPCDir.......... $(FPCDIR)
-	@$(ECHO)  CrossBinDir..... $(CROSSBINDIR)
-	@$(ECHO)  UnitsDir........ $(UNITSDIR)
-	@$(ECHO)  PackagesDir..... $(PACKAGESDIR)
-	@$(ECHO)
-	@$(ECHO)  GCC library..... $(GCCLIBDIR)
-	@$(ECHO)  Other library... $(OTHERLIBDIR)
-	@$(ECHO)
-	@$(ECHO)  == Tools info ==
-	@$(ECHO)
-	@$(ECHO)  As........ $(AS)
-	@$(ECHO)  Ld........ $(LD)
-	@$(ECHO)  Ar........ $(AR)
-	@$(ECHO)  Rc........ $(RC)
-	@$(ECHO)
-	@$(ECHO)  Mv........ $(MVPROG)
-	@$(ECHO)  Cp........ $(CPPROG)
-	@$(ECHO)  Rm........ $(RMPROG)
-	@$(ECHO)  GInstall.. $(GINSTALL)
-	@$(ECHO)  Echo...... $(ECHO)
-	@$(ECHO)  Shell..... $(SHELL)
-	@$(ECHO)  Date...... $(DATE)
-	@$(ECHO)  FPCMake... $(FPCMAKE)
-	@$(ECHO)  PPUMove... $(PPUMOVE)
-	@$(ECHO)  Upx....... $(UPXPROG)
-	@$(ECHO)  Zip....... $(ZIPPROG)
-	@$(ECHO)
-	@$(ECHO)  == Object info ==
-	@$(ECHO)
-	@$(ECHO)  Target Loaders........ $(TARGET_LOADERS)
-	@$(ECHO)  Target Units.......... $(TARGET_UNITS)
-	@$(ECHO)  Target Implicit Units. $(TARGET_IMPLICITUNITS)
-	@$(ECHO)  Target Programs....... $(TARGET_PROGRAMS)
-	@$(ECHO)  Target Dirs........... $(TARGET_DIRS)
-	@$(ECHO)  Target Examples....... $(TARGET_EXAMPLES)
-	@$(ECHO)  Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
-	@$(ECHO)
-	@$(ECHO)  Clean Units......... $(CLEAN_UNITS)
-	@$(ECHO)  Clean Files......... $(CLEAN_FILES)
-	@$(ECHO)
-	@$(ECHO)  Install Units....... $(INSTALL_UNITS)
-	@$(ECHO)  Install Files....... $(INSTALL_FILES)
-	@$(ECHO)
-	@$(ECHO)  == Install info ==
-	@$(ECHO)
-	@$(ECHO)  DateStr.............. $(DATESTR)
-	@$(ECHO)  ZipName.............. $(ZIPNAME)
-	@$(ECHO)  ZipPrefix............ $(ZIPPREFIX)
-	@$(ECHO)  ZipCrossPrefix....... $(ZIPCROSSPREFIX)
-	@$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)
-	@$(ECHO)  FullZipName.......... $(FULLZIPNAME)
-	@$(ECHO)  Install FPC Package.. $(INSTALL_FPCPACKAGE)
-	@$(ECHO)
-	@$(ECHO)  Install base dir..... $(INSTALL_BASEDIR)
-	@$(ECHO)  Install binary dir... $(INSTALL_BINDIR)
-	@$(ECHO)  Install library dir.. $(INSTALL_LIBDIR)
-	@$(ECHO)  Install units dir.... $(INSTALL_UNITDIR)
-	@$(ECHO)  Install source dir... $(INSTALL_SOURCEDIR)
-	@$(ECHO)  Install doc dir...... $(INSTALL_DOCDIR)
-	@$(ECHO)  Install example dir.. $(INSTALL_EXAMPLEDIR)
-	@$(ECHO)  Install data dir..... $(INSTALL_DATADIR)
-	@$(ECHO)
-	@$(ECHO)  Dist destination dir. $(DIST_DESTDIR)
-	@$(ECHO)  Dist zip name........ $(DIST_ZIPNAME)
-	@$(ECHO)
-.PHONY: fpc_info
-fpc_info: $(INFORULES)
-.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
-	fpc_makefile_dirs
-fpc_makefile:
-	$(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
-fpc_makefile_sub1:
-ifdef TARGET_DIRS
-	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
-endif
-ifdef TARGET_EXAMPLEDIRS
-	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
-endif
-fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
-fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
-fpc_makefiles: fpc_makefile fpc_makefile_dirs
-all: fpc_all
-debug: fpc_debug
-smart: fpc_smart
-release: fpc_release
-units: fpc_units
-examples:
-shared: fpc_shared
-install: fpc_install
-sourceinstall: fpc_sourceinstall
-exampleinstall: fpc_exampleinstall
-distinstall:
-zipinstall:
-zipsourceinstall:
-zipexampleinstall:
-zipdistinstall:
-clean: fpc_clean
-distclean: fpc_distclean
-cleanall: fpc_cleanall
-info: fpc_info
-makefiles: fpc_makefiles
-.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles
-ifneq ($(wildcard fpcmake.loc),)
-include fpcmake.loc
-endif
-.NOTPARALLEL:

+ 0 - 18
utils/simulator/Makefile.fpc

@@ -1,18 +0,0 @@
-#
-#   Makefile.fpc for Alpha simulator
-#
-
-[target]
-programs=alphasim
-
-[clean]
-units=mm64 fastmm64 simlib simbase
-
-[install]
-fpcpackage=y
-
-[default]
-fpcdir=../..
-
-[rules]
-.NOTPARALLEL:

+ 0 - 1275
utils/simulator/alphasim.pas

@@ -1,1275 +0,0 @@
-{
-    This file is part of the Free Pascal simulator environment
-    Copyright (c) 1999-2000 by Florian Klaempfl
-
-    This file is the main file of the DEC Alpha simulation
-
-    See the file COPYING.FPC, included in this distribution,
-    for details about the copyright.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
- **********************************************************************}
-{$N+}
-{ $define DEBUG}
-program alphaemu;
-
-  uses
-{$ifdef delphi}
-     dmisc,
-{$else}
-     dos,
-{$endif}
-     simbase,simlib,
-{$ifdef FPC}
-{$ifdef go32v2}
-     dpmiexcp,
-{$endif go32v2}
-{$endif FPC}
-{$ifdef TP}
-     mm64
-{$else TP}
-     {$define fastmem}
-     fastmm64
-{$endif TP}
-     ;
-
-  { elf file types }
-  type
-     telf64_hdr = packed record
-        e_ident : array[0..15] of char;
-        e_type : integer;
-        e_machine : word;
-        version : longint;
-        e_entry : qword;
-        e_phoff : qword;
-        e_shoff : qword;
-        e_flags : longint;
-        e_ehsize : integer;
-        e_phentsize : integer;
-        e_phnum : integer;
-        e_shentsize : integer;
-        e_shnum : integer;
-        e_shstrndx : integer;
-     end;
-
-     telf64_phdr = packed record
-        p_type : longint;
-        p_flags : longint;
-        { Segment file offset }
-        p_offset : qword;
-        { Segment virtual address }
-        p_vaddr : qword;
-        { Segment physical address }
-        p_paddr : qword;
-        { Segment size in file }
-        p_filesz : qword;
-        { Segment size in memory }
-        p_memsz : qword;
-        { Segment alignment, file & memory }
-        p_align : qword;
-     end;
-
-     telf64_phdr_array = array[0..0] of telf64_phdr;
-     pelf64_phdr_array = ^telf64_phdr_array;
-
-  const
-{$ifdef fpc}
-     { 64kB Stacksize }
-     stacksize = 64*1024;
-     { stack start at 4 GB }
-     stackstart : dword = 1024*1024*1024*4-stacksize;
-{$else fpc}
-     { 64kB Stacksize }
-     stacksize = 64*1024.0;
-     { stack start at 4 GB }
-     stackstart = 1024.0*1024.0*1024.0*4-stacksize;
-{$endif fpc}
-  { alpha specific types }
-  type
-     tintreg = record
-        case tindex of
-           1 : (all64 : qword);
-           2 : (valueq : int64);
-           3 : (low32 : dword;high32 : dword);
-           4 : (bytes : array[0..7] of byte)
-     end;
-
-     tfloatreg = record
-        case tindex of
-           1 : (valued : double);
-           2 : (valueq : qword);
-     end;
-
-     tinstruction = dword;
-
-     tintregs = array[0..31] of tintreg;
-     tfloatregs = array[0..31] of tfloatreg;
-
-     tstate = object
-        r : tintregs;
-        f : tfloatregs;
-        pc : taddr;
-        fpcr : qword;
-     end;
-
-  const
-     r_v0 = 0;
-     r_t0 = 1;
-
-     r_fp = 15;
-     r_a0 = 16;
-     r_a1 = 17;
-     r_a2 = 18;
-     r_a3 = 19;
-     r_a4 = 20;
-     r_a5 = 11;
-
-     r_ra = 26;
-     r_at = 28;
-     r_gp = 29;
-     r_sp = 30;
-     r_zero = 31;
-
-     f_zero = 31;
-
-  type
-     talphasim = object
-        state : tstate;
-        memory : tmemorymanager;
-        { number of executed instructions }
-        instrcount : qword;
-        { time when the emulation was started }
-        starttime : double;
-        { starts the execution at address pc }
-        procedure run(pc : taddr);
-        { gives a message about an illegal opcode }
-        { at the given address                    }
-        procedure illegalopcode(addr : taddr);
-        { dumps the contens of the register a0 to a[count] }
-        procedure dumparguments(count : tindex);
-        { dumps the contents of the function result register }
-        procedure dumpv0;
-        constructor init;
-        destructor done;
-     end;
-
-  var
-     sim : talphasim;
-
-  procedure dump_phdr(const h : telf64_phdr);
-
-    begin
-{$ifdef DEBUG}
-       writeln('  Type: $',hexstr(h.p_type,8));
-       writeln('  Flags: $',hexstr(h.p_flags,8));
-       writeln('  Segment file offset: $',qword2str(h.p_offset));
-       writeln('  Segment virtual address: $',qword2str(h.p_vaddr));
-       writeln('  Segment physical address: $',qword2str(h.p_paddr));
-       writeln('  Segment size in file: $',qword2str(h.p_filesz));
-       writeln('  Segment size in memory: $',qword2str(h.p_memsz));
-       writeln('  Segment alignment, file & memory: $',qword2str(h.p_align));
-{$endif DEBUG}
-    end;
-
-  procedure _stopsim;{$ifdef TP}far;{$endif TP}
-
-    var
-      elapsedtime : double;
-
-    begin
-{$ifdef DEBUG}
-       elapsedtime:=realtime-sim.starttime;
-
-       write('Executed ',sim.instrcount:0,' instructions in ',
-         elapsedtime:0:2,' sec');
-       if elapsedtime<>0.0 then
-         begin
-            writeln(',');
-            writeln('equals to ',sim.instrcount/(elapsedtime*1000000.0):0:4,' MIPS');
-         end
-       else
-         writeln;
-{$endif DEBUG}
-       halt(1);
-    end;
-
-  constructor talphasim.init;
-
-    begin
-       memory.init;
-       { setup dummy registers }
-       state.r[31].valueq:=0;
-       state.f[31].valued:=0;
-       memory.allocate(stackstart,stacksize);
-    end;
-
-  procedure talphasim.illegalopcode(addr : taddr);
-
-    var
-       instruction : tinstruction;
-
-    begin
-       instruction:=memory.readd(addr);
-       writeln('Illegal instruction $',hexstr(instruction,8),' at $',qword2str(addr));
-       writeln('Opcode is: $',hexstr((instruction and $fc000000) shr 26,2));
-       writeln('  Function would be: $',hexstr((instruction and $1fe0) shr 5,3));
-       writeln;
-       stopsim;
-    end;
-
-  procedure talphasim.dumparguments(count : tindex);
-
-    var
-       i : tindex;
-
-    begin
-       if count>6 then
-         begin
-            writeln('Illegal number of arguments to print');
-            halt(1);
-         end;
-{$ifdef DEBUG}
-       for i:=0 to count-1 do
-         writeln('  Register a',i,' = $',qword2str(state.r[r_a0+i].valueq));
-{$endif DEBUG}
-    end;
-
-  procedure talphasim.dumpv0;
-
-    var
-       i : tindex;
-
-    begin
-{$ifdef DEBUG}
-       writeln('  Register v0 = $',qword2str(state.r[r_v0].valueq));
-{$endif DEBUG}
-    end;
-
-  procedure talphasim.run(pc : taddr);
-
-    var
-       instruction : tinstruction;
-       rega,regb,regc : tindex;
-       lit : byte;
-       va : tintreg;
-
-    function getbranchdisp : int64;
-
-      var
-         l : longint;
-
-      begin
-         l:=longint(instruction and $1fffff)*4;
-         { sign extend }
-         if (l and $100000)<>0 then
-           l:=l or $fff00000;
-         getbranchdisp:=l;
-      end;
-
-    procedure instructionignored(const s : string);
-
-      begin
-{$ifdef DEBUG}
-         writeln('Instruction "',s,'" at $',qword2str(instructionpc),' ignored');
-{$endif DEBUG}
-      end;
-
-    procedure syscallignored(const s : string);
-
-      begin
-{$ifdef DEBUG}
-         writeln('SYSCALL "',s,'" at $',qword2str(instructionpc),' ignored');
-{$endif DEBUG}
-      end;
-
-    procedure syscalldefault(const s : string);
-
-      begin
-{$ifdef DEBUG}
-         writeln('SYSCALL "',s,'" at $',qword2str(instructionpc),', default value returned');
-{$endif DEBUG}
-      end;
-
-    var
-       i : tindex;
-       fs : single;
-       ib : byte;
-       il : longint;
-       fc : comp;
-       ic : char;
-       valueqa,valueqb : qword;
-       oi : oword;
-       count : qword;
-{$ifdef FASTMEM}
-       block : pdword;
-       fastpc : longint;
-       updatepc : boolean;
-{$endif FASTMEM}
-
-    begin
-       instrcount:=0;
-       state.pc:=pc;
-       { setting up the stack pointer }
-       state.r[r_sp].valueq:=stackstart+stacksize-24;
-       { setting up command line parameters ... }
-       state.r[r_a0].valueq:=0;
-       state.r[r_a1].valueq:=0;
-       { ... and environment }
-       state.r[r_a2].valueq:=0;
-
-       starttime:=realtime;
-{$ifdef FASTMEM}
-       updatepc:=true;
-{$endif FASTMEM}
-       repeat
-         { read the next instruction }
-{$ifdef FASTMEM}
-         if updatepc then
-           begin
-              block:=pdword(memory.mem[((tqwordrec(state.pc).high32 and $f) shl 12) or
-                ((tqwordrec(state.pc).low32 and $fff) shr 20)]);
-              fastpc:=(tqwordrec(state.pc).low32 and $fffff) shr 2;
-           end;
-         instruction:=block[fastpc];
-         inc(fastpc);
-         updatepc:=fastpc>1024*256-1;
-{$else FASTMEM}
-         instruction:=memory.readalignedd(state.pc);
-{$endif FASTMEM}
-         instructionpc:=state.pc;
-         state.pc:=state.pc+4;
-
-         { decode the instruction }
-         case (instruction and $fc000000) shr 26 of
-            { CALL_PAL }
-            $0:
-              begin
-                 case instruction and $3ffffff of
-                    { halt }
-                    0:
-                       exit;
-                    131:
-                      begin
-                         if state.r[r_v0].high32=0 then
-                           case state.r[r_v0].low32 of
-                              { Setup }
-                              0:
-                                begin
-                                   syscallignored('setup');
-                                   { mimic proper execution }
-                                   state.r[r_v0].valueq:=0;
-                                end;
-                              1:
-                                begin
-                                   exit;
-                                end;
-                              4:
-                                begin
-                                   syscallignored('write');
-                                   state.r[r_v0].valueq:=0;
-                                   count:=0;
-                                   while count<state.r[r_a2].valueq do
-                                     begin
-                                        byte(ic):=memory.readb(state.r[r_a1].valueq+count);
-                                        { all output goes currently to stdout }
-                                        if ic=#10 then
-                                          writeln(output)
-                                        else
-                                          write(output,ic);
-
-                                        count:=count+1;
-                                        state.r[r_v0].valueq:=state.r[r_v0].valueq+1;
-                                     end;
-                                end;
-                              20:
-                                begin
-                                   syscalldefault('getpid');
-                                   { return a default value }
-                                   state.r[r_v0].valueq:=501;
-                                end;
-                              24:
-                                begin
-                                   syscalldefault('getuid');
-                                   { return a default value }
-                                   state.r[r_v0].valueq:=501;
-                                end;
-                              45:
-                                begin
-                                   syscallignored('brk');
-                                   { mimic proper execution }
-                                   state.r[r_v0].valueq:=0;
-                                end;
-                              { alpha specific }
-                              $100:
-                                begin
-                                   syscallignored('osf_getsysinfo');
-                                   { mimic proper execution }
-                                   state.r[r_v0].valueq:=0;
-                                end;
-                              $101:
-                                begin
-                                   syscallignored('osf_setsysinfo');
-                                   { mimic proper execution }
-                                   state.r[r_v0].valueq:=0;
-                                end;
-                              $144:
-                                begin
-                                   syscallignored('personality');
-                                   { mimic proper execution }
-                                   state.r[r_v0].valueq:=0;
-                                end;
-                              else
-                                begin
-                                   syscallignored('<Unknown>');
-                                   dumpv0;
-                                   dumparguments(4);
-                                end;
-
-                           end
-                         else
-                           begin
-                              syscallignored('<Unknown>');
-                              dumpv0;
-                              dumparguments(4);
-                           end;
-                      end;
-                    else
-                      writeln('PAL code $',hexstr(instruction and $3ffffff,8),' at $',
-                        qword2str(instructionpc),' ignored');
-                 end;
-              end;
-            { LDA }
-            $8:
-              begin
-                 rega:=(instruction and $3e00000) shr 21;
-                 regb:=(instruction and $1f0000) shr 16;
-                 if rega<>r_zero then
-                   state.r[rega].valueq:=state.r[regb].valueq+int64(integer(instruction and $ffff));
-              end;
-            { LDAH }
-            $9:
-              begin
-                 rega:=(instruction and $3e00000) shr 21;
-                 regb:=(instruction and $1f0000) shr 16;
-                 if rega<>r_zero then
-                   state.r[rega].valueq:=state.r[regb].valueq+
-                     (int64(integer(instruction and $ffff))*65536);
-              end;
-            { LDQ_U }
-            $B:
-              begin
-                 { !!!!! no MSB support yet! }
-                 rega:=(instruction and $3e00000) shr 21;
-                 regb:=(instruction and $1f0000) shr 16;
-                 valueqb:=state.r[regb].valueq+
-                     (int64(integer(instruction and $ffff)));
-                 tqwordrec(valueqb).low32:=tqwordrec(valueqb).low32 and $fffffff8;
-                 if rega<>r_zero then
-                   state.r[rega].valueq:=memory.readq(valueqb);
-              end;
-            { STQ_U }
-            $f:
-              begin
-                 { !!!!! no MSB support yet! }
-                 rega:=(instruction and $3e00000) shr 21;
-                 regb:=(instruction and $1f0000) shr 16;
-                 va.valueq:=state.r[regb].valueq+
-                   (int64(integer(instruction and $ffff)));
-                 memory.writeq(va.valueq,state.r[rega].valueq);
-              end;
-
-            { ************* opcode $10 ************** }
-            $10:
-              begin
-                 rega:=(instruction and $3e00000) shr 21;
-                 regb:=(instruction and $1f0000) shr 16;
-                 regc:=instruction and $1f;
-                 valueqa:=state.r[rega].valueq;
-                 if (instruction and $1000)<>0 then
-                   valueqb:=(instruction and $1fe000) shr 13
-                 else
-                   valueqb:=state.r[regb].valueq;
-                 case (instruction and $fe0) shr 5 of
-                    { ADDL }
-                    $0:
-                      begin
-                         if regc<>r_zero then
-                           state.r[regc].low32:=tqwordrec(valueqa).low32+tqwordrec(valueqb).low32;
-                      end;
-                    { CMPULT }
-                    $1D:
-                      begin
-                         if (regc<>r_zero) then
-                           state.r[regc].valueq:=byte(ltu(valueqa,valueqb));
-                      end;
-                    { ADDQ }
-                    $20:
-                      begin
-                         if regc<>r_zero then
-                           state.r[regc].valueq:=valueqa+valueqb;
-                      end;
-                    { S4ADDQ }
-                    $22:
-                      begin
-                         if regc<>r_zero then
-                           state.r[regc].valueq:=valueqa*4+valueqb;
-                      end;
-                    { SUBQ }
-                    $29:
-                      begin
-                         if regc<>r_zero then
-                           state.r[regc].valueq:=valueqa-valueqb;
-                      end;
-                    { S4SUBQ }
-                    $2B:
-                      begin
-                         if regc<>r_zero then
-                           state.r[regc].valueq:=valueqa*4-valueqb;
-                      end;
-                    { CMPEQ }
-                    $2D:
-                      begin
-                         if (regc<>r_zero) then
-                           state.r[regc].valueq:=byte(valueqa=valueqb);
-                      end;
-                    { S8ADDQ }
-                    $32:
-                      begin
-                         if regc<>r_zero then
-                           state.r[regc].valueq:=valueqa*8+valueqb;
-                      end;
-                    { S8SUBQ }
-                    $3B:
-                      begin
-                         if regc<>r_zero then
-                           state.r[regc].valueq:=valueqa*8-valueqb;
-                      end;
-                    { CMPULE }
-                    $3D:
-                      begin
-                         if (regc<>r_zero) then
-                           state.r[regc].valueq:=byte(leu(valueqa,valueqb));
-                      end;
-                    { CMPLT }
-                    $4D:
-                      begin
-                         if (regc<>r_zero) then
-                           state.r[regc].valueq:=byte(valueqa<valueqb);
-                      end;
-                    { CMPLE }
-                    $6D:
-                      begin
-                         if (regc<>r_zero) then
-                           state.r[regc].valueq:=byte(valueqa<=valueqb);
-                      end;
-                    else
-                      illegalopcode(instructionpc);
-                 end;
-              end;
-
-            { ************* opcode $11 ************** }
-            $11:
-              begin
-                 rega:=(instruction and $3e00000) shr 21;
-                 regb:=(instruction and $1f0000) shr 16;
-                 regc:=instruction and $1f;
-                 valueqa:=state.r[rega].valueq;
-                 if (instruction and $1000)<>0 then
-                   valueqb:=(instruction and $1fe000) shr 13
-                 else
-                   valueqb:=state.r[regb].valueq;
-                 case (instruction and $fe0) shr 5 of
-                    { AND }
-                    $00:
-                      begin
-                         if regc<>r_zero then
-                           begin
-                              state.r[regc].low32:=tqwordrec(valueqa).low32 and
-                                tqwordrec(valueqb).low32;
-                              state.r[regc].high32:=tqwordrec(valueqa).high32 and
-                                tqwordrec(valueqb).high32;
-                           end;
-                      end;
-                    { BIC }
-                    $08:
-                      begin
-                         if regc<>r_zero then
-                           begin
-                              state.r[regc].low32:=tqwordrec(valueqa).low32 and
-                                not(tqwordrec(valueqb).low32);
-                              state.r[regc].high32:=tqwordrec(valueqa).high32 and
-                                not(tqwordrec(valueqb).high32);
-                           end;
-                      end;
-                    { CMOVLBS }
-                    $14:
-                      begin
-                         if (regc<>r_zero) and ((tqwordrec(valueqa).low32 and 1)<>0) then
-                           state.r[regc].valueq:=valueqb;
-                      end;
-                    { CMOVLBC }
-                    $16:
-                      begin
-                         if (regc<>r_zero) and ((tqwordrec(valueqa).low32 and 1)=0) then
-                           state.r[regc].valueq:=valueqb;
-                      end;
-                    { BIS }
-                    $20:
-                      begin
-                         if regc<>r_zero then
-                           begin
-                              state.r[regc].low32:=tqwordrec(valueqa).low32 or
-                                tqwordrec(valueqb).low32;
-                              state.r[regc].high32:=tqwordrec(valueqa).high32 or
-                                tqwordrec(valueqb).high32;
-                           end;
-                      end;
-                    { CMOVEQ }
-                    $24:
-                      begin
-                         if (regc<>r_zero) and (valueqa=0) then
-                           state.r[regc].valueq:=valueqb;
-                      end;
-                    { CMOVNE }
-                    $26:
-                      begin
-                         if (regc<>r_zero) and (valueqa<>0) then
-                           state.r[regc].valueq:=valueqb;
-                      end;
-                    { ORNOT }
-                    $28:
-                      begin
-                         if regc<>r_zero then
-                           begin
-                              state.r[regc].low32:=tqwordrec(valueqa).low32 or
-                                not(tqwordrec(valueqb).low32);
-                              state.r[regc].high32:=tqwordrec(valueqa).high32 or
-                                not(tqwordrec(valueqb).high32);
-                           end;
-                      end;
-                    { XOR }
-                    $40:
-                      begin
-                         if regc<>r_zero then
-                           begin
-                              state.r[regc].valueq:=state.r[rega].valueq xor
-                                valueqb;
-                           end;
-                      end;
-                    { CMOVLT }
-                    $44:
-                      begin
-                         if (regc<>r_zero) and (valueqa<0) then
-                           state.r[regc].valueq:=valueqb;
-                      end;
-                    { CMOVGE }
-                    $46:
-                      begin
-                         if (regc<>r_zero) and (valueqa>=0) then
-                           state.r[regc].valueq:=valueqb;
-                      end;
-                    { EQV }
-                    $48:
-                      begin
-                         if regc<>r_zero then
-                           begin
-                              state.r[regc].valueq:=valueqa xor
-                                not(valueqb);
-                           end;
-                      end;
-                    { CMOVLE }
-                    $64:
-                      begin
-                         if (regc<>r_zero) and (valueqa<=0) then
-                           state.r[regc].valueq:=valueqb;
-                      end;
-                    { CMOVGT }
-                    $66:
-                      begin
-                         if (regc<>r_zero) and (valueqa<=0) then
-                           state.r[regc].valueq:=valueqb;
-                      end;
-                    else
-                      illegalopcode(instructionpc);
-                 end;
-              end;
-
-            { ************* opcode $12 ************** }
-            $12:
-              begin
-                 rega:=(instruction and $3e00000) shr 21;
-                 regb:=(instruction and $1f0000) shr 16;
-                 regc:=instruction and $1f;
-                 valueqa:=state.r[rega].valueq;
-                 if (instruction and $1000)<>0 then
-                   valueqb:=(instruction and $1fe000) shr 13
-                 else
-                   valueqb:=state.r[regb].valueq;
-                 case (instruction and $fe0) shr 5 of
-                    { MSKBL }
-                    $02:
-                      begin
-                         { !!!!! no MSB support yet! }
-                         il:=1 shl (tqwordrec(valueqb).low32 and $7);
-                         if (regc<>r_zero) then
-                           byte_zap(valueqa,il and $ff,state.r[regc].valueq);
-                      end;
-                    { EXTBL }
-                    $06:
-                      begin
-                         { !!!!! no MSB support yet! }
-                         shift_right_q(valueqa,(tqwordrec(valueqb).low32 and $7)*8,valueqa);
-                         if (regc<>r_zero) then
-                           byte_zap(valueqa,$fe,state.r[regc].valueq);
-                      end;
-                    { INSBL }
-                    $0B:
-                      begin
-                         { !!!!! no MSB support yet! }
-                         il:=1 shl (tqwordrec(valueqb).low32 and $7);
-                         shift_left_q(valueqa,(tqwordrec(valueqb).low32 and $7)*8,valueqa);
-                         if (regc<>r_zero) then
-                           byte_zap(valueqa,not(il and $ff),state.r[regc].valueq);
-                      end;
-                    { MSKWL }
-                    $12:
-                      begin
-                         { !!!!! no MSB support yet! }
-                         il:=3 shl (tqwordrec(valueqb).low32 and $7);
-                         if (regc<>r_zero) then
-                           byte_zap(valueqa,il and $ff,state.r[regc].valueq);
-                      end;
-                    { EXTWL }
-                    $16:
-                      begin
-                         { !!!!! no MSB support yet! }
-                         shift_right_q(valueqa,(tqwordrec(valueqb).low32 and $7)*8,valueqa);
-                         if (regc<>r_zero) then
-                           byte_zap(valueqa,$fc,state.r[regc].valueq);
-                      end;
-                    { MSKLL }
-                    $22:
-                      begin
-                         { !!!!! no MSB support yet! }
-                         il:=$f shl (tqwordrec(valueqb).low32 and $7);
-                         if (regc<>r_zero) then
-                           byte_zap(valueqa,il and $ff,state.r[regc].valueq);
-                      end;
-                    { EXTLL }
-                    $26:
-                      begin
-                         { !!!!! no MSB support yet! }
-                         shift_right_q(valueqa,(tqwordrec(valueqb).low32 and $7)*8,valueqa);
-                         if (regc<>r_zero) then
-                           byte_zap(valueqa,$f0,state.r[regc].valueq);
-                      end;
-                    { ZAP }
-                    $30:
-                      begin
-                         if regc<>r_zero then
-                           byte_zap(valueqa,trunc(valueqb),state.r[regc].valueq);
-                      end;
-                    { ZAPNOT }
-                    $31:
-                      begin
-                         if regc<>r_zero then
-                           byte_zap(valueqa,not(trunc(valueqb)),state.r[regc].valueq);
-                      end;
-                    { MSKQL }
-                    $32:
-                      begin
-                         { !!!!! no MSB support yet! }
-                         il:=$ff shl (tqwordrec(valueqb).low32 and $7);
-                         if (regc<>r_zero) then
-                           byte_zap(valueqa,il and $ff,state.r[regc].valueq);
-                      end;
-                    { SRL }
-                    $34:
-                      begin
-                         if regc<>r_zero then
-                           state.r[regc].valueq:=state.r[regc].valueq shr (valueqb and $3f);
-                      end;
-                    { EXTQL }
-                    $36:
-                      begin
-                         { !!!!! no MSB support yet! }
-                         shift_right_q(valueqa,(tqwordrec(valueqb).low32 and $7)*8,valueqa);
-                         if (regc<>r_zero) then
-                           state.r[regc].valueq:=valueqa;
-                      end;
-                    { SLL }
-                    $39:
-                      begin
-                         if regc<>r_zero then
-                           shift_left_q(valueqa,trunc(valueqb) and $3f,state.r[regc].valueq);
-                      end
-                    else
-                      illegalopcode(instructionpc);
-                 end;
-              end;
-
-            { ************* opcode $13 ************** }
-            $13:
-              begin
-                 rega:=(instruction and $3e00000) shr 21;
-                 regb:=(instruction and $1f0000) shr 16;
-                 regc:=instruction and $1f;
-                 valueqa:=state.r[rega].valueq;
-                 if (instruction and $1000)<>0 then
-                   valueqb:=(instruction and $1fe000) shr 13
-                 else
-                   valueqb:=state.r[regb].valueq;
-                 case (instruction and $fe0) shr 5 of
-                    { UMULH }
-                    $30:
-                      if regc<>31 then
-                        begin
-                           mulqword(valueqa,valueqb,oi);
-                           state.r[regc].valueq:=towordrec(oi).high64;
-                        end;
-                    else
-                      illegalopcode(instructionpc);
-                 end;
-              end;
-
-            { ************* opcode $17 ************** }
-            $17:
-              case (instruction and $ffe0) shr 5 of
-                 { MT_FPCR }
-                 $24:
-                   begin
-                      rega:=(instruction and $3e00000) shr 21;
-                      state.fpcr:=state.f[rega].valueq;
-                   end;
-                 { MF_FPCR }
-                 $25:
-                   begin
-                      rega:=(instruction and $3e00000) shr 21;
-                      if rega<>f_zero then
-                        state.f[rega].valueq:=state.fpcr;
-                   end;
-                 else
-                   illegalopcode(instructionpc);
-              end;
-
-            { ************* opcode $18 ************** }
-            $18:
-              case instruction and $ffff of
-                 { EXCB }
-                 $400:
-                    instructionignored('EXCN');
-                 else
-                    illegalopcode(instructionpc);
-              end;
-
-            { JMP,JSR,RET JSR_COROUTINE }
-            $1a:
-              begin
-                 rega:=(instruction and $3e00000) shr 21;
-                 regb:=(instruction and $1f0000) shr 16;
-                 va:=state.r[regb];
-                 va.low32:=va.low32 and $fffffffe;
-                 if rega<>31 then
-                   state.r[rega].valueq:=state.pc;
-                 state.pc:=va.valueq;
-{$ifdef FASTMEM}
-                 updatepc:=true;
-{$endif FASTMEM}
-              end;
-            { LDS }
-            $22:
-              begin
-                 { !!!!! no MSB support yet! }
-                 rega:=(instruction and $3e00000) shr 21;
-                 regb:=(instruction and $1f0000) shr 16;
-                 va.valueq:=state.r[regb].valueq+
-                   (int64(integer(instruction and $ffff)));
-                 if rega<>f_zero then
-                   begin
-                      { we need to copy the bit pattern! }
-                      dword(fs):=memory.readd(va.valueq);
-                      state.f[rega].valued:=fs;
-                   end;
-                 { !!!!!! no translation exceptions! }
-              end;
-            { LDT }
-            $23:
-              begin
-                 { !!!!! no MSB support yet! }
-                 rega:=(instruction and $3e00000) shr 21;
-                 regb:=(instruction and $1f0000) shr 16;
-                 va.valueq:=state.r[regb].valueq+
-                   (int64(integer(instruction and $ffff)));
-                 if rega<>f_zero then
-                   state.f[rega].valueq:=memory.readq(va.valueq);
-                 { !!!!!! no translation exceptions! }
-              end;
-{$ifdef dummy}
-            { !!!!!!!! STF }
-            $24:
-              begin
-                 { !!!!! no MSB support yet! }
-                 rega:=(instruction and $3e00000) shr 21;
-                 regb:=(instruction and $1f0000) shr 16;
-                 va.valueq:=state.r[regb].valueq+
-                   (int64(integer(instruction and $ffff)));
-                 fs:=state.f[rega].valued;
-                 memory.writed(va.valueq,longint(fs));
-                 { !!!!!! no tranlation exceptions! }
-              end;
-            { !!!!!!!!!!!! STG }
-            $25:
-              begin
-                 { !!!!! no MSB support yet! }
-                 rega:=(instruction and $3e00000) shr 21;
-                 regb:=(instruction and $1f0000) shr 16;
-                 va.valueq:=state.r[regb].valueq+
-                   (int64(integer(instruction and $ffff)));
-                 memory.writeq(va.valueq,state.f[rega].valueq);
-                 { !!!!!! no translation exceptions! }
-              end;
-{$endif dummy}
-            { !!!!!!!!!!!!! STS }
-            $26:
-              begin
-                 { !!!!! no MSB support yet! }
-                 rega:=(instruction and $3e00000) shr 21;
-                 regb:=(instruction and $1f0000) shr 16;
-                 va.valueq:=state.r[regb].valueq+
-                   (int64(integer(instruction and $ffff)));
-                 fs:=state.f[rega].valued;
-                 memory.writed(va.valueq,longint(fs));
-                 { !!!!!! no tranlation exceptions! }
-              end;
-            { STT }
-            $27:
-              begin
-                 { !!!!! no MSB support yet! }
-                 rega:=(instruction and $3e00000) shr 21;
-                 regb:=(instruction and $1f0000) shr 16;
-                 va.valueq:=state.r[regb].valueq+
-                   (int64(integer(instruction and $ffff)));
-                 memory.writeq(va.valueq,state.f[rega].valueq);
-                 { !!!!!! no translation exceptions! }
-              end;
-            { LDL }
-            $28:
-              begin
-                 { !!!!! no MSB support yet! }
-                 rega:=(instruction and $3e00000) shr 21;
-                 regb:=(instruction and $1f0000) shr 16;
-                 if rega<>r_zero then
-                   state.r[rega].low32:=memory.readalignedd(state.r[regb].valueq+
-                     (int64(integer(instruction and $ffff))));
-                 { sign extend }
-                 if state.r[rega].low32<0 then
-                   state.r[rega].high32:=$ffffffff
-                 else
-                   state.r[rega].high32:=0;
-              end;
-            { LDQ }
-            $29:
-              begin
-                 { !!!!! no MSB support yet! }
-                 rega:=(instruction and $3e00000) shr 21;
-                 regb:=(instruction and $1f0000) shr 16;
-                 if rega<>r_zero then
-                   state.r[rega].valueq:=memory.readalignedq(state.r[regb].valueq+
-                     (int64(integer(instruction and $ffff))));
-              end;
-            { STL }
-            $2C:
-              begin
-                 { !!!!! no MSB support yet! }
-                 rega:=(instruction and $3e00000) shr 21;
-                 regb:=(instruction and $1f0000) shr 16;
-                 va.valueq:=state.r[regb].valueq+
-                   (int64(integer(instruction and $ffff)));
-                 memory.writealignedd(va.valueq,state.r[rega].low32);
-              end;
-            { STQ }
-            $2D:
-              begin
-                 { !!!!! no MSB support yet! }
-                 rega:=(instruction and $3e00000) shr 21;
-                 regb:=(instruction and $1f0000) shr 16;
-                 va.valueq:=state.r[regb].valueq+
-                   (int64(integer(instruction and $ffff)));
-                 memory.writeq(va.valueq,state.r[rega].valueq);
-              end;
-            { BR,BSR }
-            $30,$34:
-              begin
-                 rega:=(instruction and $3e00000) shr 21;
-                 if rega<>31 then
-                   state.r[rega].valueq:=state.pc;
-                 state.pc:=state.pc+getbranchdisp;
-{$ifdef FASTMEM}
-                 updatepc:=true;
-{$endif FASTMEM}
-              end;
-            { BLSC }
-            $38:
-              begin
-                 rega:=(instruction and $3e00000) shr 21;
-                 va.valueq:=state.pc+getbranchdisp;
-                 if (state.r[rega].low32 and 1)=0 then
-                   begin
-                      state.pc:=va.valueq;
-{$ifdef FASTMEM}
-                      updatepc:=true;
-{$endif FASTMEM}
-                   end;
-              end;
-            { BEQ }
-            $39:
-              begin
-                 rega:=(instruction and $3e00000) shr 21;
-                 va.valueq:=state.pc+getbranchdisp;
-                 if state.r[rega].valueq=0 then
-                   begin
-                      state.pc:=va.valueq;
-{$ifdef FASTMEM}
-                      updatepc:=true;
-{$endif FASTMEM}
-                   end;
-              end;
-            { BLT }
-            $3A:
-              begin
-                 rega:=(instruction and $3e00000) shr 21;
-                 va.valueq:=state.pc+getbranchdisp;
-                 if state.r[rega].valueq<0 then
-                   begin
-                      state.pc:=va.valueq;
-{$ifdef FASTMEM}
-                      updatepc:=true;
-{$endif FASTMEM}
-                   end;
-              end;
-            { BLE }
-            $3B:
-              begin
-                 rega:=(instruction and $3e00000) shr 21;
-                 va.valueq:=state.pc+getbranchdisp;
-                 if state.r[rega].valueq<=0 then
-                   begin
-                      state.pc:=va.valueq;
-{$ifdef FASTMEM}
-                      updatepc:=true;
-{$endif FASTMEM}
-                   end;
-              end;
-            { BLBS }
-            $3C:
-              begin
-                 rega:=(instruction and $3e00000) shr 21;
-                 va.valueq:=state.pc+getbranchdisp;
-                 if (state.r[rega].low32 and 1)<>0 then
-                   begin
-                      state.pc:=va.valueq;
-{$ifdef FASTMEM}
-                      updatepc:=true;
-{$endif FASTMEM}
-                   end;
-              end;
-            { BNE }
-            $3D:
-              begin
-                 rega:=(instruction and $3e00000) shr 21;
-                 va.valueq:=state.pc+getbranchdisp;
-                 if state.r[rega].valueq<>0 then
-                   begin
-                      state.pc:=va.valueq;
-{$ifdef FASTMEM}
-                      updatepc:=true;
-{$endif FASTMEM}
-                   end;
-              end;
-            { BGE }
-            $3E:
-              begin
-                 rega:=(instruction and $3e00000) shr 21;
-                 va.valueq:=state.pc+getbranchdisp;
-                 if state.r[rega].valueq>=0 then
-                   begin
-                      state.pc:=va.valueq;
-{$ifdef FASTMEM}
-                      updatepc:=true;
-{$endif FASTMEM}
-                   end;
-              end;
-            { BGT }
-            $3F:
-              begin
-                 rega:=(instruction and $3e00000) shr 21;
-                 va.valueq:=state.pc+getbranchdisp;
-                 if state.r[rega].valueq>0 then
-                   begin
-                      state.pc:=va.valueq;
-{$ifdef FASTMEM}
-                      updatepc:=true;
-{$endif FASTMEM}
-                   end;
-              end;
-          else
-              illegalopcode(instructionpc);
-         end;
-         instrcount:=instrcount+1;
-       until false;
-    end;
-
-  destructor talphasim.done;
-
-    begin
-       { deallocate memory }
-       { memory.done; }
-    end;
-
-  procedure illelfformat;
-
-    begin
-       writeln('Illegal format of ELF');
-       halt(1);
-    end;
-
-  var
-     f : file;
-     elf64_hdr : telf64_hdr;
-     i : tindex;
-     j,q : qword;
-     b : byte;
-     elf64_phdr : pelf64_phdr_array;
-
-  const
-     et2str : array[0..6] of string[10] = ('ET_NONE','ET_REL','ET_EXEC',
-                                           'ET_DYN','ET_CORE','ET_LOPROC',
-                                           'ET_HIPROC');
-     em2str : array[0..11] of string[10] = ('EM_NONE','EM_M32','EM_SPARC',
-                                            'EM_386','EM_68K','EM_88K',
-                                            'EM_486','EM_860','EM_MIPS','',
-                                            'EM_MIPS_RS4_BE','EM_SPARC64');
-
-  begin
-     if paramcount<>1 then
-       begin
-          writeln('Usage ALPHAEMU <elf-executable>');
-          halt(1);
-       end;
-{$ifdef DEBUG}
-     write('Init... ');
-{$endif DEBUG}
-     assign(f,paramstr(1));
-     {$I-}
-     reset(f,1);
-     {$I+}
-     if ioresult<>0 then
-       begin
-          writeln;
-          writeln('Can''t open input file ',paramstr(1));
-          halt(1);
-       end;
-     blockread(f,elf64_hdr,sizeof(elf64_hdr));
-{$ifdef DEBUG}
-     writeln('Signature:');
-     for i:=0 to 15 do
-       write(elf64_hdr.e_ident[i],'(',ord(elf64_hdr.e_ident[i]),') ');
-     writeln;
-     writeln('ELF type: ',et2str[elf64_hdr.e_type]);
-     case elf64_hdr.e_machine of
-        0..11:
-          writeln('ELF machine: ',em2str[elf64_hdr.e_machine]);
-        15:
-          writeln('ELF machine: EM_PARISC');
-        18:
-          writeln('ELF machine: EM_SPARC32PLUS');
-        20:
-          writeln('ELF machine: EM_PPC');
-        $9026:
-          writeln('ELF machine: EM_ALPHA');
-        else
-          illelfformat;
-     end;
-
-     writeln('ELF header size: $',hexstr(elf64_hdr.e_ehsize,8));
-     writeln('Entry point: $',qword2str(elf64_hdr.e_entry));
-
-     writeln('Program header table file offset: $',qword2str(elf64_hdr.e_phoff));
-     writeln('Number of program headers : $',hexstr(elf64_hdr.e_phnum,8));
-     writeln('Size of one program header: $',hexstr(elf64_hdr.e_phentsize,8));
-
-     writeln('Section header table file offset: $',qword2str(elf64_hdr.e_shoff));
-     { writeln('Section name index: $',hexstr(elf64_hdr.e_shstrndx,8)); }
-{$endif}
-     if (elf64_hdr.e_ident[0]<>chr(127)) or
-       (elf64_hdr.e_ident[1]<>'E') or
-       (elf64_hdr.e_ident[2]<>'L') or
-       (elf64_hdr.e_ident[3]<>'F') or
-       (elf64_hdr.e_type<>2) or
-       (elf64_hdr.e_machine<>$9026) then
-       illelfformat;
-
-     { load programm headers }
-     getmem(elf64_phdr,elf64_hdr.e_phentsize*elf64_hdr.e_phnum);
-     seek(f,trunc(elf64_hdr.e_phoff));
-     blockread(f,elf64_phdr^,elf64_hdr.e_phentsize*elf64_hdr.e_phnum);
-     for i:=0 to elf64_hdr.e_phnum-1 do
-       begin
-{$ifdef DEBUG}
-          writeln('Programm header ',i);
-          dump_phdr(elf64_phdr^[i]);
-{$endif DEBUG}
-       end;
-     { ok, now init the emulator }
-     sim.init;
-     {$ifdef FPC}
-     stopsim:=@_stopsim;
-     {$else FPC}
-     stopsim:=_stopsim;
-     {$endif FPC}
-{$ifdef DEBUG}
-     writeln('OK');
-     write('Loading memory... ');
-{$endif DEBUG}
-     { load memory }
-     for i:=0 to elf64_hdr.e_phnum-1 do
-       begin
-{$ifdef DEBUG}
-          write(i+1,' ');
-{$endif DEBUG}
-          sim.memory.allocate(elf64_phdr^[i].p_vaddr,elf64_phdr^[i].p_memsz);
-          seek(f,trunc(elf64_phdr^[i].p_offset));
-          j:=0;
-          { can we speedup the loading? }
-          if (tqwordrec(elf64_phdr^[i].p_filesz).low32 and $7)=0 then
-            while j<elf64_phdr^[i].p_filesz do
-              begin
-                 blockread(f,q,8);
-                 sim.memory.writeq(j+elf64_phdr^[i].p_vaddr,q);
-                 j:=j+8;
-              end
-          else
-            while j<elf64_phdr^[i].p_filesz do
-              begin
-                 blockread(f,b,1);
-                 sim.memory.writeb(j+elf64_phdr^[i].p_vaddr,b);
-                 j:=j+1;
-              end;
-       end;
-     { clean up from the file loading }
-     freemem(elf64_phdr,elf64_hdr.e_phentsize*elf64_hdr.e_phnum);
-     close(f);
-{$ifdef DEBUG}
-     writeln('OK');
-     writeln('Running program ...');
-{$endif DEBUG}
-     sim.run(elf64_hdr.e_entry);
-{$ifdef DEBUG}
-     writeln('Ready');
-{$endif DEBUG}
-     stopsim;
-     sim.done;
-  end.

+ 0 - 203
utils/simulator/fastmm64.pas

@@ -1,203 +0,0 @@
-{
-    This file is part of the Free Pascal simulator environment
-    Copyright (c) 1999-2000 by Florian Klaempfl
-
-    This unit implemements a memory manager for 64 bit processor
-    simulations, it needs a 32 bit compiler to be compiled
-
-    See the file COPYING.FPC, included in this distribution,
-    for details about the copyright.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
- **********************************************************************}
-{$N+}
-unit fastmm64;
-
-  interface
-
-    uses
-       simbase;
-
-    type
-       taddr = qword;
-
-       tmemorymanager = object
-          mem : array[0..65535] of pbyte;
-          constructor init;
-          { "memory" access routines }
-          function readalignedq(addr : taddr) : qword;
-          function readq(addr : taddr) : qword;
-          function readalignedd(addr : taddr) : dword;
-          function readd(addr : taddr) : dword;
-          function readb(addr : taddr) : dword;
-          procedure writeb(addr : taddr;b : byte);
-          procedure writealignedd(addr : taddr;d : dword);
-          procedure writed(addr : taddr;d : dword);
-          procedure writeq(addr : taddr;q : qword);
-          procedure allocate(addr : taddr;size : qword);
-       end;
-
-    var
-       { address of the currently executed instruction, }
-       { necessary for correct output of exception      }
-       instructionpc : taddr;
-
-  implementation
-
-    procedure exception(const s : string;addr : taddr);
-
-      begin
-         writeln;
-         writeln('Exception: ',s,' at $',qword2str(addr));
-         runerror(255);
-         stopsim;
-      end;
-
-    constructor tmemorymanager.init;
-
-      begin
-         fillchar(mem,sizeof(mem),0);
-      end;
-
-    procedure tmemorymanager.allocate(addr : taddr;size : qword);
-
-      procedure allocateblock(addr : taddr);
-
-        var
-           upperbits : longint;
-
-        begin
-           if (tqwordrec(addr).high32 and $fffffff0)<>0 then
-             begin
-                writeln('This memory manager supports only 36 bit');
-                writeln('Base address was ',qword2str(addr));
-                halt(1);
-             end;
-           upperbits:=((tqwordrec(addr).high32 and $f) shl 12) or ((tqwordrec(addr).low32 and $fff) shr 20);
-           if not(assigned(mem[upperbits])) then
-             begin
-                getmem(mem[upperbits],1024*1024);
-                fillchar(mem[upperbits]^,1024*1024,0);
-             end;
-        end;
-
-      var
-         asize : qword;
-
-      begin
-         while size>0 do
-           begin
-              if size>1024*1024 then
-                asize:=1024*1024;
-              allocateblock(addr);
-              if asize>size then
-                break;
-              size:=size-asize;
-              addr:=addr+asize;
-           end;
-      end;
-
-    function tmemorymanager.readq(addr : taddr) : qword;
-
-      var
-         h : qword;
-
-      begin
-         tqwordrec(h).low32:=readd(addr);
-         tqwordrec(h).high32:=readd(addr+4);
-         readq:=h;
-      end;
-
-    function tmemorymanager.readd(addr : taddr) : dword;
-
-      begin
-         readd:=readb(addr)+readb(addr+1) shl 8+readb(addr+2) shl 16+
-           readb(addr+3) shl 24;
-      end;
-
-    function tmemorymanager.readalignedd(addr : taddr) : dword;
-
-      var
-         upperbits : longint;
-
-      begin
-         if (tqwordrec(addr).low32 and $3)<>0 then
-           exception('Alignment violation (dword) to $'+qword2str(addr),instructionpc);
-         upperbits:=((tqwordrec(addr).high32 and $f) shl 12) or ((tqwordrec(addr).low32 and $fff) shr 20);
-         if not(assigned(mem[upperbits])) then
-           exception('Access violation to $'+qword2str(addr),instructionpc);
-         readalignedd:=pdword(mem[upperbits])[(tqwordrec(addr).low32 and $fffff) shr 2];
-      end;
-
-    function tmemorymanager.readalignedq(addr : taddr) : qword;
-
-      var
-         upperbits : longint;
-
-      begin
-         if (tqwordrec(addr).low32 and $7)<>0 then
-           exception('Alignment violation (dword) to $'+qword2str(addr),instructionpc);
-         upperbits:=((tqwordrec(addr).high32 and $f) shl 12) or ((tqwordrec(addr).low32 and $fff) shr 20);
-         if not(assigned(mem[upperbits])) then
-           exception('Access violation to $'+qword2str(addr),instructionpc);
-         readalignedq:=pqword(mem[upperbits])[(tqwordrec(addr).low32 and $fffff) shr 3];
-      end;
-
-    function tmemorymanager.readb(addr : taddr) : dword;
-
-      var
-         upperbits : longint;
-
-      begin
-         upperbits:=((tqwordrec(addr).high32 and $f) shl 12) or ((tqwordrec(addr).low32 and $fff) shr 20);
-         if not(assigned(mem[upperbits])) then
-           exception('Access violation to $'+qword2str(addr),instructionpc);
-         readb:=mem[upperbits,tqwordrec(addr).low32 and $fffff];
-      end;
-
-    procedure tmemorymanager.writeb(addr : taddr;b : byte);
-
-      var
-         upperbits : longint;
-
-      begin
-         upperbits:=((tqwordrec(addr).high32 and $f) shl 12) or ((tqwordrec(addr).low32 and $fff) shr 20);
-         if not(assigned(mem[upperbits])) then
-           exception('Access violation to $'+qword2str(addr),instructionpc);
-         mem[upperbits,tqwordrec(addr).low32 and $fffff]:=b;
-      end;
-
-    procedure tmemorymanager.writealignedd(addr : taddr;d : dword);
-
-      var
-         upperbits : longint;
-
-      begin
-         if (tqwordrec(addr).low32 and $3)<>0 then
-           exception('Alignment violation (dword) to $'+qword2str(addr),instructionpc);
-         upperbits:=((tqwordrec(addr).high32 and $f) shl 12) or ((tqwordrec(addr).low32 and $fff) shr 20);
-         if not(assigned(mem[upperbits])) then
-           exception('Access violation to $'+qword2str(addr),instructionpc);
-         pdword(mem[upperbits])[(tqwordrec(addr).low32 and $fffff) shr 2]:=d;
-      end;
-
-    procedure tmemorymanager.writed(addr : taddr;d : dword);
-
-      begin
-         writeb(addr,tdword(d)[0]);
-         writeb(addr+1,tdword(d)[1]);
-         writeb(addr+2,tdword(d)[2]);
-         writeb(addr+3,tdword(d)[3]);
-      end;
-
-    procedure tmemorymanager.writeq(addr : taddr;q : qword);
-
-      begin
-         writed(addr,tqwordrec(q).low32);
-         writed(addr+4,tqwordrec(q).high32);
-      end;
-
-end.

+ 0 - 295
utils/simulator/mm64.pas

@@ -1,295 +0,0 @@
-{
-    This file is part of the Free Pascal simulator environment
-    Copyright (c) 1999-2000 by Florian Klaempfl
-
-    This unit implemements a memory manager for 64 bit processor
-    simulations, it works also with TP
-
-    See the file COPYING.FPC, included in this distribution,
-    for details about the copyright.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
- **********************************************************************}
-{ a simple 64 bit simulator memory manager, also running with TP }
-{$N+}
-unit mm64;
-
-  interface
-
-    uses
-       simbase;
-
-    const
-       memoryblocksize = 32768;
-
-    type
-       taddr = qword;
-       tmemoryblock = array[0..memoryblocksize-1] of byte;
-       pmemoryblock = ^tmemoryblock;
-
-       pmemoryarea = ^tmemoryarea;
-       tmemoryarea = record
-         addr : qword;
-         memory : pmemoryblock;
-         size : dword;
-         next : pmemoryarea;
-       end;
-
-       tmemorymanager = object
-          mem : pmemoryarea;
-          constructor init;
-          { "memory" access routines }
-          function readalignedq(addr : taddr) : qword;
-          function readq(addr : taddr) : qword;
-          function readalignedd(addr : taddr) : dword;
-          function readd(addr : taddr) : dword;
-          function readb(addr : taddr) : dword;
-          procedure writeb(addr : taddr;b : byte);
-          procedure writealignedd(addr : taddr;d : dword);
-          procedure writed(addr : taddr;d : dword);
-          procedure writeq(addr : taddr;q : qword);
-          procedure allocate(addr : taddr;size : qword);
-       end;
-
-    var
-       { address of the currently executed instruction, }
-       { necessary for correct output of exception      }
-       instructionpc : taddr;
-
-  implementation
-
-    procedure exception(const s : string;addr : taddr);
-
-      begin
-         writeln;
-         writeln('Exception: ',s,' at $',qword2str(addr));
-         stopsim;
-      end;
-
-    constructor tmemorymanager.init;
-
-      begin
-         mem:=nil;
-      end;
-
-    procedure tmemorymanager.allocate(addr : taddr;size : qword);
-
-      var
-         ma : pmemoryarea;
-         asize : qword;
-
-      begin
-         while size>0 do
-           begin
-              if size>32768 then
-                asize:=32768
-              else
-                asize:=size;
-              size:=size-asize;
-              new(ma);
-              getmem(ma^.memory,trunc(asize));
-              fillchar(ma^.memory^,trunc(asize),0);
-              ma^.size:=trunc(asize);
-              ma^.addr:=addr;
-              addr:=addr+asize;
-
-              ma^.next:=mem;
-              mem:=ma;
-           end;
-      end;
-
-    function tmemorymanager.readq(addr : taddr) : qword;
-
-      var
-         h : qword;
-         ma : pmemoryarea;
-         qw : tqwordrec;
-
-      begin
-         ma:=mem;
-         while assigned(ma) do
-           begin
-              if (addr>=ma^.addr) and (addr<ma^.addr+ma^.size) then
-                begin
-                   if addr<ma^.addr+ma^.size-7 then
-                     begin
-                        move(ma^.memory^[trunc(addr-ma^.addr)],h,8);
-                        readq:=h;
-                        exit;
-                     end
-                   else
-                     begin
-                        qw.low32:=readd(addr);
-                        qw.high32:=readd(addr+4);
-                        readq:=comp(qw);
-                        exit;
-                     end;
-                end;
-              ma:=ma^.next;
-           end;
-         exception('Access violation to $'+qword2str(addr),instructionpc);
-      end;
-
-    function tmemorymanager.readalignedq(addr : taddr) : qword;
-
-      var
-         h : qword;
-         ma : pmemoryarea;
-         qw : tqwordrec;
-
-      begin
-         if (tqwordrec(addr).low32 and $7)<>0 then
-           exception('Alignment violation (dword) to $'+qword2str(addr),instructionpc);
-         ma:=mem;
-         while assigned(ma) do
-           begin
-              if (addr>=ma^.addr) and (addr<ma^.addr+ma^.size) then
-                begin
-                    move(ma^.memory^[trunc(addr-ma^.addr)],h,8);
-                    readalignedq:=h;
-                    exit;
-                end;
-              ma:=ma^.next;
-           end;
-         exception('Access violation to $'+qword2str(addr),instructionpc);
-      end;
-
-    function tmemorymanager.readd(addr : taddr) : dword;
-
-      var
-         h : dword;
-         ma : pmemoryarea;
-
-      begin
-         ma:=mem;
-         while assigned(ma) do
-           begin
-              if (addr>=ma^.addr) and (addr<ma^.addr+ma^.size) then
-                begin
-                   if addr<ma^.addr+ma^.size-3 then
-                     begin
-                        move(ma^.memory^[trunc(addr-ma^.addr)],h,4);
-                        readd:=h;
-                        exit;
-                     end
-                   else
-                     begin
-                        readd:=readb(addr)+readb(addr+1) shl 8+readb(addr+2) shl 16+
-                          readb(addr+3) shl 24;
-                        exit;
-                     end;
-                end;
-              ma:=ma^.next;
-           end;
-         exception('Access violation to $'+qword2str(addr),instructionpc);
-      end;
-
-    function tmemorymanager.readalignedd(addr : taddr) : dword;
-
-      var
-         h : dword;
-         ma : pmemoryarea;
-
-      begin
-         if (tqwordrec(addr).low32 and $3)<>0 then
-           exception('Alignment violation (dword) to $'+qword2str(addr),instructionpc);
-         ma:=mem;
-         while assigned(ma) do
-           begin
-              if (addr>=ma^.addr) and (addr<ma^.addr+ma^.size) then
-                begin
-                   move(ma^.memory^[trunc(addr-ma^.addr)],h,4);
-                   readalignedd:=h;
-                   exit;
-                end;
-              ma:=ma^.next;
-           end;
-         exception('Access violation to $'+qword2str(addr),instructionpc);
-      end;
-
-    function tmemorymanager.readb(addr : taddr) : dword;
-
-      var
-         ma : pmemoryarea;
-
-      begin
-         ma:=mem;
-         while assigned(ma) do
-           begin
-              if (addr>=ma^.addr) and (addr<ma^.addr+ma^.size) then
-                begin
-                   readb:=ma^.memory^[trunc(addr-ma^.addr)];
-                   exit;
-                end;
-              ma:=ma^.next;
-           end;
-         exception('Access violation to $'+qword2str(addr),instructionpc);
-      end;
-
-    procedure tmemorymanager.writeb(addr : taddr;b : byte);
-
-      var
-         ma : pmemoryarea;
-
-      begin
-         ma:=mem;
-         while assigned(ma) do
-           begin
-              if (addr>=ma^.addr) and (addr<ma^.addr+ma^.size) then
-                begin
-                   ma^.memory^[trunc(addr-ma^.addr)]:=b;
-                   exit;
-                end;
-              ma:=ma^.next;
-           end;
-         exception('Access violation to $'+qword2str(addr),instructionpc);
-      end;
-
-    procedure tmemorymanager.writed(addr : taddr;d : dword);
-
-      begin
-         writeb(addr,tdword(d)[0]);
-         writeb(addr+1,tdword(d)[1]);
-         writeb(addr+2,tdword(d)[2]);
-         writeb(addr+3,tdword(d)[3]);
-      end;
-
-    procedure tmemorymanager.writealignedd(addr : taddr;d : dword);
-
-      begin
-         writeb(addr,tdword(d)[0]);
-         writeb(addr+1,tdword(d)[1]);
-         writeb(addr+2,tdword(d)[2]);
-         writeb(addr+3,tdword(d)[3]);
-      end;
-
-    procedure tmemorymanager.writeq(addr : taddr;q : qword);
-
-      var
-         ma : pmemoryarea;
-
-      begin
-         ma:=mem;
-         while assigned(ma) do
-           begin
-              if (addr>=ma^.addr) and (addr<ma^.addr+ma^.size-7) then
-                begin
-                   move(q,ma^.memory^[trunc(addr-ma^.addr)],8);
-                   exit;
-                end
-              else
-                { misaligned write! }
-                if (addr>=ma^.addr) and (addr<ma^.addr+ma^.size) then
-                  begin
-                     writeln('Not implemented 1!');
-                     halt(1);
-                  end;
-              ma:=ma^.next;
-           end;
-         exception('Access violation to $'+qword2str(addr),instructionpc);
-      end;
-
-end.

+ 0 - 115
utils/simulator/simbase.pas

@@ -1,115 +0,0 @@
-{
-    This file is part of the Free Pascal simulator environment
-    Copyright (c) 1999-2000 by Florian Klaempfl
-
-    This unit implemements some helper routines
-
-    See the file COPYING.FPC, included in this distribution,
-    for details about the copyright.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
- **********************************************************************}
-{$N+}
-{$H-}
-unit simbase;
-
-  interface
-{$ifdef Delphi}
-    uses
-       dmisc;
-{$else Delphi}
-    uses
-       dos;
-{$endif Delphi}
-
-    { global types }
-    type
-       { tindex must be at least of type integer }
-       tindex = integer;
-{$ifndef FPC}
-       int64 = comp;
-       qword = comp;
-{$endif FPC}
-       dword = longint;
-       tdword = array[0..3] of byte;
-
-       pbyte = ^byte;
-       pword = ^word;
-       pdword = ^dword;
-       pqword = ^qword;
-
-       tqwordrec = record
-          case tindex of
-             1 : (low32,high32 : dword);
-             2 : (bytes : array[0..7] of byte);
-             3 : (words : array[0..3] of word);
-       end;
-
-       oword = array[0..7] of word;
-
-       towordrec = record
-          case tindex of
-             1 : (bytes : array[0..15] of byte);
-             2 : (words : array[0..7] of word);
-             3 : (low64,high64 : qword);
-       end;
-
-    function hexstr(val : longint;cnt : byte) : string;
-    function qword2str(q : qword) : string;
-    function realtime : double;
-
-    var
-       stopsim : procedure;
-
-  implementation
-
-    function hexstr(val : longint;cnt : byte) : string;
-
-       const
-          HexTbl : array[0..15] of char='0123456789ABCDEF';
-
-       var
-         i : tindex;
-
-       begin
-          hexstr[0]:=char(cnt);
-          for i:=cnt downto 1 do
-            begin
-               hexstr[i]:=hextbl[val and $f];
-               val:=val shr 4;
-            end;
-       end;
-
-    function qword2str(q : qword) : string;
-
-      begin
-         qword2str:=hexstr(tqwordrec(q).high32,8)+hexstr(tqwordrec(q).low32,8);
-      end;
-
-    function realtime : double;
-
-      var
-         h,m,s,s100 : word;
-
-      begin
-         gettime(h,m,s,s100);
-         realtime:=h*3600+m*60+s+s100/100.0;
-      end;
-
-    procedure _stopsim;{$ifdef TP}far;{$endif TP}
-
-      begin
-         writeln('Simulation stopped');
-         halt(1);
-      end;
-
-begin
-   {$ifdef FPC}
-   stopsim:=@_stopsim;
-   {$else FPC}
-   stopsim:=_stopsim;
-   {$endif FPC}
-end.

+ 0 - 225
utils/simulator/simlib.pas

@@ -1,225 +0,0 @@
-{
-    This file is part of the Free Pascal simulator environment
-    Copyright (c) 1999-2000 by Florian Klaempfl
-
-    This unit implemements routines for data types which aren't
-    support by commonly used compilers
-
-    See the file COPYING.FPC, included in this distribution,
-    for details about the copyright.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
- **********************************************************************}
-{$N+}
-{ we do some strange things here }
-{$O-}
-{$R-}
-unit simlib;
-
-  interface
-
-    uses
-       simbase;
-
-    procedure byte_zap(q : qword;b : byte;var r : qword);
-
-    { shifts q b bytes left }
-    procedure shift_left_q(q : qword;b : byte;var r : qword);
-
-    { shifts q b bytes right }
-    procedure shift_right_q(q : qword;b : byte;var r : qword);
-
-    { returns true if i1<i2 assuming that c1 and c2 are unsigned !}
-    function ltu(c1,c2 : qword) : boolean;
-
-    { returns true if i1=<i2 assuming that c1 and c2 are unsigned !}
-    function leu(c1,c2 : qword) : boolean;
-
-    { adds to owords, returns true if an overflow occurs }
-    function addoword(o1,o2 : oword;var r : oword) : boolean;
-
-    { adds two words, returns true if an overflow occurs }
-    function addword(w1,w2 : word;var r : word) : boolean;
-
-    { sets an oword to zero }
-    procedure zerooword(var o : oword);
-
-    { multiplies two qwords into a full oword }
-    procedure mulqword(q1,q2 : qword;var r : oword);
-
-  implementation
-
-    procedure byte_zap(q : qword;b : byte;var r : qword);
-
-      var
-         i : tindex;
-
-      begin
-         for i:=0 to 7 do
-           if ((1 shl i) and b)=0 then
-             tqwordrec(r).bytes[i]:=tqwordrec(q).bytes[i]
-           else
-             tqwordrec(r).bytes[i]:=0;
-      end;
-
-    { shifts q b bytes left }
-    procedure shift_left_q(q : qword;b : byte;var r : qword);
-
-      var
-         i : tindex;
-
-      begin
-         r:=0;
-         if b>63 then
-         else if b>31 then
-           tqwordrec(r).high32:=tqwordrec(q).low32 shl (b-32)
-         else
-           begin
-              { bad solution! A qword shift would be nice! }
-              r:=q;
-              for i:=1 to b do
-                begin
-                   tqwordrec(r).high32:=tqwordrec(r).high32 shl 1;
-                   if (tqwordrec(r).low32 and $80000000)<>0 then
-                     tqwordrec(r).high32:=tqwordrec(r).high32 or 1;
-                   tqwordrec(r).low32:=tqwordrec(r).low32 shl 1;
-                end;
-           end;
-      end;
-
-    { shifts q b bytes right }
-    procedure shift_right_q(q : qword;b : byte;var r : qword);
-
-      var
-         i : tindex;
-
-      begin
-         r:=0;
-         if b>63 then
-         else if b>31 then
-           tqwordrec(r).low32:=tqwordrec(q).high32 shr (b-32)
-         else
-           begin
-              { bad solution! A qword shift would be nice! }
-              r:=q;
-              for i:=1 to b do
-                begin
-                   tqwordrec(r).low32:=tqwordrec(r).low32 shr 1;
-                   if (tqwordrec(r).high32 and 1)<>0 then
-                     tqwordrec(r).low32:=tqwordrec(r).low32 or
-                       $80000000;
-                   tqwordrec(r).high32:=tqwordrec(r).high32 shr 1;
-                end;
-           end;
-      end;
-
-    { returns true if i1<i2 assuming that c1 and c2 are unsigned !}
-    function ltu(c1,c2 : qword) : boolean;
-
-      begin
-         if (c1>=0) and (c2>=0) then
-           ltu:=c1<c2
-         else if (c1<0) and (c2>=0) then
-           ltu:=false
-         else if (c1>=0) and (c2<0) then
-           ltu:=true
-         else
-           ltu:=c1<c2
-      end;
-
-    { returns true if i1=<i2 assuming that c1 and c2 are unsigned !}
-    function leu(c1,c2 : qword) : boolean;
-
-      begin
-         if (c1>=0) and (c2>=0) then
-           leu:=c1<=c2
-         else if (c1<0) and (c2>=0) then
-           leu:=false
-         else if (c1>=0) and (c2<0) then
-           leu:=true
-         else
-           leu:=c1<=c2
-      end;
-
-    { "ands" two qwords }
-    procedure andqword(w1,w2 : qword;var r : qword);
-
-      begin
-         tqwordrec(r).low32:=tqwordrec(w1).low32 and tqwordrec(w2).low32;
-         tqwordrec(r).high32:=tqwordrec(w1).high32 and tqwordrec(w2).high32;
-      end;
-
-    { adds two words, returns true if an overflow occurs }
-    function addword(w1,w2 : word;var r : word) : boolean;
-
-      var
-         l : longint;
-
-      begin
-         l:=w1+w2;
-         addword:=(l and $10000)<>0;
-         r:=l and $ffff;
-      end;
-
-    { adds two owords, returns true if an overflow occurs }
-    function addoword(o1,o2 : oword;var r : oword) : boolean;
-
-      var
-         i : tindex;
-         carry : word;
-
-      begin
-         carry:=0;
-         for i:=0 to 7 do
-           begin
-              r[i]:=o1[i]+o2[i]+carry;
-              { an overflow has occured, if the r is less
-                than one of the summands
-              }
-              if (r[i]<o1[i]) or (r[i]<o2[i]) then
-                carry:=1
-              else
-                carry:=0;
-           end;
-         addoword:=carry=1;
-      end;
-
-    { sets an oword to zero }
-    procedure zerooword(var o : oword);
-
-      begin
-         fillchar(o,sizeof(o),0);
-      end;
-
-    { multiplies two qwords into a full oword }
-    procedure mulqword(q1,q2 : qword;var r : oword);
-
-      var
-         i : tindex;
-         h,bitpos : qword;
-         ho1 : oword;
-
-      begin
-         { r is zero }
-         zerooword(ho1);
-         r:=ho1;
-         towordrec(ho1).low64:=q1;
-
-         bitpos:=1;
-
-         for i:=0 to 63 do
-           begin
-              andqword(q2,bitpos,h);
-              if h<>0 then
-                addoword(r,ho1,r);
-
-              { ho1:=2*ho1 }
-              addoword(ho1,ho1,ho1);
-              shift_left_q(bitpos,1,bitpos);
-           end;
-      end;
-
-end.