mirror of
https://github.com/Interlisp/maiko.git
synced 2026-03-15 14:27:19 +00:00
Compare commits
529 Commits
maiko-2112
...
fgh_emscri
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
eac4cdc3d3 | ||
|
|
eacdd98f48 | ||
|
|
fb579a2ab5 | ||
|
|
258f70a82b | ||
|
|
895f765105 | ||
|
|
9f02ce0590 | ||
|
|
ce20accae3 | ||
|
|
ce7deadad3 | ||
|
|
0b0c82ce18 | ||
|
|
3ae25f81f8 | ||
|
|
52a3512379 | ||
|
|
df6dd883a6 | ||
|
|
3d341e3bbd | ||
|
|
ebe4babbe1 | ||
|
|
587ce1983a | ||
|
|
b841a44427 | ||
|
|
efd200dbf7 | ||
|
|
640f69877f | ||
|
|
400f3b7835 | ||
|
|
e657b2e1dc | ||
|
|
75c815f585 | ||
|
|
696ac9a675 | ||
|
|
8c54c0fbe0 | ||
|
|
586a3206c2 | ||
|
|
e93e3c895e | ||
|
|
29fdf4c40b | ||
|
|
7bb2393637 | ||
|
|
7c1d2081c8 | ||
|
|
acffcb74aa | ||
|
|
ad71e1e830 | ||
|
|
4b0032e1b6 | ||
|
|
b21fbcbcb1 | ||
|
|
0cc8e4d71c | ||
|
|
bee6a2f33e | ||
|
|
f208fd3302 | ||
|
|
e82b47a9e7 | ||
|
|
b666b1b2de | ||
|
|
d933ba88b7 | ||
|
|
56e7591ada | ||
|
|
28d7d5ec00 | ||
|
|
1e0264416f | ||
|
|
15966ccf34 | ||
|
|
09fae0a3f5 | ||
|
|
2caa2269a9 | ||
|
|
7b2cf44c7c | ||
|
|
79a788279b | ||
|
|
42477318b5 | ||
|
|
6cea8c69b0 | ||
|
|
eb3b382ac6 | ||
|
|
c9b4164d89 | ||
|
|
562f4c30ee | ||
|
|
98569d10b4 | ||
|
|
3207df6e24 | ||
|
|
7fce08f92c | ||
|
|
2c55f7923c | ||
|
|
b441a28c34 | ||
|
|
09e73d4153 | ||
|
|
8e43a393bd | ||
|
|
4a9f5500c4 | ||
|
|
44a4a4c42c | ||
|
|
2b24184293 | ||
|
|
c4f8ccc928 | ||
|
|
0ab92f5e65 | ||
|
|
501fb8e87a | ||
|
|
da7025ff02 | ||
|
|
b6328a234d | ||
|
|
74d6728fba | ||
|
|
59f2f2e835 | ||
|
|
8563c8700d | ||
|
|
aa019bdce2 | ||
|
|
d1f4653b95 | ||
|
|
90899d01fd | ||
|
|
83cc2d2f36 | ||
|
|
a6c38a04f4 | ||
|
|
b7bcbc1a85 | ||
|
|
ab2ddce621 | ||
|
|
9e6611a47b | ||
|
|
efaa97aa5f | ||
|
|
2a3aaa6704 | ||
|
|
408559b0d8 | ||
|
|
72850faf96 | ||
|
|
79f3149c4e | ||
|
|
985966925e | ||
|
|
0cffe64c90 | ||
|
|
9742a0fad9 | ||
|
|
3f2db4883b | ||
|
|
b91fdfe40b | ||
|
|
02b15a0cb0 | ||
|
|
c7c25e7c4d | ||
|
|
1b52f9fa44 | ||
|
|
f6f6653de0 | ||
|
|
c49fa46c70 | ||
|
|
7b42a5b51e | ||
|
|
29078cbb2c | ||
|
|
10093bad15 | ||
|
|
6f71e2b197 | ||
|
|
6d575a8f22 | ||
|
|
e074699beb | ||
|
|
2e893a75ab | ||
|
|
1f1e8753ef | ||
|
|
4754ec73eb | ||
|
|
a6d645ce9b | ||
|
|
e8daed41ea | ||
|
|
41ae0162da | ||
|
|
b265d3a917 | ||
|
|
90c6c9a088 | ||
|
|
3223ef2839 | ||
|
|
9cc7d9e13c | ||
|
|
45494170a3 | ||
|
|
a511feff39 | ||
|
|
42278285d3 | ||
|
|
d14d6183da | ||
|
|
6ce6aa25e1 | ||
|
|
68d63cc080 | ||
|
|
44b2412fd6 | ||
|
|
087c7a053a | ||
|
|
222a9594d5 | ||
|
|
525b9c94d8 | ||
|
|
7c322f41c4 | ||
|
|
6b69e0105f | ||
|
|
0bd29ae643 | ||
|
|
f16b01167e | ||
|
|
92df6316dc | ||
|
|
662fe9550c | ||
|
|
00d306d72f | ||
|
|
a8ded8a5f6 | ||
|
|
88cde175fc | ||
|
|
d19aec2fbf | ||
|
|
8e40ae8811 | ||
|
|
7c81d1fa08 | ||
|
|
ac14ce0e40 | ||
|
|
3745c08f51 | ||
|
|
5bd9de5e36 | ||
|
|
d4cccd7878 | ||
|
|
3e1130909c | ||
|
|
b3d27cdece | ||
|
|
55b45aa2aa | ||
|
|
2b5a34ebe9 | ||
|
|
e94d0f1cff | ||
|
|
97bf4961ba | ||
|
|
38147abef9 | ||
|
|
fcdc180254 | ||
|
|
f36cc29af2 | ||
|
|
2474619e83 | ||
|
|
11c7df5813 | ||
|
|
d63b933dc8 | ||
|
|
7d8a7a6668 | ||
|
|
4ae1987c33 | ||
|
|
8c490df964 | ||
|
|
2bc704c5e3 | ||
|
|
a3c462d211 | ||
|
|
376b045c33 | ||
|
|
7048f7dd8d | ||
|
|
a5923f42f9 | ||
|
|
355e6dfb51 | ||
|
|
b166d36ec4 | ||
|
|
878168f4f5 | ||
|
|
78bcb188a8 | ||
|
|
d2700aa637 | ||
|
|
0600a034b6 | ||
|
|
ca7f09bb6d | ||
|
|
16e4062b8f | ||
|
|
4104219ee5 | ||
|
|
74da70d0b4 | ||
|
|
2b957aa8f3 | ||
|
|
e5b8248465 | ||
|
|
fab10fc71f | ||
|
|
a2f8f23152 | ||
|
|
0e731ce02d | ||
|
|
0ed7719343 | ||
|
|
64e0419af3 | ||
|
|
1db44b1f76 | ||
|
|
dbba06d9e1 | ||
|
|
cf8ecc1dd4 | ||
|
|
380416fa2d | ||
|
|
6f0ca7ad1c | ||
|
|
7573151be8 | ||
|
|
083d153d43 | ||
|
|
13d367e766 | ||
|
|
af6c6e3e1d | ||
|
|
2f633f2f50 | ||
|
|
74d47b07ca | ||
|
|
292e5dd9b2 | ||
|
|
71d2d0a5b0 | ||
|
|
d046d26003 | ||
|
|
81e17c0955 | ||
|
|
40b24ec655 | ||
|
|
5e28babfa5 | ||
|
|
6604b3dd06 | ||
|
|
0187073ae0 | ||
|
|
79903e311e | ||
|
|
e2e6aa5366 | ||
|
|
8c34ca3106 | ||
|
|
b77f64f31e | ||
|
|
8038a959c5 | ||
|
|
085e99a7c0 | ||
|
|
3b6b203e6c | ||
|
|
948db16ed9 | ||
|
|
ffacda1278 | ||
|
|
e39b650f4d | ||
|
|
a722e01a4f | ||
|
|
8cf471bec9 | ||
|
|
900c9557ab | ||
|
|
937a003bfb | ||
|
|
a958af1627 | ||
|
|
7c270c8b49 | ||
|
|
f7542df4e7 | ||
|
|
53fe052432 | ||
|
|
18089578f6 | ||
|
|
2cb51ad326 | ||
|
|
98a8d8be49 | ||
|
|
4cc267856b | ||
|
|
ff7cf4f139 | ||
|
|
a7fba8d4bd | ||
|
|
d5490ed807 | ||
|
|
feb546c639 | ||
|
|
cdf6024452 | ||
|
|
96b3bddf12 | ||
|
|
e5894e5b81 | ||
|
|
b53b5bd710 | ||
|
|
39b12b20ba | ||
|
|
fff86c8050 | ||
|
|
dadb754e56 | ||
|
|
6fdb54f2c8 | ||
|
|
336c13369a | ||
|
|
b3f97a85c8 | ||
|
|
d95b82ac45 | ||
|
|
ddc09e09ba | ||
|
|
f51d269b1e | ||
|
|
96fcc9475a | ||
|
|
c10d339036 | ||
|
|
7aca8bf599 | ||
|
|
4a61a3fa6b | ||
|
|
c57ae7666d | ||
|
|
296ccb3ec9 | ||
|
|
dc893dda99 | ||
|
|
26737f3cbf | ||
|
|
235246ded3 | ||
|
|
6603957a0b | ||
|
|
6158162b62 | ||
|
|
13cd97ad41 | ||
|
|
215d4ff8c7 | ||
|
|
4b0eea260f | ||
|
|
97cca299be | ||
|
|
904f5b4d3d | ||
|
|
2b126bd083 | ||
|
|
ea022aa61c | ||
|
|
a06e4c949d | ||
|
|
d84f85c7e0 | ||
|
|
526e559c8d | ||
|
|
cb441fd8e5 | ||
|
|
f18295480f | ||
|
|
9d40ecd77a | ||
|
|
ade2b1461a | ||
|
|
ce97f136ec | ||
|
|
bb1b541014 | ||
|
|
7e2620db20 | ||
|
|
50f88d9f05 | ||
|
|
b85e7cac80 | ||
|
|
679b201849 | ||
|
|
7eb3cd0ceb | ||
|
|
9bfeaeb8b4 | ||
|
|
7eb87576f5 | ||
|
|
4b3997b432 | ||
|
|
a536faa736 | ||
|
|
4834f6f2b1 | ||
|
|
766de557bb | ||
|
|
d98df4f8d3 | ||
|
|
6b41fcea17 | ||
|
|
a17460cd6b | ||
|
|
55939e0bc9 | ||
|
|
960baf9b96 | ||
|
|
5c81ca3f41 | ||
|
|
38761fbd93 | ||
|
|
7b67b3f79f | ||
|
|
a6b8b65b5b | ||
|
|
11efd15613 | ||
|
|
b71a8088d3 | ||
|
|
1c6277d313 | ||
|
|
602fff2c2f | ||
|
|
43809d070b | ||
|
|
60a9497e7a | ||
|
|
2e6aba0d19 | ||
|
|
e1c4263dd8 | ||
|
|
871bf5459c | ||
|
|
67d9ee8b07 | ||
|
|
aa29914b2b | ||
|
|
2b7228f37e | ||
|
|
4853f0e3f5 | ||
|
|
a1e5e6eecc | ||
|
|
748c52fbaa | ||
|
|
6d7b4c1cd2 | ||
|
|
80c9c796c5 | ||
|
|
80e40fa942 | ||
|
|
38bf60c626 | ||
|
|
d5acdf7ea4 | ||
|
|
0ba8380aea | ||
|
|
8054c62f8a | ||
|
|
ab79048dae | ||
|
|
e03782c6b6 | ||
|
|
14c5f9245e | ||
|
|
c6b7eb7fd7 | ||
|
|
3ccc28d16a | ||
|
|
51cae2af8d | ||
|
|
f0f33fe587 | ||
|
|
9ab1215fc8 | ||
|
|
a3ba41fba2 | ||
|
|
39a716ace8 | ||
|
|
bae09d8eba | ||
|
|
6838c701cc | ||
|
|
2175364380 | ||
|
|
202db168a9 | ||
|
|
4a82b6c549 | ||
|
|
76cb36993c | ||
|
|
89a2b73d33 | ||
|
|
523368a710 | ||
|
|
bee3d3334a | ||
|
|
5f98006d38 | ||
|
|
093b4526ad | ||
|
|
f9e8f7ed85 | ||
|
|
d7ab75b1a7 | ||
|
|
d7c294bc0d | ||
|
|
1cfa67c515 | ||
|
|
434067770a | ||
|
|
072a493d56 | ||
|
|
b812513696 | ||
|
|
5ee8f49002 | ||
|
|
81d459be16 | ||
|
|
f7c67a6317 | ||
|
|
36355c12fb | ||
|
|
47ac0eacc5 | ||
|
|
36a7422ebc | ||
|
|
1dd86ed48c | ||
|
|
a10bd9b1c3 | ||
|
|
2c83acee31 | ||
|
|
aa177fa40a | ||
|
|
60e13a774d | ||
|
|
e122d894f9 | ||
|
|
a83cb5ad64 | ||
|
|
74361cb5a1 | ||
|
|
098aa9b2af | ||
|
|
d3e8df5b1c | ||
|
|
6e38d50829 | ||
|
|
71e2d9f3e0 | ||
|
|
82577ce951 | ||
|
|
2509a796ce | ||
|
|
cdffa541ef | ||
|
|
f5b17b0e63 | ||
|
|
c2070d9892 | ||
|
|
344351acba | ||
|
|
fcc62953d8 | ||
|
|
33ba044dc1 | ||
|
|
387be9d2b6 | ||
|
|
5565c9db8b | ||
|
|
ad9487a89b | ||
|
|
fdef5e6dde | ||
|
|
ebd7a197f2 | ||
|
|
6a7e018a0c | ||
|
|
7a28ba5731 | ||
|
|
c4ad41fcb7 | ||
|
|
fda6153d5b | ||
|
|
419ff4a549 | ||
|
|
695f559af8 | ||
|
|
a24f10a995 | ||
|
|
6944c1289b | ||
|
|
b8873485c7 | ||
|
|
1a98f0783e | ||
|
|
77894f993c | ||
|
|
83cd45d8dc | ||
|
|
8b746780cd | ||
|
|
269e5d8235 | ||
|
|
cc6e8b6986 | ||
|
|
b7b364359b | ||
|
|
e84703c3bd | ||
|
|
5fbc3d0480 | ||
|
|
97e811e3de | ||
|
|
f6aa8f1dcd | ||
|
|
1b90398cfc | ||
|
|
b758597f96 | ||
|
|
4b603a8a31 | ||
|
|
d6a5e5298a | ||
|
|
483506234b | ||
|
|
f3592648b6 | ||
|
|
d266f4d987 | ||
|
|
05f49a3556 | ||
|
|
2a42cd8e52 | ||
|
|
dab77421a2 | ||
|
|
5143aa25b0 | ||
|
|
56b6cfaa19 | ||
|
|
3786630f33 | ||
|
|
63bfea5adf | ||
|
|
c2ee07f609 | ||
|
|
a3b064b2b7 | ||
|
|
bba1dd660f | ||
|
|
f701bb40ac | ||
|
|
9941356250 | ||
|
|
e843dfbd76 | ||
|
|
7ea30a40cc | ||
|
|
a38ae21908 | ||
|
|
f543d56260 | ||
|
|
bf8c1ae277 | ||
|
|
7e819fbb69 | ||
|
|
166d54e938 | ||
|
|
94a41d2a5b | ||
|
|
2c4ccf54c3 | ||
|
|
903a7f64fc | ||
|
|
a9dcff6fd6 | ||
|
|
049568b0f8 | ||
|
|
d4226c20f2 | ||
|
|
889adcaa35 | ||
|
|
a448bd0329 | ||
|
|
02fa9a6b23 | ||
|
|
1790919750 | ||
|
|
5a3729886e | ||
|
|
9eba057b94 | ||
|
|
4806d98270 | ||
|
|
1af3803fca | ||
|
|
6c5b8391b7 | ||
|
|
09bf2988be | ||
|
|
059d750c75 | ||
|
|
f0079b1e73 | ||
|
|
dad4a8cc79 | ||
|
|
822a03a95b | ||
|
|
b7ee0eb34f | ||
|
|
dbdd7c2dc2 | ||
|
|
6a4ed88f37 | ||
|
|
9239fb3c29 | ||
|
|
78f0d3c511 | ||
|
|
4dc9429b19 | ||
|
|
55a7a47598 | ||
|
|
34fc725758 | ||
|
|
3ee8530dc1 | ||
|
|
49a6891283 | ||
|
|
7d760f64cf | ||
|
|
68137d6251 | ||
|
|
8e34c274c0 | ||
|
|
695828a600 | ||
|
|
10f53dfb93 | ||
|
|
584a719f8d | ||
|
|
be9eb33ca0 | ||
|
|
acc4d387a1 | ||
|
|
7965bfe131 | ||
|
|
d28f05f79d | ||
|
|
ed77b2fb7b | ||
|
|
7dc889249b | ||
|
|
ee777103ad | ||
|
|
76e1503249 | ||
|
|
7377613aab | ||
|
|
5fcd1ced65 | ||
|
|
e6d981632e | ||
|
|
a2c908fc32 | ||
|
|
9df1ea251a | ||
|
|
cde0be42f0 | ||
|
|
29f2a78a2f | ||
|
|
61d6cdbcc9 | ||
|
|
ead2a6771c | ||
|
|
5a3425e426 | ||
|
|
010329f29d | ||
|
|
8a0804831e | ||
|
|
eae42d1a6d | ||
|
|
ed5e504b06 | ||
|
|
215a22ea9f | ||
|
|
5202c71a95 | ||
|
|
2b270e6697 | ||
|
|
59d3446c6a | ||
|
|
0c505f9576 | ||
|
|
51fffe5827 | ||
|
|
d35b964393 | ||
|
|
58f6f68c7e | ||
|
|
873d4927ce | ||
|
|
5c0349cc69 | ||
|
|
d509224797 | ||
|
|
f8f7b2ace9 | ||
|
|
89c01ad00a | ||
|
|
3075cc93bb | ||
|
|
4a02a1a24d | ||
|
|
813d2aa2b5 | ||
|
|
1fe71e5b84 | ||
|
|
8d804ad5cd | ||
|
|
ad045ce356 | ||
|
|
c49eb4a4ce | ||
|
|
1c5881fad4 | ||
|
|
77ad9204af | ||
|
|
89c3041339 | ||
|
|
142b5679cf | ||
|
|
0e7dc75fd9 | ||
|
|
41e7a15b1e | ||
|
|
5a7cfcbbe7 | ||
|
|
9e2b3eb882 | ||
|
|
543f7985a2 | ||
|
|
c07ad9fe8e | ||
|
|
fff53ba224 | ||
|
|
d842b284ac | ||
|
|
64b47841d8 | ||
|
|
d91de66322 | ||
|
|
e72dd332a3 | ||
|
|
f7fd547360 | ||
|
|
b94cb8809b | ||
|
|
6010df35fe | ||
|
|
601d6e9142 | ||
|
|
3d9f090e70 | ||
|
|
4bd1f4b49a | ||
|
|
681f3b2592 | ||
|
|
c3f79872f1 | ||
|
|
a15de4df10 | ||
|
|
430da79e73 | ||
|
|
259658fa2c | ||
|
|
317f081409 | ||
|
|
5fa05ac3d7 | ||
|
|
9a10f63fe6 | ||
|
|
77957d421a | ||
|
|
e81345218a | ||
|
|
b27bd2fbab | ||
|
|
b5f51d58f1 | ||
|
|
60af445afa | ||
|
|
a18f09d788 | ||
|
|
2bf7047709 | ||
|
|
90b967c8d3 | ||
|
|
b005501427 | ||
|
|
20046b265b | ||
|
|
e6a974a2a7 | ||
|
|
8ea2c76110 | ||
|
|
3e7c71c0c0 | ||
|
|
f2a3715930 | ||
|
|
f15d8eca09 | ||
|
|
008ce703e7 | ||
|
|
fa08a08648 | ||
|
|
bb0b011f90 | ||
|
|
6bccbfbcf3 |
18
.github/workflows/Dockerfile_builder
vendored
Executable file
18
.github/workflows/Dockerfile_builder
vendored
Executable file
@@ -0,0 +1,18 @@
|
||||
#*******************************************************************************
|
||||
#
|
||||
# Dockerfile to build image with all the tools to build Maiko
|
||||
#
|
||||
# Copyright 2023 by Interlisp.org
|
||||
#
|
||||
# Frank Halasz 2023-02-21
|
||||
#
|
||||
# ******************************************************************************
|
||||
|
||||
FROM ubuntu:latest
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
USER root:root
|
||||
# Install build tools
|
||||
RUN apt-get update && apt-get install -y make clang libx11-dev gcc
|
||||
USER root
|
||||
WORKDIR /root
|
||||
ENTRYPOINT /bin/bash
|
||||
25
.github/workflows/Dockerfile_maiko
vendored
Executable file
25
.github/workflows/Dockerfile_maiko
vendored
Executable file
@@ -0,0 +1,25 @@
|
||||
#*******************************************************************************
|
||||
#
|
||||
# Dockerfile to build Maiko for Linux to be used by buildRelease github action
|
||||
# The output of this is intended to be a directory in the github workspace
|
||||
# file system it is not intended to be a useable Docker image.
|
||||
#
|
||||
# Copyright 2023 by Interlisp.org
|
||||
#
|
||||
# Frank Halasz 2023-02-21
|
||||
#
|
||||
# ******************************************************************************
|
||||
|
||||
FROM ghcr.io/interlisp/maiko-builder
|
||||
ARG INSTALL_LOCATION=/usr/local/interlisp/maiko
|
||||
SHELL ["/bin/bash", "-c"]
|
||||
# Copy over / clean maiko repo
|
||||
COPY . ${INSTALL_LOCATION}
|
||||
# Build maiko
|
||||
RUN cd ${INSTALL_LOCATION}/bin \
|
||||
&& ./makeright x cleanup \
|
||||
&& ./makeright x
|
||||
RUN cd ${INSTALL_LOCATION}/bin \
|
||||
&& if [ "$(./machinetype)" = "x86_64" ]; then \
|
||||
./makeright init; \
|
||||
fi
|
||||
18
.github/workflows/build.yml
vendored
18
.github/workflows/build.yml
vendored
@@ -11,9 +11,9 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [macos-10.15, ubuntu-18.04]
|
||||
os: [macos-11, macos-12, ubuntu-22.04, ubuntu-20.04]
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install X11 dependencies on MacOS
|
||||
if: ${{ runner.os == 'macOS'}}
|
||||
run: brew install --cask xquartz
|
||||
@@ -28,7 +28,7 @@ jobs:
|
||||
# runs-on: [self-hosted, linux, ARM]
|
||||
# if: ${{ github.repository == 'Interlisp/maiko' }}
|
||||
# steps:
|
||||
# - uses: actions/checkout@v2
|
||||
# - uses: actions/checkout@v3
|
||||
# - name: Build
|
||||
# working-directory: bin
|
||||
# run: ./makeright x
|
||||
@@ -37,14 +37,22 @@ jobs:
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
os: [macos-10.15, ubuntu-20.04, ubuntu-18.04]
|
||||
os: [macos-11, macos-12, ubuntu-22.04, ubuntu-20.04]
|
||||
env:
|
||||
BUILD_TYPE: Release
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3
|
||||
- name: Show CMake version
|
||||
run: cmake --version
|
||||
- name: Install X11 dependencies on MacOS
|
||||
if: ${{ runner.os == 'macOS'}}
|
||||
run: brew install --cask xquartz
|
||||
- name: Install SDL2 dependencies on MacOS
|
||||
if: ${{ runner.os == 'macOS'}}
|
||||
run: brew install sdl2
|
||||
- name: Install SDL dependency on Ubuntu
|
||||
if: ${{ runner.os == 'Linux'}}
|
||||
run: sudo apt-get update && sudo apt-get install -y libsdl2-dev
|
||||
- name: Create Build Environment
|
||||
run: cmake -E make_directory ${{github.workspace}}/build
|
||||
- name: Configure CMake
|
||||
|
||||
87
.github/workflows/buildBuilderImage.yml
vendored
Normal file
87
.github/workflows/buildBuilderImage.yml
vendored
Normal file
@@ -0,0 +1,87 @@
|
||||
#*******************************************************************************
|
||||
# buildBuilderImage.yml
|
||||
#
|
||||
# Workflow to build a multiarch Docker image that includes all of the tools for
|
||||
# building maiko for linux. Intended to be used (exclusively?) by the github
|
||||
# actions that build maiko releases - e.g., buildRelease.yml.
|
||||
#
|
||||
# The purpose is to make the maiko github actions quicker and less resource
|
||||
# consuming by not hving to intll the tools every time and instead just reuse
|
||||
# this Docker image.
|
||||
#
|
||||
#
|
||||
# Copyright 2023 by Interlisp.org
|
||||
#
|
||||
# Frank Haasz 2023-02-21
|
||||
#
|
||||
# ******************************************************************************
|
||||
|
||||
name: 'Build/Push Builder Image'
|
||||
|
||||
# Run this workflow on ...
|
||||
on: workflow_dispatch
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
jobs:
|
||||
|
||||
buildBuilder:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
# Checkout maiko
|
||||
- name: Checkout maiko
|
||||
uses: actions/checkout@v3
|
||||
|
||||
# Setup docker environment variables
|
||||
- name: Setup Docker Environment Variables
|
||||
id: docker_env
|
||||
run: |
|
||||
DOCKER_REGISTRY="ghcr.io"
|
||||
DOCKER_NAMESPACE=$(echo "${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]')
|
||||
DOCKER_REPO=${DOCKER_REGISTRY}/${DOCKER_NAMESPACE}/maiko-builder
|
||||
DOCKER_TAGS="${DOCKER_REPO}:latest"
|
||||
echo "BUILD_DATE=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> ${GITHUB_ENV}
|
||||
echo "DOCKER_TAGS=${DOCKER_TAGS}" >> ${GITHUB_ENV}
|
||||
|
||||
# Setup the Docker Machine Emulation environment.
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@master
|
||||
with:
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
|
||||
# Setup the Docker Buildx funtion
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@master
|
||||
|
||||
# Login to ghcr.io
|
||||
- name: Login to GitHub Container Registry
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
# Do the Docker Build using the Dockerfile_builder in the repository we
|
||||
# checked out. Push the result to ghcr.io.
|
||||
#
|
||||
- name: Build Docker Images for Push to GHCR
|
||||
if: ${{ true }}
|
||||
uses: docker/build-push-action@v4
|
||||
with:
|
||||
builder: ${{ steps.buildx.outputs.name }}
|
||||
build-args: |
|
||||
BUILD_DATE=${{ env.BUILD_DATE }}
|
||||
context: ./.github/workflows
|
||||
file: ./.github/workflows/Dockerfile_builder
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
# Push the result to DockerHub
|
||||
push: true
|
||||
tags: ${{ env.DOCKER_TAGS }}
|
||||
|
||||
|
||||
######################################################################################
|
||||
84
.github/workflows/buildDocker.yml
vendored
84
.github/workflows/buildDocker.yml
vendored
@@ -1,84 +0,0 @@
|
||||
# based on https://blog.oddbit.com/post/2020-09-25-building-multi-architecture-im/
|
||||
---
|
||||
# Interlisp workflow to build a Docker Image that supports multiple architectures
|
||||
name: 'Build Maiko Docker image'
|
||||
|
||||
# Run this workflow on push to master
|
||||
# Other branches can be added it needed.
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
# Jobs that are run as part of this workflow.
|
||||
jobs:
|
||||
# Job to build the docker image
|
||||
# see: https://github.com/docker/build-push-action
|
||||
docker:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# Checkout the branch
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v2
|
||||
|
||||
# Setup some environment variables
|
||||
- name: Prepare
|
||||
id: prep
|
||||
run: |
|
||||
# Name of the Docker Image.
|
||||
DOCKER_IMAGE=interlisp/${GITHUB_REPOSITORY#*/}
|
||||
VERSION=latest
|
||||
SHORTREF=${GITHUB_SHA::8}
|
||||
## Do we want to use tags and or versions
|
||||
# If this is git tag, use the tag name as a docker tag
|
||||
if [[ $GITHUB_REF == refs/tags/* ]]; then
|
||||
VERSION=${GITHUB_REF#refs/tags/v}
|
||||
fi
|
||||
TAGS="${DOCKER_IMAGE}:${VERSION},${DOCKER_IMAGE}:${SHORTREF}"
|
||||
# If the VERSION looks like a version number, assume that
|
||||
# this is the most recent version of the image and also
|
||||
# tag it 'latest'.
|
||||
if [[ $VERSION =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
|
||||
TAGS="$TAGS,${DOCKER_IMAGE}:latest"
|
||||
fi
|
||||
# Set output parameters.
|
||||
echo ::set-output name=tags::${TAGS}
|
||||
echo ::set-output name=docker_image::${DOCKER_IMAGE}
|
||||
echo ::set-output name=build_time::$(date -u +'%Y-%m-%dT%H:%M:%SZ')
|
||||
# Setup the Docker Machine Emulation environment.
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@master
|
||||
with:
|
||||
platforms: all
|
||||
|
||||
# Setup the Docker Buildx funtion
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@master
|
||||
|
||||
# Login into DockerHub - required to store the created image
|
||||
- name: Login to DockerHub
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: docker/login-action@v1
|
||||
with:
|
||||
username: ${{ secrets.DOCKER_USERNAME }}
|
||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||
|
||||
# Start the Docker Build using the Dockerfile in the repository we
|
||||
# checked out.
|
||||
- name: Build
|
||||
uses: docker/build-push-action@v2
|
||||
with:
|
||||
builder: ${{ steps.buildx.outputs.name }}
|
||||
build-args: BUILD_DATE=${{ steps.prep.outputs.build_time }}
|
||||
context: .
|
||||
file: ./Dockerfile
|
||||
# Platforms - Sepecify the platforms to include in the build
|
||||
# linux/amd64 -- Standard x86_64
|
||||
# linux/arm64 -- Apple M1
|
||||
# linux/arm/v7 -- Raspberry pi
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
# Push the result to DockerHub
|
||||
push: true
|
||||
# tags to assign to the Docker image
|
||||
tags: ${{ steps.prep.outputs.tags }}
|
||||
586
.github/workflows/buildRelease.yml
vendored
Normal file
586
.github/workflows/buildRelease.yml
vendored
Normal file
@@ -0,0 +1,586 @@
|
||||
#*******************************************************************************
|
||||
# buidRelease.yml
|
||||
#
|
||||
# Workflow to build a Maiko release that is pushed to github.
|
||||
# For linux: release assets are built/pushed for X86_64, aarch64 and arm7vl.
|
||||
# For macOS: release assets are built/pushed for X86_64 and aarch64 as well as
|
||||
# a set of universal binaries.
|
||||
# For Windows: not supported
|
||||
#
|
||||
# Note release pushed to github automatically includes source code assets
|
||||
# in tar and zip formats.
|
||||
#
|
||||
# 2022-01-16 by Frank Halasz based on earlier workflow called buildDocker.yml
|
||||
# Updated 2023-06-06: Remove docker image push; increase build efficeincy for linux
|
||||
#
|
||||
# Copyright 2022-2023 by Interlisp.org
|
||||
#
|
||||
#
|
||||
# ******************************************************************************
|
||||
|
||||
name: 'Build/Push Release'
|
||||
|
||||
# Run this workflow on ...
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
draft:
|
||||
description: "Mark this as a draft release"
|
||||
type: choice
|
||||
options:
|
||||
- 'false'
|
||||
- 'true'
|
||||
force:
|
||||
description: "Force build even if build already successfully completed for this commit"
|
||||
type: choice
|
||||
options:
|
||||
- 'false'
|
||||
- 'true'
|
||||
|
||||
workflow_call:
|
||||
secrets:
|
||||
DOCKER_USERNAME:
|
||||
required: true
|
||||
DOCKER_PASSWORD:
|
||||
required: true
|
||||
outputs:
|
||||
successful:
|
||||
description: "'True' if maiko build completed successully"
|
||||
value: ${{ jobs.complete.outputs.build_successful }}
|
||||
inputs:
|
||||
draft:
|
||||
description: "Mark this as a draft release"
|
||||
required: false
|
||||
type: string
|
||||
default: 'false'
|
||||
force:
|
||||
description: "Force build even if build already successfully completed for this commit"
|
||||
required: false
|
||||
type: string
|
||||
default: 'false'
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: bash
|
||||
|
||||
# 3 separate jobs here that can run in parallel
|
||||
#
|
||||
# 1. Linux: Build a multiplatform Linux Docker file system (not saved) and use
|
||||
# results to build/push Linux release assets.
|
||||
#
|
||||
# 2. MacOs: Build maiko for MacOS (x86_64, aarch64, and universal) then create
|
||||
# and push release assets.
|
||||
#
|
||||
# 3. Windows: Build maiko for cygwin and SDL (x86_64). Build is done within the
|
||||
# cygwin-maiko-builder Docker image by building a new docker files system (and
|
||||
# not a docker container) which is used to build/push Windows(cygwin) assets.
|
||||
#
|
||||
|
||||
jobs:
|
||||
|
||||
######################################################################################
|
||||
|
||||
# Regularize the inputs so they can be referenced the same way whether they are
|
||||
# the result of a workflow_dispatch or a workflow_call
|
||||
|
||||
inputs:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
draft: ${{ steps.one.outputs.draft }}
|
||||
force: ${{ steps.one.outputs.force }}
|
||||
linux: ${{ steps.one.outputs.linux }}
|
||||
macos: ${{ steps.one.outputs.macos }}
|
||||
windows: ${{ steps.one.outputs.windows }}
|
||||
steps:
|
||||
- id: one
|
||||
run: >
|
||||
if [ '${{ toJSON(inputs) }}' = 'null' ];
|
||||
then
|
||||
echo "workflow_dispatch";
|
||||
echo "draft=${{ github.event.inputs.draft }}" >> $GITHUB_OUTPUT;
|
||||
echo "force=${{ github.event.inputs.force }}" >> $GITHUB_OUTPUT;
|
||||
else
|
||||
echo "workflow_call";
|
||||
echo "draft=${{ inputs.draft }}" >> $GITHUB_OUTPUT;
|
||||
echo "force=${{ inputs.force }}" >> $GITHUB_OUTPUT;
|
||||
fi;
|
||||
echo "linux=true" >> $GITHUB_OUTPUT;
|
||||
echo "macos=true" >> $GITHUB_OUTPUT;
|
||||
echo "windows=true" >> $GITHUB_OUTPUT;
|
||||
|
||||
|
||||
######################################################################################
|
||||
|
||||
# Use sentry-action to determine if this release has already been built
|
||||
# based on the latest commit to the repo
|
||||
|
||||
sentry:
|
||||
needs: inputs
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
release_not_built: ${{ steps.check.outputs.release_not_built }}
|
||||
|
||||
steps:
|
||||
# Checkout the actions for this repo owner
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ github.repository_owner }}/.github
|
||||
path: ./Actions_${{ github.sha }}
|
||||
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
|
||||
|
||||
# Check if build already run for this commit
|
||||
- name: Build already completed?
|
||||
id: check
|
||||
continue-on-error: true
|
||||
uses: ./../actions/check-sentry-action
|
||||
with:
|
||||
tag: "release_docker"
|
||||
|
||||
######################################################################################
|
||||
|
||||
# Linux: build and push multi-platform docker image for Linux
|
||||
# Use docker images to create and push release assets to github
|
||||
|
||||
linux:
|
||||
|
||||
needs: [inputs, sentry]
|
||||
if: |
|
||||
needs.inputs.outputs.linux == 'true'
|
||||
&& (
|
||||
needs.sentry.outputs.release_not_built == 'true'
|
||||
|| needs.inputs.outputs.force == 'true'
|
||||
)
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
# Checkout the actions for this repo owner
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ github.repository_owner }}/.github
|
||||
path: ./Actions_${{ github.sha }}
|
||||
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
|
||||
|
||||
# Checkout the branch
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Setup release tag
|
||||
- name: Setup Release Tag
|
||||
id: tag
|
||||
uses: ./../actions/release-tag-action
|
||||
|
||||
# Setup docker environment variables
|
||||
- name: Setup Docker Environment Variables
|
||||
id: docker_env
|
||||
run: |
|
||||
DOCKER_NAMESPACE=$(echo "${{ github.repository_owner }}" | tr '[:upper:]' '[:lower:]')
|
||||
echo "DOCKER_NAMESPACE=${DOCKER_NAMESPACE}" >> ${GITHUB_ENV}
|
||||
DOCKER_IMAGE=${DOCKER_NAMESPACE}/${{ steps.tag.outputs.repo_name }}
|
||||
DOCKER_TAGS="${DOCKER_IMAGE}:latest,${DOCKER_IMAGE}:${RELEASE_TAG#*-}"
|
||||
echo "build_time=$(date -u +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_OUTPUT
|
||||
echo "docker_tags=${DOCKER_TAGS}" >> $GITHUB_OUTPUT
|
||||
|
||||
# Setup the Docker Machine Emulation environment.
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
with:
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
|
||||
# Setup the Docker Buildx funtion
|
||||
- name: Set up Docker Buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
# Do the Docker Build using the Dockerfile in the repository we
|
||||
# checked out. Save the results in a directory under /tmp to be used
|
||||
# for creating release tars. Does not creatre a docker image and does not
|
||||
# push anything to Docker Hub.
|
||||
#
|
||||
# NOTE: THE ACTUAL MAIKO BUILD (FOR LINUX) HAPPENS HERE - I.E., IN THE
|
||||
# DOCKER BUILD CALL. BUILD COMMANDS ARE SPECIFIED IN THE
|
||||
# Dockerfile, NOT HERE IN THE WORKFLOW.
|
||||
#
|
||||
- name: Build Docker Image and Save It Locally
|
||||
uses: docker/build-push-action@v5
|
||||
with:
|
||||
builder: ${{ steps.buildx.outputs.name }}
|
||||
build-args: |
|
||||
BUILD_DATE=${{ steps.docker_env.outputs.build_time }}
|
||||
RELEASE_TAG=${{ steps.tag.outputs.release_tag }}
|
||||
context: .
|
||||
file: ./.github/workflows/Dockerfile_maiko
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
# Put the results out to the local file system
|
||||
outputs: type=local,dest=/tmp/docker_images
|
||||
tags: ${{ steps.docker_env.outputs.docker_tags }}
|
||||
|
||||
# Use docker results to create releases for github.
|
||||
# Docker results are in /tmp/docker_images. One subdir for each platform.
|
||||
- name: Make release tars for each platform
|
||||
env:
|
||||
RELEASE_TAG: ${{ steps.tag.outputs.release_tag }}
|
||||
run: |
|
||||
mkdir -p /tmp/release_tars
|
||||
for OSARCH in "linux.x86_64:linux_amd64" "linux.aarch64:linux_arm64" "linux.armv7l:linux_arm_v7" ; \
|
||||
do \
|
||||
pushd /tmp/docker_images/${OSARCH##*:}/usr/local/interlisp >/dev/null ; \
|
||||
/usr/bin/tar -c -z \
|
||||
-f /tmp/release_tars/${RELEASE_TAG}-${OSARCH%%:*}.tgz \
|
||||
maiko/bin/osversion \
|
||||
maiko/bin/machinetype \
|
||||
maiko/bin/config.guess \
|
||||
maiko/bin/config.sub \
|
||||
maiko/${OSARCH%%:*}/lde* \
|
||||
; \
|
||||
popd >/dev/null ; \
|
||||
done
|
||||
|
||||
# Push Release to github
|
||||
- name: Push the release
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
allowUpdates: true
|
||||
artifacts:
|
||||
/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-linux.x86_64.tgz,
|
||||
/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-linux.aarch64.tgz,
|
||||
/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-linux.armv7l.tgz
|
||||
tag: ${{ steps.tag.outputs.release_tag }}
|
||||
draft: ${{ needs.inputs.outputs.draft }}
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
|
||||
######################################################################################
|
||||
|
||||
# MacOS: build for MacOS (x86_64, aarch64, universal) and use results to
|
||||
# create and push release assets to github
|
||||
macos:
|
||||
|
||||
needs: [inputs, sentry]
|
||||
if: |
|
||||
needs.inputs.outputs.macos == 'true'
|
||||
&& (
|
||||
needs.sentry.outputs.release_not_built == 'true'
|
||||
|| needs.inputs.outputs.force == 'true'
|
||||
)
|
||||
|
||||
runs-on: macos-latest
|
||||
|
||||
steps:
|
||||
|
||||
# Checkout the branch
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Checkout the actions for this repo owner
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ github.repository_owner }}/.github
|
||||
path: ./Actions_${{ github.sha }}
|
||||
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
|
||||
|
||||
# Setup release tag
|
||||
- name: Setup Release Tag
|
||||
id: tag
|
||||
uses: ./../actions/release-tag-action
|
||||
|
||||
# Uninstall exisitng X11 stuff preconfigured on runner then install correct X11 dependencies
|
||||
- name: Unistall X components already on the runner
|
||||
run: |
|
||||
brew uninstall --ignore-dependencies libxft
|
||||
brew uninstall --ignore-dependencies libxrender
|
||||
brew uninstall --ignore-dependencies libxext
|
||||
brew uninstall --ignore-dependencies libx11
|
||||
brew uninstall --ignore-dependencies xorgproto
|
||||
brew uninstall --ignore-dependencies libxdmcp
|
||||
brew uninstall --ignore-dependencies libxau
|
||||
|
||||
- name: Install X11 dependencies on MacOS
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
gh release download XQuartz-2.8.5 --repo XQuartz/XQuartz --pattern XQuartz-2.8.5.pkg
|
||||
sudo installer -pkg ./XQuartz-2.8.5.pkg -target /
|
||||
|
||||
# Install SDL dependencies
|
||||
- name: Install SDL2 dependencies on MacOS
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
run: |
|
||||
gh release download release-2.26.5 --repo libsdl-org/SDL --pattern SDL2-2.26.5.dmg
|
||||
hdiutil attach SDL2-2.26.5.dmg
|
||||
sudo ditto /Volumes/SDL2/SDL2.framework /Library/Frameworks/SDL2.framework
|
||||
hdiutil detach /Volumes/SDL2/
|
||||
|
||||
# Build maiko
|
||||
- name: Build ldeinit
|
||||
working-directory: ./bin
|
||||
run: |
|
||||
export LDEARCH=x86_64-apple-darwin
|
||||
./makeright init
|
||||
export LDEARCH=aarch64-apple-darwin
|
||||
./makeright init
|
||||
mkdir -p ../darwin.universal
|
||||
exe=ldeinit
|
||||
lipo -create \
|
||||
-arch arm64 ../darwin.aarch64/${exe} \
|
||||
-arch x86_64 ../darwin.x86_64/${exe} \
|
||||
-output ../darwin.universal/${exe}
|
||||
|
||||
- name: Build lde, ldex, & ldesdl
|
||||
run: |
|
||||
mkdir build
|
||||
cd build
|
||||
# -DCMAKE_OSX_DEPLOYMENT_TARGET=10.12
|
||||
cmake .. \
|
||||
-DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" \
|
||||
-DMAIKO_DISPLAY_SDL=ON \
|
||||
-DMAIKO_DISPLAY_X11=ON \
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build . --config Release
|
||||
for exe in lde ldex ldesdl
|
||||
do
|
||||
lipo ${exe} -output ../darwin.x86_64/${exe} -extract x86_64
|
||||
lipo ${exe} -output ../darwin.aarch64/${exe} -extract arm64
|
||||
cp -p ${exe} ../darwin.universal/${exe}
|
||||
done
|
||||
|
||||
# Create release tar for github.
|
||||
- name: Make release tar(s)
|
||||
env:
|
||||
RELEASE_TAG: ${{ steps.tag.outputs.release_tag }}
|
||||
run: |
|
||||
mkdir -p /tmp/release_tars
|
||||
cd ${GITHUB_WORKSPACE}/../
|
||||
for arch in x86_64 aarch64 universal
|
||||
do
|
||||
tar -c -z \
|
||||
-f /tmp/release_tars/${RELEASE_TAG}-darwin.${arch}.tgz \
|
||||
maiko/bin/osversion \
|
||||
maiko/bin/machinetype \
|
||||
maiko/bin/config.guess \
|
||||
maiko/bin/config.sub \
|
||||
maiko/darwin.${arch}/lde*
|
||||
done
|
||||
|
||||
# Push Release
|
||||
- name: Push the release
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
allowUpdates: true
|
||||
artifacts:
|
||||
/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-darwin.x86_64.tgz,
|
||||
/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-darwin.aarch64.tgz,
|
||||
/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-darwin.universal.tgz
|
||||
tag: ${{ steps.tag.outputs.release_tag }}
|
||||
draft: ${{ needs.inputs.outputs.draft }}
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
######################################################################################
|
||||
|
||||
# Windows: build for Windows-Cygwin via Docker build and use results to
|
||||
# create and push release assets to github
|
||||
|
||||
windows:
|
||||
|
||||
needs: [inputs, sentry]
|
||||
if: |
|
||||
needs.inputs.outputs.windows == 'true'
|
||||
&& (
|
||||
needs.sentry.outputs.release_not_built == 'true'
|
||||
|| needs.inputs.outputs.force == 'true'
|
||||
)
|
||||
|
||||
runs-on: windows-2022
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: powershell
|
||||
|
||||
steps:
|
||||
|
||||
# setup git to not mess up line endings
|
||||
- name: git config
|
||||
run: git config --global core.autocrlf input
|
||||
|
||||
# Retrieve Cygwin setup and install cygwin
|
||||
- name: Install cygwin
|
||||
id: cygwin
|
||||
run: |
|
||||
wget https://cygwin.com/setup-x86_64.exe -OutFile setup-x86_64.exe
|
||||
Unblock-File setup-x86_64.exe
|
||||
Start-Process setup-x86_64.exe -Wait -ArgumentList @("--root", ".\cygwin", "--quiet-mode", "--no-admin", "--wait", "--no-shortcuts", "--no-write-registry", "--verbose", "--site", "http://www.gtlib.gatech.edu/pub/cygwin/", "--packages", "nano,binutils,make,cmake,gcc,clang")
|
||||
cygwin\bin\bash -login -c 'sed -i -e "s/^none/#none/" /etc/fstab; echo "none / cygdrive binary,posix=0,user 0 0" >>/etc/fstab'
|
||||
|
||||
# Retrieve SDL2 and install in cygwin
|
||||
- name: Install SDL2
|
||||
id: sdl2
|
||||
env:
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
gh release download 2.26.5 --repo interlisp/cygwin-sdl --pattern *.tgz --output .\cygwin\sdl2.tar.gz
|
||||
cygwin\bin\bash -login -c 'cd /; tar xzf sdl2.tar.gz'
|
||||
|
||||
# Checkout the branch
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: cygwin\maiko
|
||||
|
||||
# Checkout the actions for this repo owner
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ github.repository_owner }}/.github
|
||||
path: ./Actions_${{ github.sha }}
|
||||
- run: |
|
||||
mv ./Actions_${{ github.sha }}/actions ../actions
|
||||
rm -recurse -force ./Actions_${{ github.sha }}
|
||||
|
||||
# Setup release tag
|
||||
- name: Setup Release Tag
|
||||
id: tag
|
||||
uses: ./../actions/release-tag-action
|
||||
with:
|
||||
path: cygwin/maiko
|
||||
|
||||
# Build maiko TODO-cleanup
|
||||
- name: Build Cygwin-SDL Maiko
|
||||
run: |
|
||||
cygwin\bin\bash -login -c 'cd /maiko/bin && ./makeright sdl cleanup && ./makeright sdl'
|
||||
cygwin\bin\bash -login -c 'mkdir /tmp/maiko; mkdir /tmp/maiko/bin; mkdir /tmp/maiko/cygwin.x86_64'
|
||||
cygwin\bin\bash -login -c 'cp /maiko/bin/osversion /tmp/maiko/bin; cp /maiko/bin/machinetype /tmp/maiko/bin'
|
||||
cygwin\bin\bash -login -c 'cp /maiko/bin/config.guess /tmp/maiko/bin; cp /maiko/bin/config.sub /tmp/maiko/bin'
|
||||
cygwin\bin\bash -login -c 'cp /maiko/cygwin.x86_64/* /tmp/maiko/cygwin.x86_64; cp /usr/local/bin/SDL2.DLL /tmp/maiko/cygwin.x86_64'
|
||||
cygwin\bin\bash -login -c 'chmod +x /tmp/maiko/bin/*; chmod +x /tmp/maiko/cygwin.x86_64/*'
|
||||
cygwin\bin\bash -login -c 'echo lde > /tmp/maiko/cygwin.x86_64/lde.exe.local; echo ldesdl > /tmp/maiko/cygwin.x86_64/ldesdl.exe.local'
|
||||
cygwin\bin\bash -login -c 'mkdir -p /tmp/release_tars'
|
||||
cygwin\bin\bash -login -c 'tar -c -z -C /tmp -f /tmp/release_tars/${{ steps.tag.outputs.release_tag }}-cygwin.x86_64.tgz maiko'
|
||||
|
||||
# Push Release to github
|
||||
- name: Push the release
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
allowUpdates: true
|
||||
artifacts:
|
||||
cygwin/tmp/release_tars/${{ steps.tag.outputs.release_tag }}-cygwin.x86_64.tgz
|
||||
tag: ${{ steps.tag.outputs.release_tag }}
|
||||
draft: ${{ needs.inputs.outputs.draft }}
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
|
||||
|
||||
######################################################################################
|
||||
|
||||
# Emscripten: build and push Maiko compiled for Emscripten (to run Maiko in browser)
|
||||
|
||||
emscripten:
|
||||
|
||||
needs: [inputs, sentry]
|
||||
if: |
|
||||
needs.inputs.outputs.linux == 'true'
|
||||
&& (
|
||||
needs.sentry.outputs.release_not_built == 'true'
|
||||
|| needs.inputs.outputs.force == 'true'
|
||||
)
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
|
||||
# Checkout the actions for this repo owner
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ github.repository_owner }}/.github
|
||||
path: ./Actions_${{ github.sha }}
|
||||
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
|
||||
|
||||
# Install SDL2
|
||||
- name: Install SDL2
|
||||
run: |
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
sudo -E apt-get update
|
||||
sudo -E apt-get install -y libsdl2-dev libsdl2-2.0-0
|
||||
|
||||
# Install Emscripten SDK
|
||||
- name: Install Empscripten
|
||||
working-directory: ../
|
||||
run: |
|
||||
git clone https://github.com/emscripten-core/emsdk.git
|
||||
cd emsdk
|
||||
./emsdk install latest
|
||||
./emsdk activate latest
|
||||
CWD="$(pwd)"
|
||||
echo "${CWD}" >> ${GITHUB_PATH}
|
||||
echo "${CWD}/upstream/emscripten" >> ${GITHUB_PATH}
|
||||
echo "${CWD}/upstream/emscripten/tools" >> ${GITHUB_PATH}
|
||||
echo "${CWD}/node/$(ls -d node/*64bit | tail -1)/bin" >> ${GITHUB_PATH}
|
||||
|
||||
# Checkout the maiko branch
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Setup release tag
|
||||
- name: Setup Release Tag
|
||||
id: tag
|
||||
uses: ./../actions/release-tag-action
|
||||
|
||||
# Compile maiko using Emscripten (no load build)
|
||||
- name: Compile Maiko using Emscripten
|
||||
working-directory: ./bin
|
||||
run: |
|
||||
./makeright wasm
|
||||
cd ../emscripten.wasm
|
||||
tar -c -z -f ../${{ steps.tag.outputs.release_tag }}-emscripten.tgz *
|
||||
|
||||
# Push Release to github
|
||||
- name: Push the release
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
allowUpdates: true
|
||||
artifacts: ${{ steps.tag.outputs.release_tag }}-emscripten.tgz
|
||||
tag: ${{ steps.tag.outputs.release_tag }}
|
||||
draft: ${{ needs.inputs.outputs.draft }}
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
|
||||
######################################################################################
|
||||
|
||||
# Use set-sentry-action to determine set the sentry that says this release has
|
||||
# been successfully built
|
||||
|
||||
complete:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
build_successful: ${{ steps.output.outputs.build_successful }}
|
||||
|
||||
needs: [inputs, sentry, linux, macos, windows, emscripten]
|
||||
|
||||
steps:
|
||||
# Checkout the actions for this repo owner
|
||||
- name: Checkout Actions
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: ${{ github.repository_owner }}/.github
|
||||
path: ./Actions_${{ github.sha }}
|
||||
- run: mv ./Actions_${{ github.sha }}/actions ../actions && rm -rf ./Actions_${{ github.sha }}
|
||||
|
||||
# Set sentry
|
||||
- name: Is build for this commit already completed?
|
||||
id: set
|
||||
uses: ./../actions/set-sentry-action
|
||||
with:
|
||||
tag: "release_docker"
|
||||
|
||||
- name: Output
|
||||
id: output
|
||||
run: |
|
||||
echo "build_successful=true" >> $GITHUB_OUTPUT
|
||||
|
||||
######################################################################################
|
||||
11
.gitignore
vendored
11
.gitignore
vendored
@@ -6,6 +6,8 @@
|
||||
.DS_Store
|
||||
# build directories
|
||||
build/**
|
||||
cmake-build-*/**
|
||||
.idea/
|
||||
*.m68k-x/**
|
||||
*.m68k/**
|
||||
*.386-x/**
|
||||
@@ -15,12 +17,21 @@ build/**
|
||||
*.sparc-x/**
|
||||
*.sparc/**
|
||||
*.x86_64-x/**
|
||||
*.x86_64-sdl/**
|
||||
*.x86_64/**
|
||||
*.wasm/**
|
||||
*.wasm-wasm/**
|
||||
*.wasm_nl/**
|
||||
*.wasm_nl-wasm_nl/**
|
||||
*.armv7l-x/**
|
||||
*.armv7l/**
|
||||
*.aarch64-x/**
|
||||
*.aarch64-sdl/**
|
||||
*.aarch64/**
|
||||
init.386/**
|
||||
*.universal/**
|
||||
# core files
|
||||
core
|
||||
*.core
|
||||
*.swp
|
||||
|
||||
|
||||
119
CMakeLists.txt
119
CMakeLists.txt
@@ -1,5 +1,5 @@
|
||||
PROJECT(maiko C)
|
||||
CMAKE_MINIMUM_REQUIRED(VERSION 3.15)
|
||||
PROJECT(maiko C)
|
||||
|
||||
SET(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
@@ -18,15 +18,17 @@ ENDIF()
|
||||
|
||||
find_program(
|
||||
CLANG_TIDY_EXE
|
||||
NAMES "clang-tidy" "clang-tidy12" "clang-tidy11" "clang-tidy10"
|
||||
NAMES "clang-tidy" "clang-tidy16" "clang-tidy15" "clang-tidy14" "clang-tidy13" "clang-tidy12" "clang-tidy11" "clang-tidy10"
|
||||
DOC "Path to clang-tidy executable"
|
||||
)
|
||||
|
||||
IF (CLANG_TIDY_EXE)
|
||||
IF (NOT CMAKE_CROSSCOMPILING)
|
||||
# There are many many warnings for strcpy instances to deal with,
|
||||
# but suppress it for now so that other issues are more obvious
|
||||
#
|
||||
SET(CMAKE_C_CLANG_TIDY ${CLANG_TIDY_EXE} -checks=-*,cert-*,clang-analyzer-security.*,-clang-analyzer-security.insecureAPI.strcpy,-clang-analyzer-security.insecureAPI.bzero -header-filter=.*)
|
||||
SET(CMAKE_C_CLANG_TIDY ${CLANG_TIDY_EXE} -checks=-*,cert-*,clang-analyzer-security.*,-clang-analyzer-security.insecureAPI.strcpy,-clang-analyzer-security.insecureAPI.bzero -header-filter=.*)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
INCLUDE(CheckLibraryExists)
|
||||
@@ -39,7 +41,13 @@ SET(MAIKO_DEFINITIONS
|
||||
"-DRELEASE=351"
|
||||
)
|
||||
|
||||
SET(MAIKO_INIT_DEFINITIONS
|
||||
"-DRELEASE=351" "-DINIT" "-DNOVERSION"
|
||||
)
|
||||
|
||||
OPTION(MAIKO_DISPLAY_X11 "Use X11 for display." ON)
|
||||
OPTION(MAIKO_DISPLAY_SDL "Use SDL for display." OFF)
|
||||
|
||||
IF(MAIKO_DISPLAY_X11)
|
||||
FIND_PACKAGE(X11 REQUIRED)
|
||||
SET(MAIKO_DISPLAY_X11_DEFINITIONS
|
||||
@@ -70,12 +78,49 @@ IF(MAIKO_DISPLAY_X11)
|
||||
inc/xscroll.h
|
||||
inc/xwinmandefs.h
|
||||
)
|
||||
MESSAGE("-- Configured for X11 display")
|
||||
ENDIF()
|
||||
|
||||
IF(MAIKO_DISPLAY_SDL)
|
||||
FIND_PACKAGE(SDL2 REQUIRED)
|
||||
SET(MAIKO_DISPLAY_SDL_DEFINITIONS
|
||||
"-DSDL"
|
||||
)
|
||||
SET(MAIKO_DISPLAY_SDL_LIBRARIES ${SDL2_LIBRARIES})
|
||||
SET(MAIKO_DISPLAY_SDL_SRCS
|
||||
src/sdl.c
|
||||
)
|
||||
SET(MAIKO_DISPLAY_SDL_HDRS
|
||||
inc/sdldefs.h
|
||||
)
|
||||
MESSAGE("-- Configured for SDL display")
|
||||
ENDIF()
|
||||
|
||||
# according to: https://cmake.org/pipermail/cmake/2016-October/064342.html
|
||||
# the following 2 lines should produce a dropdown-box in the cmake-gui
|
||||
# but this will happen only after running the command line version of cmake,
|
||||
# possibly after "clearing the cache" (i.e. starting with a fresh build directory)
|
||||
SET(MAIKO_NETWORK_TYPE NONE CACHE STRING "Type of networking to use: one of: NONE, SUN_DLPI, SUN_NIT, NETHUB")
|
||||
SET_PROPERTY(CACHE MAIKO_NETWORK_TYPE PROPERTY STRINGS NONE SUN_DLPI SUN_NIT NETHUB)
|
||||
|
||||
# configure networking implementation to use
|
||||
IF(MAIKO_NETWORK_TYPE STREQUAL "NETHUB")
|
||||
LIST(APPEND MAIKO_DEFINITIONS "-DMAIKO_ENABLE_NETHUB")
|
||||
MESSAGE("-- Configured for NETHUB network support")
|
||||
ELSEIF(MAIKO_NETWORK_TYPE STREQUAL "SUN_DLPI")
|
||||
LIST(APPEND MAIKO_DEFINITIONS "-DMAIKO_ENABLE_ETHERNET -DUSE_DLPI")
|
||||
MESSAGE("-- Configured for (SunOS) DLPI networking")
|
||||
ELSEIF(MAIKO_NETWORK_TYPE STREQUAL "SUN_NIT")
|
||||
LIST(APPEND MAIKO_DEFINITIONS "-DMAIKO_ENABLE_ETHERNET -DUSE_NIT")
|
||||
MESSAGE("-- Configured for (SunOS) NIT networking")
|
||||
ELSEIF(NOT MAIKO_NETWORK_TYPE STREQUAL "NONE")
|
||||
MESSAGE(WARNING "Invalid option given for MAIKO_NETWORK_TYPE, must be one of:\nNONE, SUN_DLPI, SUN_NIT, NETHUB")
|
||||
ENDIF()
|
||||
|
||||
|
||||
IF(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
|
||||
LIST(APPEND MAIKO_DEFINITIONS
|
||||
"-DOS5"
|
||||
"-DUSE_DLPI"
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
@@ -121,15 +166,8 @@ SET(BAD_SRCS
|
||||
|
||||
SET(MAIKO_SRCS
|
||||
src/allocmds.c
|
||||
src/arith2.c
|
||||
src/arith3.c
|
||||
src/arith4.c
|
||||
src/array2.c
|
||||
src/array3.c
|
||||
src/array4.c
|
||||
src/array5.c
|
||||
src/array6.c
|
||||
src/array.c
|
||||
src/arithops.c
|
||||
src/arrayops.c
|
||||
src/asmbbt.c
|
||||
src/bbtsub.c
|
||||
src/bin.c
|
||||
@@ -149,7 +187,9 @@ SET(MAIKO_SRCS
|
||||
src/dspif.c
|
||||
src/dspsubrs.c
|
||||
src/eqf.c
|
||||
src/ether.c
|
||||
src/ether_common.c
|
||||
src/ether_sunos.c
|
||||
src/ether_nethub.c
|
||||
src/findkey.c
|
||||
src/foreign.c
|
||||
src/fp.c
|
||||
@@ -223,16 +263,9 @@ SET(MAIKO_HDRS
|
||||
inc/address.h
|
||||
inc/adr68k.h
|
||||
inc/allocmdsdefs.h
|
||||
inc/arith2defs.h
|
||||
inc/arith3defs.h
|
||||
inc/arith4defs.h
|
||||
inc/arithopsdefs.h
|
||||
inc/arith.h
|
||||
inc/array2defs.h
|
||||
inc/array3defs.h
|
||||
inc/array4defs.h
|
||||
inc/array5defs.h
|
||||
inc/array6defs.h
|
||||
inc/arraydefs.h
|
||||
inc/arrayopsdefs.h
|
||||
inc/array.h
|
||||
inc/bb.h
|
||||
inc/bbtsubdefs.h
|
||||
@@ -284,7 +317,6 @@ SET(MAIKO_HDRS
|
||||
inc/gcscandefs.h
|
||||
inc/gvar2defs.h
|
||||
inc/hardrtndefs.h
|
||||
inc/hdw_conf.h
|
||||
inc/ifpage.h
|
||||
inc/inetdefs.h
|
||||
inc/initatms.h
|
||||
@@ -379,6 +411,7 @@ SET(MAIKO_HDRS
|
||||
inc/unixfork.h
|
||||
inc/unwinddefs.h
|
||||
inc/uraiddefs.h
|
||||
inc/uraidextdefs.h
|
||||
inc/usrsubrdefs.h
|
||||
inc/uutilsdefs.h
|
||||
inc/vars3defs.h
|
||||
@@ -390,7 +423,7 @@ SET(MAIKO_HDRS
|
||||
)
|
||||
|
||||
ADD_CUSTOM_TARGET(gen-vdate
|
||||
COMMAND ../bin/mkvdate > vdate.c
|
||||
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/bin/mkvdate > vdate.c
|
||||
BYPRODUCTS vdate.c
|
||||
)
|
||||
|
||||
@@ -404,6 +437,11 @@ IF(MAIKO_DISPLAY_X11)
|
||||
TARGET_LINK_LIBRARIES(lde X11::X11)
|
||||
ENDIF()
|
||||
|
||||
IF(MAIKO_DISPLAY_SDL)
|
||||
# Tell it that the SDL launcher is available.
|
||||
TARGET_COMPILE_DEFINITIONS(lde PUBLIC ${MAIKO_DISPLAY_SDL_DEFINITIONS})
|
||||
ENDIF()
|
||||
|
||||
ADD_EXECUTABLE(ldeether src/ldeether.c src/dlpi.c)
|
||||
TARGET_COMPILE_DEFINITIONS(ldeether PUBLIC ${MAIKO_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(ldeether PUBLIC inc)
|
||||
@@ -420,8 +458,39 @@ IF(MAIKO_DISPLAY_X11)
|
||||
TARGET_COMPILE_DEFINITIONS(ldex PUBLIC ${MAIKO_DEFINITIONS} ${MAIKO_DISPLAY_X11_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(ldex PUBLIC inc)
|
||||
TARGET_LINK_LIBRARIES(ldex ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_X11_LIBRARIES})
|
||||
|
||||
ADD_EXECUTABLE(ldeinit
|
||||
src/main.c
|
||||
vdate.c
|
||||
${MAIKO_SRCS}
|
||||
${MAIKO_HDRS}
|
||||
${MAIKO_DISPLAY_X11_SRCS}
|
||||
${MAIKO_DISPLAY_X11_HDRS}
|
||||
)
|
||||
TARGET_COMPILE_DEFINITIONS(ldeinit PUBLIC ${MAIKO_INIT_DEFINITIONS} ${MAIKO_DISPLAY_X11_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(ldeinit PUBLIC inc)
|
||||
TARGET_LINK_LIBRARIES(ldeinit ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_X11_LIBRARIES})
|
||||
ENDIF()
|
||||
|
||||
IF(MAIKO_DISPLAY_SDL)
|
||||
ADD_EXECUTABLE(ldesdl
|
||||
src/main.c
|
||||
vdate.c
|
||||
${MAIKO_SRCS}
|
||||
${MAIKO_HDRS}
|
||||
${MAIKO_DISPLAY_SDL_SRCS}
|
||||
${MAIKO_DISPLAY_SDL_HDRS}
|
||||
)
|
||||
TARGET_COMPILE_DEFINITIONS(ldesdl PUBLIC ${MAIKO_DEFINITIONS} ${MAIKO_DISPLAY_SDL_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(ldesdl PUBLIC inc)
|
||||
TARGET_INCLUDE_DIRECTORIES(ldesdl PRIVATE ${SDL2_INCLUDE_DIRS})
|
||||
TARGET_LINK_LIBRARIES(ldesdl ${MAIKO_LIBRARIES} ${MAIKO_DISPLAY_SDL_LIBRARIES})
|
||||
ENDIF()
|
||||
|
||||
ADD_EXECUTABLE(mkvdate src/mkvdate.c)
|
||||
TARGET_COMPILE_DEFINITIONS(mkvdate PUBLIC ${MAIKO_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(mkvdate PUBLIC inc)
|
||||
|
||||
ADD_EXECUTABLE(setsout src/setsout.c src/byteswap.c)
|
||||
TARGET_COMPILE_DEFINITIONS(setsout PUBLIC ${MAIKO_DEFINITIONS})
|
||||
TARGET_INCLUDE_DIRECTORIES(setsout PUBLIC inc)
|
||||
|
||||
18
Dockerfile
18
Dockerfile
@@ -1,18 +0,0 @@
|
||||
FROM ubuntu:focal
|
||||
ARG BUILD_DATE
|
||||
LABEL name="Maiko"
|
||||
LABEL description="Virtual machine for Interlisp Medley"
|
||||
LABEL url="https://github.com/Interlisp/maiko"
|
||||
LABEL build-time=$BUILD_DATE
|
||||
|
||||
ARG TARGETPLATFORM
|
||||
|
||||
RUN apt-get update && apt-get install -y make clang libx11-dev gcc x11vnc xvfb
|
||||
|
||||
COPY --chown=nonroot:nonroot . /app/maiko
|
||||
RUN rm -rf /app/maiko/linux*
|
||||
|
||||
WORKDIR /app/maiko/bin
|
||||
RUN ./makeright x
|
||||
|
||||
RUN rm -rf /app/maiko/inc /app/maiko/include /app/maiko/src
|
||||
@@ -1,14 +0,0 @@
|
||||
# CDR CODING in cons cells
|
||||
|
||||
The cdr-code is a 4-bit field of a 32-bit cons cell.
|
||||
It is treated as an on-page indicator bit and a 3-bit scaled offset.
|
||||
|
||||
Certain combinations are treated specially.
|
||||
|
||||
|
||||
on-page| offset | interpretation
|
||||
-------|--------|----------------------------------------------------------------------------
|
||||
1 | 0 | CDR is NIL
|
||||
1 | 1 - 7 | CDR is at 2*offset (counted in 32-bit cells) on same page
|
||||
0 | 0 | CDR is indirect, CDR(car)
|
||||
0 | 1 - 7 | CDR is not a cons cell but is in the car of cell at 2*offset on same page
|
||||
14
README.md
14
README.md
@@ -4,7 +4,7 @@ Maiko is the implementation of the Medley Interlisp virtual machine, for a
|
||||
byte-coded Lisp instruction set and some low-level functions for
|
||||
connecting with Lisp for access to display (via X11) and disk etc.
|
||||
|
||||
For an overview, see [Medley Interlisp Introduction](https://github.com/Interlisp/medley/wiki/Medley-Interlisp-Introduction).
|
||||
For an overview, see [Medley Interlisp Introduction](https://interlisp.org/medley/using/docs/medley/).
|
||||
|
||||
See [the Medley repository](https://github.com/Interlisp/medley) for
|
||||
* [Issues](https://github.com/Interlisp/medley/issues) (note that maiko issues are there too)
|
||||
@@ -15,7 +15,7 @@ Bug reports, feature requests, fixes and improvements, support for additional pl
|
||||
|
||||
## Development Platforms
|
||||
|
||||
We are developing on FreeBSD, Linux, MacOS, and Solaris currently
|
||||
We are developing on FreeBSD, Linux, macOS, and Solaris currently
|
||||
on arm7l, arm64, PowerPC, SPARC, i386, and x86_64 hardware.
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ Building requires `clang`, `make`, X11 client libraries (`libx11-dev`). For exam
|
||||
|
||||
``` sh
|
||||
$ sudo apt update
|
||||
$ sudo apt install clang make x11dev
|
||||
$ sudo apt install clang make libx11-dev
|
||||
```
|
||||
|
||||
```
|
||||
@@ -33,14 +33,14 @@ $ cd maiko/bin
|
||||
$ ./makeright x
|
||||
```
|
||||
|
||||
* The build will (attempt to) detect the OS-type and cpu-type. It will build binaries `lde` and `ldex` in `../ostype.cputype` (with .o files in `..ostype.cputype-x`. For example, Linux on a 64-bit x86 will use `linux.x86_64`, while MacOS 11 on a (new M1) Mac will use `darwin.aarch64`.
|
||||
* The build will (attempt to) detect the OS-type and cpu-type. It will build binaries `lde` and `ldex` in `../ostype.cputype` (with .o files in `..ostype.cputype-x`. For example, Linux on a 64-bit x86 will use `linux.x86_64`, while macOS 11 on a (new M1) Mac will use `darwin.aarch64`.
|
||||
* If you prefer using `gcc` over `clang`, you will need to edit the makefile fragment for your configuration (`makefile-ostype.cputype-x`) and comment out the line (with a #) that defines `CC` for `clang` and uncomment the line (delete the #) for the line that defines `CC` for `gcc`.
|
||||
* There is a cmake configuration (TBD To Be Described here).
|
||||
|
||||
### Building For MacOS
|
||||
### Building For macOS
|
||||
|
||||
* Running on MacOS requires an X server, and building on a Mac requires X client libraries.
|
||||
An X-server for MacOS (and X11 client libraries) can be freely obtained at https://www.xquartz.org/releases
|
||||
* Running on macOS requires an X server, and building on a Mac requires X client libraries.
|
||||
An X-server for macOS (and X11 client libraries) can be freely obtained at https://www.xquartz.org/releases
|
||||
|
||||
### Building for Windows 10
|
||||
|
||||
|
||||
@@ -134,6 +134,24 @@ PKTFILTER True if the ethernet packets are to be filtered before being
|
||||
passed to the Lisp ethernet handler. Available on Sun systems
|
||||
for both the NIT and DLPI cases.
|
||||
|
||||
MAIKO_ENABLE_NETHUB enables the support for Dodo Nethub networking for Dodo
|
||||
XNS services, see documentation: using-dodo-networking-with-maiko.md
|
||||
(implicitely disables USE_DLPI and USE_NIT)
|
||||
|
||||
MAIKO_EMULATE_TIMER_INTERRUPTS enables emulation of recurring timer interrupts for
|
||||
platforms where SIGVTALRM/ITIMER_VIRTUAL or SIGALRM/ITIMER_REAL
|
||||
do not work as expected (like cygwin)
|
||||
timer is emulated by signaling an interrupt after a number of
|
||||
executed instructions, by default 20.000 instructions, this can be
|
||||
overriden by defining MAIKO_TIMER_ASYNC_EMULATION_INSNS_COUNTDOWN
|
||||
with the number of instructions between 2 interrupts
|
||||
additionally this adds the command line arguments -intr-emu-insns
|
||||
for overriding the compiled in instruction interval
|
||||
(not working if OPDISP (fast opcode dispatch) is used)
|
||||
|
||||
MAIKO_EMULATE_ASYNC_INTERRUPTS same as MAIKO_EMULATE_TIMER_INTERRUPTS, but also
|
||||
signals an I/O interrupt after each instruction interval
|
||||
|
||||
|
||||
bitbltsub.c:#ifdef GETBASE
|
||||
testdisplay.c:#ifdef NOTUSED
|
||||
|
||||
@@ -9,7 +9,8 @@
|
||||
# #
|
||||
#########################################################################
|
||||
|
||||
os=${LDEARCH:-`./config.guess`}
|
||||
SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
|
||||
os=${LDEARCH:-`$SCRIPTPATH/config.guess`}
|
||||
# o/s switch block
|
||||
case "$os" in
|
||||
m68k-*) echo m68k ;;
|
||||
|
||||
20
bin/makefile-cygwin.x86_64-sdl
Normal file
20
bin/makefile-cygwin.x86_64-sdl
Normal file
@@ -0,0 +1,20 @@
|
||||
# Options for Linux, Intel x86_64 and X-Window
|
||||
|
||||
CC = gcc -m64 $(GCC_CFLAGS) -I/usr/local/include
|
||||
#CC = clang -m64 $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
XFLAGS = -DSDL
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||
|
||||
LDFLAGS = -lm -L/usr/local/lib -lSDL2
|
||||
#
|
||||
LDELDFLAGS =
|
||||
|
||||
OBJECTDIR = ../$(RELEASENAME)/
|
||||
|
||||
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl
|
||||
19
bin/makefile-darwin.aarch64-sdl
Normal file
19
bin/makefile-darwin.aarch64-sdl
Normal file
@@ -0,0 +1,19 @@
|
||||
# Options for MacOS, arm64 (aka aarch64) processor, SDL
|
||||
|
||||
CC = clang -target aarch64-apple-darwin $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
SDLFLAGS = -DSDL -F /Library/Frameworks
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g
|
||||
DEBUGFLAGS = # -DDEBUG -DOPTRACE
|
||||
DFLAGS = $(DEBUGFLAGS) $(SDLFLAGS) -DRELEASE=351
|
||||
|
||||
LDFLAGS = -F /Library/Frameworks -framework SDL2
|
||||
LDELDFLAGS =
|
||||
|
||||
OBJECTDIR = ../$(RELEASENAME)/
|
||||
|
||||
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl
|
||||
@@ -1,6 +1,6 @@
|
||||
# Options for MacOS, x86 processor, X windows
|
||||
# Options for MacOS, arm64 (aka aarch64) processor, X windows
|
||||
|
||||
CC = clang $(CLANG_CFLAGS)
|
||||
CC = clang -target aarch64-apple-darwin $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xbbt.o \
|
||||
|
||||
19
bin/makefile-darwin.x86_64-sdl
Normal file
19
bin/makefile-darwin.x86_64-sdl
Normal file
@@ -0,0 +1,19 @@
|
||||
# Options for MacOS, x86 processor, SDL
|
||||
|
||||
CC = clang -m64 -target x86_64-apple-darwin $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
SDLFLAGS = -DSDL -F /Library/Frameworks
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g
|
||||
DEBUGFLAGS = # -DDEBUG -DOPTRACE
|
||||
DFLAGS = $(DEBUGFLAGS) $(SDLFLAGS) -DRELEASE=351
|
||||
|
||||
LDFLAGS = -F /Library/Frameworks -framework SDL2
|
||||
LDELDFLAGS =
|
||||
|
||||
OBJECTDIR = ../$(RELEASENAME)/
|
||||
|
||||
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl
|
||||
@@ -1,6 +1,6 @@
|
||||
# Options for MacOS, x86 processor, X windows
|
||||
|
||||
CC = clang -m64 $(CLANG_CFLAGS)
|
||||
CC = clang -target x86_64-apple-darwin $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xbbt.o \
|
||||
@@ -26,3 +26,4 @@ LDELDFLAGS = -L/opt/X11/lib -lX11 -lm
|
||||
OBJECTDIR = ../$(RELEASENAME)/
|
||||
|
||||
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldex
|
||||
|
||||
|
||||
@@ -13,12 +13,12 @@ LDFLAGS = -g graphics.lib binmode.lib mouse.lib
|
||||
|
||||
RM = del
|
||||
|
||||
SRCFILES = conspage.c gcoflow.c shift.c dbgtool.c gcr.c gcrcell.c llstk.c gcscan.c loopsops.c storage.c allocmds.c dir.c gvar2.c lowlev1.c subr.c arith2.c lowlev2.c subr0374.c arith3.c doscomm.c hardrtn.c lsthandl.c sxhash.c arith4.c draw.c main.c testtool.c array.c dsk.c inet.c misc7.c timer.c array2.c dspif.c initdsp.c miscn.c typeof.c array3.c initkbd.c ubf1.c array4.c dspsubrs.c initsout.c mkatom.c ubf2.c array5.c eqf.c intcall.c mkcell.c ubf3.c array6.c ether.c mkvdate.c ufn.c atom.c findkey.c kbdsubrs.c mouseif.c ufs.c bbtsub.c foreign.c keyevent.c unixcomm.c bin.c fp.c binds.c asmbbt.c fvar.c mvs.c unwind.c bitblt.c gc.c uraid.c blt.c gc2.c kprint.c osmsg.c usrsubr.c byteswap.c gcarray.c perrno.c ldeboot.c ldeether.c uutils.c carcdr.c gccode.c rawcolor.c vars3.c gcfinal.c ldsout.c return.c vmemsave.c chardev.c gchtfind.c lineblt8.c rpc.c xc.c common.c gcmain3.c lisp2c.c rplcons.c z2.c xmkicon.c xbbt.c xinit.c xscroll.c xcursor.c xlspwin.c xrdopt.c xwinman.c dosmouse.c vesafns.asm vesainit.c vgainit.c kbdif.c dspsparc.il copyright launch.asm lpread.c lpsolve.c lpmain.c lpwrite.c lpdual.c lptran.c
|
||||
SRCFILES = conspage.c gcoflow.c shift.c dbgtool.c gcr.c gcrcell.c llstk.c gcscan.c loopsops.c storage.c allocmds.c dir.c gvar2.c lowlev1.c subr.c arithops.c lowlev2.c subr0374.c doscomm.c hardrtn.c lsthandl.c sxhash.c draw.c main.c testtool.c array.c dsk.c inet.c misc7.c timer.c array2.c dspif.c initdsp.c miscn.c typeof.c array3.c initkbd.c ubf1.c array4.c dspsubrs.c initsout.c mkatom.c ubf2.c array5.c eqf.c intcall.c mkcell.c ubf3.c array6.c ether.c mkvdate.c ufn.c atom.c findkey.c kbdsubrs.c mouseif.c ufs.c bbtsub.c foreign.c keyevent.c unixcomm.c bin.c fp.c binds.c asmbbt.c fvar.c mvs.c unwind.c bitblt.c gc.c uraid.c blt.c gc2.c kprint.c osmsg.c usrsubr.c byteswap.c gcarray.c perrno.c ldeboot.c ldeether.c uutils.c carcdr.c gccode.c rawcolor.c vars3.c gcfinal.c ldsout.c return.c vmemsave.c chardev.c gchtfind.c lineblt8.c rpc.c xc.c common.c gcmain3.c lisp2c.c rplcons.c z2.c xmkicon.c xbbt.c xinit.c xscroll.c xcursor.c xlspwin.c xrdopt.c xwinman.c dosmouse.c vesafns.asm vesainit.c vgainit.c kbdif.c dspsparc.il copyright launch.asm lpread.c lpsolve.c lpmain.c lpwrite.c lpdual.c lptran.c
|
||||
|
||||
OFILES = conspage.obj gcoflow.obj shift.obj dbgtool.obj gcr.obj gcrcell.obj llstk.obj gcscan.obj loopsops.obj storage.obj allocmds.obj dir.obj gvar2.obj lowlev1.obj subr.obj arith2.obj lowlev2.obj subr0374.obj arith3.obj doscomm.obj hardrtn.obj lsthandl.obj sxhash.obj arith4.obj draw.obj main.obj testtool.obj array.obj dsk.obj inet.obj misc7.obj timer.obj array2.obj dspif.obj initdsp.obj miscn.obj typeof.obj array3.obj initkbd.obj ubf1.obj array4.obj dspsubrs.obj initsout.obj mkatom.obj ubf2.obj array5.obj eqf.obj intcall.obj mkcell.obj ubf3.obj array6.obj ether.obj ufn.obj atom.obj findkey.obj kbdsubrs.obj mouseif.obj ufs.obj bbtsub.obj foreign.obj keyevent.obj unixcomm.obj bin.obj fp.obj binds.obj fvar.obj mvs.obj unwind.obj bitblt.obj gc.obj uraid.obj blt.obj gc2.obj kprint.obj osmsg.obj usrsubr.obj byteswap.obj gcarray.obj perrno.obj uutils.obj carcdr.obj asmbbt.obj gccode.obj vars3.obj gcfinal.obj ldsout.obj return.obj vmemsave.obj chardev.obj gchtfind.obj lineblt8.obj rpc.obj xc.obj common.obj gcmain3.obj lisp2c.obj rplcons.obj z2.obj vdate.obj $(COLORFILES) $(ARCHFILES) $(LPFILES)
|
||||
OFILES = conspage.obj gcoflow.obj shift.obj dbgtool.obj gcr.obj gcrcell.obj llstk.obj gcscan.obj loopsops.obj storage.obj allocmds.obj dir.obj gvar2.obj lowlev1.obj subr.obj arithops.obj lowlev2.obj subr0374.obj doscomm.obj hardrtn.obj lsthandl.obj sxhash.obj draw.obj main.obj testtool.obj array.obj dsk.obj inet.obj misc7.obj timer.obj array2.obj dspif.obj initdsp.obj miscn.obj typeof.obj array3.obj initkbd.obj ubf1.obj array4.obj dspsubrs.obj initsout.obj mkatom.obj ubf2.obj array5.obj eqf.obj intcall.obj mkcell.obj ubf3.obj array6.obj ether.obj ufn.obj atom.obj findkey.obj kbdsubrs.obj mouseif.obj ufs.obj bbtsub.obj foreign.obj keyevent.obj unixcomm.obj bin.obj fp.obj binds.obj fvar.obj mvs.obj unwind.obj bitblt.obj gc.obj uraid.obj blt.obj gc2.obj kprint.obj osmsg.obj usrsubr.obj byteswap.obj gcarray.obj perrno.obj uutils.obj carcdr.obj asmbbt.obj gccode.obj vars3.obj gcfinal.obj ldsout.obj return.obj vmemsave.obj chardev.obj gchtfind.obj lineblt8.obj rpc.obj xc.obj common.obj gcmain3.obj lisp2c.obj rplcons.obj z2.obj vdate.obj $(COLORFILES) $(ARCHFILES) $(LPFILES)
|
||||
|
||||
|
||||
HFILES = address.h adr68k.h arith.h cell.h dbprint.h display.h dspif.h ifpage.h iopage.h lispemul.h lispmap.h lsptypes.h miscstat.h lspglob.h array.h bb.h bitblt.h debug.h devconf.h dspdata.h ether.h fast_dsp.h gcdata.h hdw_conf.h initatms.h inlinec.h keyboard.h lispver1.h lispver2.h lldsp.h locfile.h medleyfp.h mouseif.h my.h opcodes.h osmsg.h pilotbbt.h print.h return.h stack.h stream.h subrs.h timeout.h tos1defs.h tosfns.h tosret.h vmemsave.h xdefs.h xbitmaps.h xkeymap.h
|
||||
HFILES = address.h adr68k.h arithopsdefs.h arith.h cell.h dbprint.h display.h dspif.h ifpage.h iopage.h lispemul.h lispmap.h lsptypes.h miscstat.h lspglob.h array.h bb.h bitblt.h debug.h devconf.h dspdata.h ether.h fast_dsp.h gcdata.h initatms.h inlinec.h keyboard.h lispver1.h lispver2.h lldsp.h locfile.h medleyfp.h mouseif.h my.h opcodes.h osmsg.h pilotbbt.h print.h return.h stack.h stream.h subrs.h timeout.h tos1defs.h tosfns.h tosret.h vmemsave.h xdefs.h xbitmaps.h xkeymap.h
|
||||
|
||||
|
||||
|
||||
@@ -202,9 +202,9 @@ subr.obj : ../src/subr.c
|
||||
$(CC) @copts ../src/subr.c -I ../inc -c $@
|
||||
del copts
|
||||
|
||||
arith2.obj : ../src/arith2.c
|
||||
arithops.obj : ../src/arithops.c
|
||||
@ echo $(CFLAGS) > copts
|
||||
$(CC) @copts ../src/arith2.c -I ../inc -c $@
|
||||
$(CC) @copts ../src/arithops.c -I ../inc -c $@
|
||||
del copts
|
||||
|
||||
lowlev2.obj : ../src/lowlev2.c
|
||||
@@ -217,11 +217,6 @@ subr0374.obj : ../src/subr0374.c
|
||||
$(CC) @copts ../src/subr0374.c -I ../inc -c $@
|
||||
del copts
|
||||
|
||||
arith3.obj : ../src/arith3.c
|
||||
@ echo $(CFLAGS) > copts
|
||||
$(CC) @copts ../src/arith3.c -I ../inc -c $@
|
||||
del copts
|
||||
|
||||
doscomm.obj : ../src/doscomm.c
|
||||
@ echo $(CFLAGS) > copts
|
||||
$(CC) @copts ../src/doscomm.c -I ../inc -c $@
|
||||
@@ -242,11 +237,6 @@ sxhash.obj : ../src/sxhash.c
|
||||
$(CC) @copts ../src/sxhash.c -I ../inc -c $@
|
||||
del copts
|
||||
|
||||
arith4.obj : ../src/arith4.c
|
||||
@ echo $(CFLAGS) > copts
|
||||
$(CC) @copts ../src/arith4.c -I ../inc -c $@
|
||||
del copts
|
||||
|
||||
draw.obj : ../src/draw.c
|
||||
@ echo $(CFLAGS) > copts
|
||||
$(CC) @copts ../src/draw.c -I ../inc -c $@
|
||||
|
||||
20
bin/makefile-emscripten.wasm-wasm
Normal file
20
bin/makefile-emscripten.wasm-wasm
Normal file
@@ -0,0 +1,20 @@
|
||||
# Options for Emscripten, WASM and SDL
|
||||
|
||||
CC = emcc $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
XFLAGS = -DSDL -sUSE_SDL=2
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351 -DMAIKO_ENABLE_NETHUB
|
||||
|
||||
LD = emcc
|
||||
LDFLAGS = -lidbfs.js -sUSE_SDL=2 -sASYNCIFY -sALLOW_MEMORY_GROWTH -sEXIT_RUNTIME=1 -sFORCE_FILESYSTEM -sLZ4
|
||||
|
||||
LDELDFLAGS =
|
||||
|
||||
OBJECTDIR = ../$(RELEASENAME)/
|
||||
|
||||
default : ../$(OSARCHNAME)/ldesdl.js
|
||||
18
bin/makefile-freebsd.386-sdl
Normal file
18
bin/makefile-freebsd.386-sdl
Normal file
@@ -0,0 +1,18 @@
|
||||
# Options for FreeBSD, Intel 386/486 and SDL
|
||||
|
||||
CC = clang -m32 $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
SDLFLAGS = -DSDL -I/usr/local/include
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g
|
||||
DFLAGS = $(SDLFLAGS) -DRELEASE=351
|
||||
|
||||
LDFLAGS = -L/usr/local/lib -lSDL2 -lm
|
||||
LDELDFLAGS =
|
||||
|
||||
OBJECTDIR = ../$(RELEASENAME)/
|
||||
|
||||
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl
|
||||
18
bin/makefile-freebsd.aarch64-sdl
Normal file
18
bin/makefile-freebsd.aarch64-sdl
Normal file
@@ -0,0 +1,18 @@
|
||||
# Options for FreeBSD, ARM64 and SDL
|
||||
|
||||
CC = clang -m64 $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
SDLFLAGS = -DSDL -I/usr/local/include
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g
|
||||
DFLAGS = $(SDLFLAGS) -DRELEASE=351
|
||||
|
||||
LDFLAGS = -L/usr/local/lib -lSDL2 -lm
|
||||
LDELDFLAGS =
|
||||
|
||||
OBJECTDIR = ../$(RELEASENAME)/
|
||||
|
||||
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl
|
||||
18
bin/makefile-freebsd.x86_64-sdl
Normal file
18
bin/makefile-freebsd.x86_64-sdl
Normal file
@@ -0,0 +1,18 @@
|
||||
# Options for FreeBSD, Intel x86_64 and X-Windows
|
||||
|
||||
CC = clang -m64 $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
SDLFLAGS = -DSDL -I/usr/local/include
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g
|
||||
DFLAGS = $(SDLFLAGS) -DRELEASE=351
|
||||
|
||||
LDFLAGS = -L/usr/local/lib -lSDL2 -lm
|
||||
LDELDFLAGS =
|
||||
|
||||
OBJECTDIR = ../$(RELEASENAME)/
|
||||
|
||||
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl
|
||||
@@ -1,6 +1,6 @@
|
||||
# Options for MacOS, aarch64 processor, X windows, for INIT processing
|
||||
|
||||
CC = clang $(CLANG_CFLAGS)
|
||||
CC = clang -target aarch64-apple-darwin $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xbbt.o \
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Options for MacOS, x86_64 processor, X windows, for INIT processing
|
||||
|
||||
CC = clang -m64 $(CLANG_CFLAGS)
|
||||
CC = clang -m64 -target x86_64-apple-darwin $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xbbt.o \
|
||||
|
||||
29
bin/makefile-init-linux.aarch64
Normal file
29
bin/makefile-init-linux.aarch64
Normal file
@@ -0,0 +1,29 @@
|
||||
# Options for Linux, aarch64 processor, X windows, for INIT processing
|
||||
|
||||
CC = gcc $(GCC_CFLAGS)
|
||||
#CC = clang $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xbbt.o \
|
||||
$(OBJECTDIR)dspif.o \
|
||||
$(OBJECTDIR)xinit.o \
|
||||
$(OBJECTDIR)xscroll.o \
|
||||
$(OBJECTDIR)xcursor.o \
|
||||
$(OBJECTDIR)xlspwin.o \
|
||||
$(OBJECTDIR)xrdopt.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
|
||||
XFLAGS = -DXWINDOW
|
||||
|
||||
# OPTFLAGS is normally -O2, for INIT we want unoptimized in case we need to debug it
|
||||
OPTFLAGS = -O0 -g
|
||||
DEBUGFLAGS =
|
||||
DFLAGS = $(DEBUGFLAGS) $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
|
||||
|
||||
LDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
|
||||
LDELDFLAGS = -L/usr/X11/lib -lX11 -lc -lm
|
||||
|
||||
OBJECTDIR = ../$(RELEASENAME)/
|
||||
|
||||
default : ../$(OSARCHNAME)/ldeinit
|
||||
@@ -1,7 +1,7 @@
|
||||
# Options for Linux, x86 processor, X windows, for INIT processing
|
||||
|
||||
#CC = gcc -m64 $(GCC_CFLAGS)
|
||||
CC = clang -m64 $(CLANG_CFLAGS)
|
||||
CC = gcc $(GCC_CFLAGS)
|
||||
#CC = clang $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xbbt.o \
|
||||
|
||||
27
bin/makefile-init-openbsd.x86_64
Normal file
27
bin/makefile-init-openbsd.x86_64
Normal file
@@ -0,0 +1,27 @@
|
||||
# Options for OpenBSD, Intel x86_64 and X-Window
|
||||
|
||||
CC = clang -m64 $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xbbt.o \
|
||||
$(OBJECTDIR)dspif.o \
|
||||
$(OBJECTDIR)xinit.o \
|
||||
$(OBJECTDIR)xscroll.o \
|
||||
$(OBJECTDIR)xcursor.o \
|
||||
$(OBJECTDIR)xlspwin.o \
|
||||
$(OBJECTDIR)xrdopt.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
|
||||
XFLAGS = -I/usr/X11R6/include -DXWINDOW
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351 -DNOVERSION -DINIT
|
||||
|
||||
LDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm
|
||||
LDELDFLAGS = -L/usr/X11R6/lib -lX11 -lc -lm
|
||||
|
||||
OBJECTDIR = ../$(RELEASENAME)/
|
||||
|
||||
default : ../$(OSARCHNAME)/ldeinit
|
||||
19
bin/makefile-linux.386-sdl
Normal file
19
bin/makefile-linux.386-sdl
Normal file
@@ -0,0 +1,19 @@
|
||||
# Options for Linux, Intel 386/486 and SDL
|
||||
|
||||
CC = gcc -m32 $(GCC_CFLAGS)
|
||||
# CC = clang $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
XFLAGS = -DSDL
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||
|
||||
LDFLAGS = -lm -lSDL2
|
||||
LDELDFLAGS =
|
||||
|
||||
OBJECTDIR = ../$(RELEASENAME)/
|
||||
|
||||
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl
|
||||
@@ -1,7 +1,8 @@
|
||||
# Options for Linux, Intel 386/486 and X-Window
|
||||
|
||||
#CC = gcc -m32 $(GCC_CFLAGS)
|
||||
CC = clang -m32 $(CLANG_CFLAGS)
|
||||
CC = gcc -m32 $(GCC_CFLAGS)
|
||||
# CC = clang -m32 $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xbbt.o \
|
||||
$(OBJECTDIR)dspif.o \
|
||||
@@ -12,7 +13,6 @@ XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xrdopt.o \
|
||||
$(OBJECTDIR)xwinman.o
|
||||
|
||||
|
||||
XFLAGS = -DXWINDOW
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
|
||||
19
bin/makefile-linux.aarch64-sdl
Normal file
19
bin/makefile-linux.aarch64-sdl
Normal file
@@ -0,0 +1,19 @@
|
||||
# Options for Linux, ARM64 and SDL
|
||||
|
||||
CC = gcc $(GCC_CFLAGS)
|
||||
#CC = clang $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
SDLFLAGS = -DSDL
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
DFLAGS = $(SDLFLAGS) -DRELEASE=351
|
||||
|
||||
LDFLAGS = -lSDL2 -lm
|
||||
LDELDFLAGS =
|
||||
|
||||
OBJECTDIR = ../$(RELEASENAME)/
|
||||
|
||||
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl
|
||||
@@ -1,4 +1,4 @@
|
||||
# Options for Linux, ARMv7 and X-Window
|
||||
# Options for Linux, aarch64 and X-Window
|
||||
|
||||
CC = gcc $(GCC_CFLAGS)
|
||||
#CC = clang $(CLANG_CFLAGS)
|
||||
|
||||
19
bin/makefile-linux.armv7l-sdl
Normal file
19
bin/makefile-linux.armv7l-sdl
Normal file
@@ -0,0 +1,19 @@
|
||||
# Options for Linux, ARMv7 and SDL
|
||||
|
||||
CC = gcc $(GCC_CFLAGS)
|
||||
#CC = clang $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
XFLAGS = -DSDL
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||
|
||||
LDFLAGS = -lm -lSDL2
|
||||
LDELDFLAGS =
|
||||
|
||||
OBJECTDIR = ../$(RELEASENAME)/
|
||||
|
||||
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl
|
||||
19
bin/makefile-linux.x86_64-sdl
Normal file
19
bin/makefile-linux.x86_64-sdl
Normal file
@@ -0,0 +1,19 @@
|
||||
# Options for Linux, Intel x86_64 and SDL
|
||||
|
||||
CC = gcc -m64 $(GCC_CFLAGS)
|
||||
# CC = clang -m64 $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)sdl.o
|
||||
|
||||
XFLAGS = -DSDL
|
||||
|
||||
# OPTFLAGS is normally -O2.
|
||||
OPTFLAGS = -O2 -g3
|
||||
DFLAGS = $(XFLAGS) -DRELEASE=351
|
||||
|
||||
LDFLAGS = -lm -lSDL2
|
||||
LDELDFLAGS =
|
||||
|
||||
OBJECTDIR = ../$(RELEASENAME)/
|
||||
|
||||
default : ../$(OSARCHNAME)/lde ../$(OSARCHNAME)/ldesdl
|
||||
@@ -1,7 +1,7 @@
|
||||
# Options for Linux, Intel x86_64 and X-Window
|
||||
|
||||
#CC = gcc -m64 $(GCC_CFLAGS)
|
||||
CC = clang -m64 $(CLANG_CFLAGS)
|
||||
CC = gcc -m64 $(GCC_CFLAGS)
|
||||
# CC = clang -m64 $(CLANG_CFLAGS)
|
||||
|
||||
XFILES = $(OBJECTDIR)xmkicon.o \
|
||||
$(OBJECTDIR)xbbt.o \
|
||||
|
||||
@@ -38,15 +38,8 @@ REQUIRED-INCS = $(INCDIR)version.h $(INCDIR)maiko/platform.h
|
||||
CFLAGS = $(OPTFLAGS) $(DFLAGS)
|
||||
RFLAGS = -c $(CFLAGS) -I$(INCDIR) -I$(INCLUDEDIR)
|
||||
|
||||
OFILES = $(OBJECTDIR)arith2.o \
|
||||
$(OBJECTDIR)arith3.o \
|
||||
$(OBJECTDIR)arith4.o \
|
||||
$(OBJECTDIR)array.o \
|
||||
$(OBJECTDIR)array2.o \
|
||||
$(OBJECTDIR)array3.o \
|
||||
$(OBJECTDIR)array4.o \
|
||||
$(OBJECTDIR)array5.o \
|
||||
$(OBJECTDIR)array6.o \
|
||||
OFILES = $(OBJECTDIR)arithops.o \
|
||||
$(OBJECTDIR)arrayops.o \
|
||||
$(OBJECTDIR)bin.o \
|
||||
$(OBJECTDIR)binds.o \
|
||||
$(OBJECTDIR)bitblt.o \
|
||||
@@ -122,7 +115,9 @@ DEVICES = $(OBJECTDIR)dspsubrs.o \
|
||||
$(OBJECTDIR)dir.o \
|
||||
$(OBJECTDIR)keyevent.o \
|
||||
$(OBJECTDIR)kbdsubrs.o \
|
||||
$(OBJECTDIR)ether.o \
|
||||
$(OBJECTDIR)ether_common.o \
|
||||
$(OBJECTDIR)ether_sunos.o \
|
||||
$(OBJECTDIR)ether_nethub.o \
|
||||
$(OBJECTDIR)tty.o \
|
||||
$(OBJECTDIR)initkbd.o
|
||||
|
||||
@@ -212,7 +207,7 @@ $(OBJECTDIR)dbgtool.o: $(SRCDIR)dbgtool.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)adr68k.h $(INCDIR)lsptypes.h $(INCDIR)lspglob.h $(INCDIR)ifpage.h \
|
||||
$(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)emlglob.h $(INCDIR)cell.h \
|
||||
$(INCDIR)stack.h $(INCDIR)dbgtooldefs.h $(INCDIR)kprintdefs.h \
|
||||
$(INCDIR)testtooldefs.h
|
||||
$(INCDIR)testtooldefs.h $(INCDIR)uraidextdefs.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)dbgtool.c -o $(OBJECTDIR)dbgtool.o
|
||||
|
||||
$(OBJECTDIR)dlpi.o: $(SRCDIR)dlpi.c \
|
||||
@@ -233,7 +228,7 @@ $(OBJECTDIR)testtool.o: $(SRCDIR)testtool.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)emlglob.h $(INCDIR)cell.h \
|
||||
$(INCDIR)debug.h $(INCDIR)dbprint.h $(INCDIR)tosfns.h $(INCDIR)testtooldefs.h \
|
||||
$(INCDIR)stack.h $(INCDIR)dbgtooldefs.h $(INCDIR)gcarraydefs.h \
|
||||
$(INCDIR)kprintdefs.h $(INCDIR)mkatomdefs.h
|
||||
$(INCDIR)kprintdefs.h $(INCDIR)mkatomdefs.h $(INCDIR)uraidextdefs.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)testtool.c -o $(OBJECTDIR)testtool.o
|
||||
|
||||
$(OBJECTDIR)allocmds.o: $(SRCDIR)allocmds.c $(REQUIRED-INCS) \
|
||||
@@ -245,48 +240,40 @@ $(OBJECTDIR)allocmds.o: $(SRCDIR)allocmds.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)timerdefs.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)allocmds.c -o $(OBJECTDIR)allocmds.o
|
||||
|
||||
$(OBJECTDIR)arith2.o: $(SRCDIR)arith2.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)lispemul.h $(INCDIR)lspglob.h \
|
||||
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)adr68k.h \
|
||||
$(INCDIR)lispmap.h $(INCDIR)lsptypes.h $(INCDIR)medleyfp.h $(INCDIR)arith.h \
|
||||
$(INCDIR)arith2defs.h $(INCDIR)fpdefs.h $(INCDIR)mkcelldefs.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)arith2.c -o $(OBJECTDIR)arith2.o
|
||||
$(OBJECTDIR)arithops.o: $(SRCDIR)arithops.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)adr68k.h \
|
||||
$(INCDIR)arith.h \
|
||||
$(INCDIR)commondefs.h \
|
||||
$(INCDIR)lispemul.h \
|
||||
$(INCDIR)lispmap.h \
|
||||
$(INCDIR)lsptypes.h \
|
||||
$(INCDIR)mkcelldefs.h \
|
||||
$(INCDIR)arithopsdefs.h \
|
||||
$(INCDIR)fpdefs.h \
|
||||
$(INCDIR)lspglob.h \
|
||||
$(INCDIR)ifpage.h \
|
||||
$(INCDIR)iopage.h \
|
||||
$(INCDIR)miscstat.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)arithops.c -o $(OBJECTDIR)arithops.o
|
||||
|
||||
$(OBJECTDIR)arith3.o: $(SRCDIR)arith3.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)lispemul.h $(INCDIR)lispmap.h \
|
||||
$(INCDIR)lspglob.h $(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h \
|
||||
$(INCDIR)lsptypes.h $(INCDIR)address.h $(INCDIR)adr68k.h $(INCDIR)cell.h \
|
||||
$(INCDIR)arith.h $(INCDIR)arith3defs.h $(INCDIR)mkcelldefs.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)arith3.c -o $(OBJECTDIR)arith3.o
|
||||
|
||||
$(OBJECTDIR)arith4.o: $(SRCDIR)arith4.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)lispemul.h $(INCDIR)lispmap.h \
|
||||
$(INCDIR)lspglob.h $(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h \
|
||||
$(INCDIR)lsptypes.h $(INCDIR)address.h $(INCDIR)adr68k.h $(INCDIR)cell.h \
|
||||
$(INCDIR)medleyfp.h $(INCDIR)arith.h $(INCDIR)arith4defs.h $(INCDIR)fpdefs.h \
|
||||
$(INCDIR)mkcelldefs.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)arith4.c -o $(OBJECTDIR)arith4.o
|
||||
|
||||
$(OBJECTDIR)array.o: $(SRCDIR)array.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)lispemul.h $(INCDIR)lspglob.h \
|
||||
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)adr68k.h \
|
||||
$(INCDIR)lispmap.h $(INCDIR)lsptypes.h $(INCDIR)emlglob.h $(INCDIR)arraydefs.h \
|
||||
$(INCDIR)mkcelldefs.h $(INCDIR)arith.h $(INCDIR)my.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)array.c -o $(OBJECTDIR)array.o
|
||||
|
||||
$(OBJECTDIR)array3.o: $(SRCDIR)array3.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)lispemul.h $(INCDIR)lspglob.h \
|
||||
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)adr68k.h \
|
||||
$(INCDIR)lispmap.h $(INCDIR)lsptypes.h $(INCDIR)emlglob.h \
|
||||
$(INCDIR)array3defs.h $(INCDIR)mkcelldefs.h $(INCDIR)arith.h $(INCDIR)my.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)array3.c -o $(OBJECTDIR)array3.o
|
||||
|
||||
$(OBJECTDIR)array5.o: $(SRCDIR)array5.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)lispemul.h $(INCDIR)lspglob.h \
|
||||
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)adr68k.h \
|
||||
$(INCDIR)lispmap.h $(INCDIR)lsptypes.h $(INCDIR)emlglob.h \
|
||||
$(INCDIR)array5defs.h $(INCDIR)mkcelldefs.h $(INCDIR)arith.h $(INCDIR)my.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)array5.c -o $(OBJECTDIR)array5.o
|
||||
$(OBJECTDIR)arrayops.o: $(SRCDIR)arrayops.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)adr68k.h \
|
||||
$(INCDIR)arrayopsdefs.h \
|
||||
$(INCDIR)lispemul.h \
|
||||
$(INCDIR)lispmap.h \
|
||||
$(INCDIR)emlglob.h \
|
||||
$(INCDIR)lspglob.h \
|
||||
$(INCDIR)ifpage.h \
|
||||
$(INCDIR)iopage.h \
|
||||
$(INCDIR)miscstat.h \
|
||||
$(INCDIR)lsptypes.h \
|
||||
$(INCDIR)my.h \
|
||||
$(INCDIR)arith.h \
|
||||
$(INCDIR)commondefs.h \
|
||||
$(INCDIR)mkcelldefs.h \
|
||||
$(INCDIR)gcdata.h \
|
||||
$(INCDIR)gchtfinddefs.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)arrayops.c -o $(OBJECTDIR)arrayops.o
|
||||
|
||||
$(OBJECTDIR)bin.o: $(SRCDIR)bin.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)lispemul.h $(INCDIR)lispmap.h \
|
||||
@@ -337,7 +324,7 @@ $(OBJECTDIR)blt.o: $(SRCDIR)blt.c $(REQUIRED-INCS) \
|
||||
$(CC) $(RFLAGS) $(SRCDIR)blt.c -o $(OBJECTDIR)blt.o
|
||||
|
||||
$(OBJECTDIR)byteswap.o: $(SRCDIR)byteswap.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)hdw_conf.h $(INCDIR)lispemul.h \
|
||||
$(INCDIR)lispemul.h \
|
||||
$(INCDIR)lispmap.h $(INCDIR)lsptypes.h $(INCDIR)stack.h \
|
||||
$(INCDIR)byteswapdefs.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)byteswap.c -o $(OBJECTDIR)byteswap.o
|
||||
@@ -382,7 +369,7 @@ $(OBJECTDIR)common.o: $(SRCDIR)common.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)lispemul.h $(INCDIR)lispmap.h \
|
||||
$(INCDIR)adr68k.h $(INCDIR)lspglob.h $(INCDIR)ifpage.h $(INCDIR)iopage.h \
|
||||
$(INCDIR)miscstat.h $(INCDIR)emlglob.h $(INCDIR)stack.h $(INCDIR)dbprint.h \
|
||||
$(INCDIR)commondefs.h $(INCDIR)kprintdefs.h $(INCDIR)uraiddefs.h
|
||||
$(INCDIR)commondefs.h $(INCDIR)kprintdefs.h $(INCDIR)uraiddefs.h $(INCDIR)uraidextdefs.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)common.c -o $(OBJECTDIR)common.o
|
||||
|
||||
$(OBJECTDIR)conspage.o: $(SRCDIR)conspage.c $(REQUIRED-INCS) \
|
||||
@@ -487,12 +474,26 @@ $(OBJECTDIR)mouseif.o: $(SRCDIR)mouseif.c $(REQUIRED-INCS) $(INCDIR)lispemul.h \
|
||||
$(INCDIR)dbprint.h $(INCDIR)devif.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)mouseif.c -o $(OBJECTDIR)mouseif.o
|
||||
|
||||
$(OBJECTDIR)ether.o: $(SRCDIR)ether.c $(REQUIRED-INCS) \
|
||||
$(OBJECTDIR)ether_common.o: $(SRCDIR)ether_common.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)commondefs.h $(INCDIR)lispemul.h \
|
||||
$(INCDIR)lispmap.h $(INCDIR)emlglob.h $(INCDIR)lsptypes.h $(INCDIR)lspglob.h \
|
||||
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)adr68k.h \
|
||||
$(INCDIR)ether.h $(INCDIR)dbprint.h $(INCDIR)etherdefs.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)ether.c -o $(OBJECTDIR)ether.o
|
||||
$(CC) $(RFLAGS) $(SRCDIR)ether_common.c -o $(OBJECTDIR)ether_common.o
|
||||
|
||||
$(OBJECTDIR)ether_sunos.o: $(SRCDIR)ether_sunos.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)commondefs.h $(INCDIR)lispemul.h \
|
||||
$(INCDIR)lispmap.h $(INCDIR)emlglob.h $(INCDIR)lsptypes.h $(INCDIR)lspglob.h \
|
||||
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)adr68k.h \
|
||||
$(INCDIR)ether.h $(INCDIR)dbprint.h $(INCDIR)etherdefs.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)ether_sunos.c -o $(OBJECTDIR)ether_sunos.o
|
||||
|
||||
$(OBJECTDIR)ether_nethub.o: $(SRCDIR)ether_nethub.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)commondefs.h $(INCDIR)lispemul.h \
|
||||
$(INCDIR)lispmap.h $(INCDIR)emlglob.h $(INCDIR)lsptypes.h $(INCDIR)lspglob.h \
|
||||
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)adr68k.h \
|
||||
$(INCDIR)ether.h $(INCDIR)dbprint.h $(INCDIR)etherdefs.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)ether_nethub.c -o $(OBJECTDIR)ether_nethub.o
|
||||
|
||||
$(OBJECTDIR)findkey.o: $(SRCDIR)findkey.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)lispemul.h $(INCDIR)lispmap.h \
|
||||
@@ -662,7 +663,7 @@ $(OBJECTDIR)initkbd.o: $(SRCDIR)initkbd.c $(REQUIRED-INCS) \
|
||||
$(CC) $(RFLAGS) $(SRCDIR)initkbd.c -o $(OBJECTDIR)initkbd.o
|
||||
|
||||
$(OBJECTDIR)initsout.o: $(SRCDIR)initsout.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)hdw_conf.h $(INCDIR)lispemul.h \
|
||||
$(INCDIR)lispemul.h \
|
||||
$(INCDIR)lspglob.h $(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h \
|
||||
$(INCDIR)lsptypes.h $(INCDIR)lispmap.h $(INCDIR)adr68k.h $(INCDIR)cell.h \
|
||||
$(INCDIR)devconf.h $(INCDIR)dbprint.h $(INCDIR)lldsp.h $(INCDIR)gcdata.h \
|
||||
@@ -788,7 +789,7 @@ $(OBJECTDIR)shift.o: $(SRCDIR)shift.c $(REQUIRED-INCS) \
|
||||
$(CC) $(RFLAGS) $(SRCDIR)shift.c -o $(OBJECTDIR)shift.o
|
||||
|
||||
$(OBJECTDIR)storage.o: $(SRCDIR)storage.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)hdw_conf.h $(INCDIR)lispemul.h \
|
||||
$(INCDIR)lispemul.h \
|
||||
$(INCDIR)address.h $(INCDIR)adr68k.h $(INCDIR)lispmap.h $(INCDIR)stack.h \
|
||||
$(INCDIR)lspglob.h $(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h \
|
||||
$(INCDIR)cell.h $(INCDIR)lsptypes.h $(INCDIR)gcdata.h $(INCDIR)storagedefs.h \
|
||||
@@ -807,7 +808,7 @@ $(OBJECTDIR)subr.o: $(SRCDIR)subr.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)gcrdefs.h $(INCDIR)inetdefs.h $(INCDIR)kbdsubrsdefs.h \
|
||||
$(INCDIR)mkcelldefs.h $(INCDIR)osmsgdefs.h $(INCDIR)rpcdefs.h \
|
||||
$(INCDIR)storagedefs.h $(INCDIR)timerdefs.h $(INCDIR)ufsdefs.h \
|
||||
$(INCDIR)unixcommdefs.h $(INCDIR)uutilsdefs.h $(INCDIR)vmemsavedefs.h
|
||||
$(INCDIR)unixcommdefs.h $(INCDIR)uraidextdefs.h $(INCDIR)uutilsdefs.h $(INCDIR)vmemsavedefs.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)subr.c -o $(OBJECTDIR)subr.o
|
||||
|
||||
$(OBJECTDIR)miscn.o: $(SRCDIR)miscn.c $(REQUIRED-INCS) \
|
||||
@@ -841,8 +842,8 @@ $(OBJECTDIR)timer.o: $(SRCDIR)timer.c $(REQUIRED-INCS) \
|
||||
|
||||
$(OBJECTDIR)tty.o: $(SRCDIR)tty.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)lispemul.h $(INCDIR)lispmap.h \
|
||||
$(INCDIR)adr68k.h $(INCDIR)lsptypes.h $(INCDIR)lspglob.h $(INCDIR)ifpage.h \
|
||||
$(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)commondefs.h $(INCDIR)tty.h
|
||||
$(INCDIR)adr68k.h $(INCDIR)lsptypes.h $(INCDIR)lspglob.h \
|
||||
$(INCDIR)commondefs.h $(INCDIR)tty.h $(INCDIR)ttydefs.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)tty.c -o $(OBJECTDIR)tty.o
|
||||
|
||||
$(OBJECTDIR)typeof.o: $(SRCDIR)typeof.c $(REQUIRED-INCS) \
|
||||
@@ -880,7 +881,7 @@ $(OBJECTDIR)uraid.o: $(SRCDIR)uraid.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)gcarraydefs.h $(INCDIR)initdspdefs.h $(INCDIR)initkbddefs.h \
|
||||
$(INCDIR)kprintdefs.h $(INCDIR)llstkdefs.h $(INCDIR)mkatomdefs.h \
|
||||
$(INCDIR)returndefs.h $(INCDIR)testtooldefs.h $(INCDIR)timerdefs.h \
|
||||
$(INCDIR)vmemsavedefs.h $(INCDIR)devif.h
|
||||
$(INCDIR)uraidextdefs.h $(INCDIR)vmemsavedefs.h $(INCDIR)devif.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)uraid.c -o $(OBJECTDIR)uraid.o
|
||||
|
||||
$(OBJECTDIR)rpc.o: $(SRCDIR)rpc.c $(REQUIRED-INCS) \
|
||||
@@ -905,7 +906,7 @@ $(OBJECTDIR)vars3.o: $(SRCDIR)vars3.c $(REQUIRED-INCS) \
|
||||
$(CC) $(RFLAGS) $(SRCDIR)vars3.c -o $(OBJECTDIR)vars3.o
|
||||
|
||||
$(OBJECTDIR)vmemsave.o: $(SRCDIR)vmemsave.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)hdw_conf.h $(INCDIR)lispemul.h \
|
||||
$(INCDIR)lispemul.h \
|
||||
$(INCDIR)lispmap.h $(INCDIR)lspglob.h $(INCDIR)ifpage.h $(INCDIR)iopage.h \
|
||||
$(INCDIR)miscstat.h $(INCDIR)vmemsave.h $(INCDIR)timeout.h $(INCDIR)adr68k.h \
|
||||
$(INCDIR)lsptypes.h $(INCDIR)locfile.h $(INCDIR)lispver2.h $(INCDIR)dbprint.h \
|
||||
@@ -914,29 +915,6 @@ $(OBJECTDIR)vmemsave.o: $(SRCDIR)vmemsave.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)ufsdefs.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)vmemsave.c -o $(OBJECTDIR)vmemsave.o
|
||||
|
||||
$(OBJECTDIR)array2.o: $(SRCDIR)array2.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)lispemul.h $(INCDIR)lspglob.h \
|
||||
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)adr68k.h \
|
||||
$(INCDIR)lispmap.h $(INCDIR)lsptypes.h $(INCDIR)emlglob.h $(INCDIR)gcdata.h \
|
||||
$(INCDIR)mkcelldefs.h $(INCDIR)arith.h $(INCDIR)my.h $(INCDIR)array2defs.h \
|
||||
$(INCDIR)gchtfinddefs.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)array2.c -o $(OBJECTDIR)array2.o
|
||||
|
||||
$(OBJECTDIR)array4.o: $(SRCDIR)array4.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)lispemul.h $(INCDIR)lspglob.h \
|
||||
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)adr68k.h \
|
||||
$(INCDIR)lispmap.h $(INCDIR)lsptypes.h $(INCDIR)mkcelldefs.h $(INCDIR)arith.h \
|
||||
$(INCDIR)gcdata.h $(INCDIR)my.h $(INCDIR)array4defs.h $(INCDIR)gchtfinddefs.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)array4.c -o $(OBJECTDIR)array4.o
|
||||
|
||||
$(OBJECTDIR)array6.o: $(SRCDIR)array6.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)lispemul.h $(INCDIR)lspglob.h \
|
||||
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)adr68k.h \
|
||||
$(INCDIR)lispmap.h $(INCDIR)lsptypes.h $(INCDIR)emlglob.h $(INCDIR)gcdata.h \
|
||||
$(INCDIR)mkcelldefs.h $(INCDIR)arith.h $(INCDIR)my.h $(INCDIR)array6defs.h \
|
||||
$(INCDIR)gchtfinddefs.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)array6.c -o $(OBJECTDIR)array6.o
|
||||
|
||||
$(OBJECTDIR)sxhash.o: $(SRCDIR)sxhash.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)lispemul.h $(INCDIR)lspglob.h \
|
||||
$(INCDIR)ifpage.h $(INCDIR)iopage.h $(INCDIR)miscstat.h $(INCDIR)lispmap.h \
|
||||
@@ -956,10 +934,8 @@ $(OBJECTDIR)xc.o: $(SRCDIR)xc.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)miscstat.h $(INCDIR)lsptypes.h $(INCDIR)lispmap.h $(INCDIR)cell.h \
|
||||
$(INCDIR)initatms.h $(INCDIR)gcdata.h $(INCDIR)arith.h $(INCDIR)stream.h \
|
||||
$(INCDIR)tos1defs.h $(INCDIR)tosret.h $(INCDIR)tosfns.h $(INCDIR)inlineC.h \
|
||||
$(INCDIR)xcdefs.h $(INCDIR)arith2defs.h $(INCDIR)arith3defs.h \
|
||||
$(INCDIR)arith4defs.h $(INCDIR)arraydefs.h $(INCDIR)array2defs.h \
|
||||
$(INCDIR)array3defs.h $(INCDIR)array4defs.h $(INCDIR)array5defs.h \
|
||||
$(INCDIR)array6defs.h $(INCDIR)bitbltdefs.h $(INCDIR)bltdefs.h \
|
||||
$(INCDIR)xcdefs.h $(INCDIR)arithopsdefs.h $(INCDIR)arrayopsdefs.h \
|
||||
$(INCDIR)bitbltdefs.h $(INCDIR)bltdefs.h \
|
||||
$(INCDIR)byteswapdefs.h $(INCDIR)car-cdrdefs.h $(INCDIR)commondefs.h \
|
||||
$(INCDIR)conspagedefs.h $(INCDIR)drawdefs.h $(INCDIR)eqfdefs.h \
|
||||
$(INCDIR)findkeydefs.h $(INCDIR)fpdefs.h $(INCDIR)fvardefs.h \
|
||||
@@ -1020,6 +996,9 @@ $(OBJECTDIR)xwinman.o: $(SRCDIR)xwinman.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)xlspwindefs.h $(INCDIR)xscrolldefs.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)xwinman.c -o $(OBJECTDIR)xwinman.o
|
||||
|
||||
$(OBJECTDIR)sdl.o: $(SRCDIR)sdl.c $(REQUIRED-INCS)
|
||||
$(CC) $(RFLAGS) $(SRCDIR)sdl.c -o $(OBJECTDIR)sdl.o
|
||||
|
||||
$(OBJECTDIR)foreign.o: $(SRCDIR)foreign.c $(REQUIRED-INCS) \
|
||||
$(INCDIR)/foreigndefs.h
|
||||
$(CC) $(RFLAGS) $(SRCDIR)foreign.c -o $(OBJECTDIR)foreign.o
|
||||
@@ -1079,7 +1058,7 @@ $(OBJECTDIR)lpy.tab.o: $(SRCDIR)lpy.tab.c $(REQUIRED-INCS) $(INCDIR)lpdefs.h $(I
|
||||
# .c.s. should always have -O
|
||||
################################################################################
|
||||
|
||||
cleanup:
|
||||
clean cleanup:
|
||||
$(RM) -r $(OBJECTDIR) $(OSARCHDIR)
|
||||
|
||||
.c.o:
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
# Nov 20 2001 JDS: Convert to use BASH, not CSH, for open-source...
|
||||
#
|
||||
# usage: makeright [display-option] [other-option]
|
||||
#
|
||||
#
|
||||
# example: makeright single ; make lde for mmaped displayFB
|
||||
# makeright multi ; make lde for cg3,cg6
|
||||
# makeright x ; make lde for X-windows
|
||||
@@ -71,6 +71,14 @@ case "$display" in
|
||||
x) releasename=${osversion}.${architecture}-${display}
|
||||
ldename=ldex
|
||||
;;
|
||||
sdl) releasename=${osversion}.${architecture}-${display}
|
||||
ldename=ldesdl
|
||||
;;
|
||||
wasm) osversion=emscripten
|
||||
architecture=wasm
|
||||
releasename=${osversion}.${architecture}-${display}
|
||||
ldename=ldesdl.js
|
||||
;;
|
||||
*) echo "display-option: $display is not supported."
|
||||
exit
|
||||
;;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/bin/sh
|
||||
cat <<EOF
|
||||
#include <time.h>
|
||||
time_t MDate = $(date +%s);
|
||||
extern const time_t MDate;
|
||||
const time_t MDate = $(date +%s);
|
||||
EOF
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#!/bin/sh
|
||||
os=${LDEARCH:-`./config.guess`}
|
||||
SCRIPTPATH="$( cd "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
|
||||
os=${LDEARCH:-`$SCRIPTPATH/config.guess`}
|
||||
case "$os" in
|
||||
m68k-*-amigaos) echo amigaos ;;
|
||||
sparc-sun-sunos*) echo sunos4 ;;
|
||||
|
||||
14
docs/NEWCDRCODING.md
Normal file
14
docs/NEWCDRCODING.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# CDR CODING in cons cells
|
||||
|
||||
The cdr-code is a 4-bit field of a 32-bit cons cell.
|
||||
It is treated as an on-page indicator bit and a 3-bit scaled offset.
|
||||
|
||||
Certain combinations are treated specially.
|
||||
|
||||
|
||||
| on-page | offset | interpretation |
|
||||
|---------|---------|---------------------------------------------------------------------------|
|
||||
| 1 | 0 | CDR is NIL |
|
||||
| 1 | 1 - 7 | CDR is at 2*offset (counted in 32-bit cells) on same page |
|
||||
| 0 | 0 | CDR is indirect, CDR(car) |
|
||||
| 0 | 1 - 7 | CDR is not a cons cell but is in the car of cell at 2*offset on same page |
|
||||
86
docs/Using-Dodo-networking-with-Maiko.md
Normal file
86
docs/Using-Dodo-networking-with-Maiko.md
Normal file
@@ -0,0 +1,86 @@
|
||||
# Using Dodo-networking with Maiko
|
||||
|
||||
The [Dodo XNS services](https://github.com/devhawala/dodo) provide an emulation for a usable
|
||||
subset of the Xerox 8000 Network Services from the 1980-ies. Dodo uses its own virtual
|
||||
network infrastructure - the Dodo *Nethub* - for avoiding the problems involved with
|
||||
implementing the transmission of XNS protocol packets over (real or virtual) network
|
||||
adapters of the diverse contemporary operating systems.
|
||||
|
||||
The Dodo Nethub provides a simple virtual network, a kind of *XNS-over-TCP/IP*,
|
||||
where clients and servers connect with TCP/IP to the central Nethub program, which relays all
|
||||
packets ingoing from one connection to the other connections.
|
||||
|
||||
The following sections describe the support for Dodo-networking added to
|
||||
Maiko. The Dodo Nethub support was implemented and tested with Linux on the x86_64
|
||||
architecture. However as only standard system calls for TCP/IP were used, adapting to other
|
||||
platforms if necessary should be possible.
|
||||
|
||||
This extension allows Medley 3.51 running in a Maiko VM to use the XNS services
|
||||
*Clearinghouse*, *Filing* and *Printing* provided by Dodo (using the *Mail* service may
|
||||
also be possible, but this was not verified so far)
|
||||
|
||||
## Building Maiko with Dodo-networking support
|
||||
|
||||
As long as Dodo-networking support is not merged into the `master`-branch
|
||||
of the primary Maiko repository, this networking option is only available in this
|
||||
clone of the original Maiko repository in the branch `dodo-nethub-support`.
|
||||
(however: this branch should already be checked out if this file is present)
|
||||
|
||||
The Dodo-networking support is enabled by defining `MAIKO_ENABLE_NETHUB`
|
||||
when compiling Maiko. This can be done in the Makefile for the relevant platform
|
||||
(file `bin/makefile-`*platform*) for example in the line where the compiler-command
|
||||
variable is defined.
|
||||
|
||||
This is already done in the Makefile for the *Linux-x86_64-X* platform (file
|
||||
`bin/makefile-linux.x86_64-x`), where the compiler-command defined as follows:
|
||||
|
||||
```
|
||||
CC = clang -m64 $(CLANG_CFLAGS) -DMAIKO_ENABLE_NETHUB
|
||||
```
|
||||
|
||||
After a complete (re-)build, this Maiko VM optionally allows to connect to a Dodo Nethub
|
||||
and through this to use Dodo XNS services.
|
||||
|
||||
|
||||
## Running Maiko with Dodo-networking
|
||||
|
||||
With Dodo-networking support compiled in, Maiko (i.e. the program `ldex`) accepts the
|
||||
following additional commandline options:
|
||||
|
||||
- `-nh-host` *dodo-host*
|
||||
the name or IP-address of the host where the Dodo Nethub program runs; no connection to
|
||||
Dodo services will be opened if this option is not specified
|
||||
Default: (*none*)
|
||||
|
||||
- `-nh-port` *port-number*
|
||||
the port which the Dodo Nethub is listening to at *dodo-host*
|
||||
Default: `3333`
|
||||
|
||||
- `-nh-mac` *machine-id*
|
||||
the machine-id (aka. MAC-address) that this Maiko VM instance will use in the Dodo network;
|
||||
the machine-id must be given as 48 bit hexadecimal value with a dash as byte-separator, i.e.
|
||||
in the format *XX-XX-XX-XX-XX-XX* (with *XX* the hexcode for a single byte)
|
||||
Default: `CA-FF-EE-12-34-56`
|
||||
|
||||
- `-nh-loglevel` *log-level*
|
||||
the detail level of logging to `stdout`, one of:
|
||||
`0`: log only main events (connect, disconnect or the like)
|
||||
`1`: log network events each with a single line
|
||||
`2`: detailled log of network events
|
||||
Default: `0`
|
||||
|
||||
So by default Maiko will not connect to a Dodo nethub and behave like a "standard" version
|
||||
without networking support.
|
||||
To use Dodo XNS services, the option `-nh-host` must be given to specify the location
|
||||
of the Dodo nethub. In the simplest (and probably most usual) case where Dodo is run on the
|
||||
same machine as Maiko/Medley, the value for option `-nh-host` will be *localhost*, so
|
||||
adding the option `-nh-host localhost` when starting the Medley Lisp system will allow
|
||||
to use the XNS services of a Dodo system running locally.
|
||||
|
||||
Specifying the *machine-id* is optional unless more than one Maiko/Medley instances are to use
|
||||
Dodo XNS services concurrently: in this case, each Maiko VM *must* use a *unique* machine-id,
|
||||
so at most one Maiko VM may omit the `-nh-mac` option.
|
||||
However, each machine-id used by the Maiko VMs should have an entry in the `machine.cfg`
|
||||
file of the Dodo installation, cloning or copying the low-level SPP-configuration of the
|
||||
`maiko-Lisp-One` example entry in the `machine.cfg` of the Dodo `dist.zip`
|
||||
distribution.
|
||||
@@ -24,7 +24,6 @@
|
||||
#define VERTICAL 0
|
||||
#define HORIZONTAL 1
|
||||
|
||||
#define PERCENT_OF_SCREEN 95
|
||||
#define SCROLL_PITCH 30
|
||||
|
||||
typedef struct _MyEvent
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
* triples in this array are interpreted in initkbd.c as
|
||||
* reusable, (Lisp keyboard) code, (X keysym) symbol
|
||||
*/
|
||||
int generic_X_keymap[] = {
|
||||
static const int generic_X_keymap[] = {
|
||||
0, 107, 0x1000ff10, /* Un-named KEYSYM used on Sun kbd for F11 */
|
||||
0, 108, 0x1000ff11, /* Un-named KEYSYM used on Sun kbd for F12 */
|
||||
0, 107, XK_F11,
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
#define HILOC(ptr) (LRSH(((unsigned int)(ptr) & SEGMASK),16))
|
||||
#define LOLOC(ptr) ((unsigned int)(ptr) & 0x0ffff)
|
||||
|
||||
#define VAG2(hi,lo) (LLSH((hi),16) | (lo))
|
||||
#define VAG2(hi,lo) (LispPTR)(LLSH((hi),16) | (lo))
|
||||
|
||||
|
||||
/* NOTE: argument off must be WORD offset */
|
||||
|
||||
77
inc/adr68k.h
77
inc/adr68k.h
@@ -9,8 +9,6 @@
|
||||
* Hiroshi Hayata
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
/* */
|
||||
/* Copyright 1989, 1990 Venue, Fuji Xerox Co., Ltd, Xerox Corp. */
|
||||
@@ -20,8 +18,6 @@
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/*
|
||||
Func name : adr68k.h
|
||||
@@ -32,32 +28,65 @@
|
||||
*/
|
||||
/**********************************************************************/
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include "lispemul.h"
|
||||
#include "lspglob.h"
|
||||
|
||||
static inline LispPTR LAddrFromNative(void *NAddr)
|
||||
{
|
||||
if ((uintptr_t)NAddr & 1) {
|
||||
printf("Misaligned pointer in LAddrFromNative %p\n", NAddr);
|
||||
}
|
||||
return (LispPTR)(((DLword *)NAddr) - Lisp_world);
|
||||
}
|
||||
|
||||
/* translate 68k ptr to Lisp DLword address */
|
||||
#define LADDR_from_68k(ptr68k) ((LispPTR)(((UNSIGNED)(ptr68k) - (UNSIGNED)Lisp_world) >>1))
|
||||
static inline DLword *NativeAligned2FromLAddr(LispPTR LAddr)
|
||||
{
|
||||
return (Lisp_world + LAddr);
|
||||
}
|
||||
|
||||
static inline LispPTR *NativeAligned4FromLAddr(LispPTR LAddr)
|
||||
{
|
||||
if (LAddr & 1) {
|
||||
printf("Misaligned pointer in NativeAligned4FromLAddr 0x%x\n", LAddr);
|
||||
}
|
||||
return (void *)(Lisp_world + LAddr);
|
||||
}
|
||||
|
||||
/* translate 68k ptr to Lisp Page number */
|
||||
#define LPAGE_from_68k(ptr68k) (LADDR_from_68k(ptr68k) >> 8)
|
||||
static inline LispPTR *NativeAligned4FromLPage(LispPTR LPage)
|
||||
{
|
||||
return (void *)(Lisp_world + (LPage << 8));
|
||||
}
|
||||
|
||||
static inline DLword StackOffsetFromNative(void *SAddr)
|
||||
{
|
||||
/* Stack offsets are expressed as an offset in DLwords from the stack base */
|
||||
ptrdiff_t hoffset = (DLword *)SAddr - Stackspace;
|
||||
if (hoffset > 0xffff) {
|
||||
printf("Stack offset is too large: 0x%tx\n", hoffset);
|
||||
}
|
||||
return (DLword)hoffset;
|
||||
}
|
||||
|
||||
/* Translate Lisp_address to 68K address */
|
||||
/* Lisp_addr: word offset */
|
||||
#define Addr68k_from_LADDR(Lisp_addr) (Lisp_world + (Lisp_addr))
|
||||
static inline DLword *NativeAligned2FromStackOffset(DLword StackOffset)
|
||||
{
|
||||
return Stackspace + StackOffset;
|
||||
}
|
||||
|
||||
static inline LispPTR *NativeAligned4FromStackOffset(DLword StackOffset)
|
||||
{
|
||||
if (StackOffset & 1) {
|
||||
printf("Misaligned StackOffset in NativeAligned4FromStackOffset 0x%hx\n", StackOffset);
|
||||
}
|
||||
return (void *)(Stackspace + StackOffset);
|
||||
}
|
||||
|
||||
/* translate LispPage to 68k address */
|
||||
#define Addr68k_from_LPAGE(Lisp_page) (Addr68k_from_LADDR(((Lisp_page) << 8) ))
|
||||
|
||||
|
||||
|
||||
|
||||
/* Stack Offset Macros */
|
||||
|
||||
#define StkOffset_from_68K(ptr68k)\
|
||||
((LispPTR)(((UNSIGNED)(ptr68k) - (UNSIGNED)Stackspace) >>1))
|
||||
|
||||
#define Addr68k_from_StkOffset(stkoffset)\
|
||||
(Stackspace + (stkoffset))
|
||||
static inline LispPTR LPageFromNative(void *NAddr)
|
||||
{
|
||||
if ((uintptr_t)NAddr & 1) {
|
||||
printf("Misaligned pointer in LPageFromNative %p\n", NAddr);
|
||||
}
|
||||
return (LispPTR)((((DLword *)NAddr) - Lisp_world) >> 8);
|
||||
}
|
||||
#endif /* ADR68K_H */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#ifndef ALLOCMDSDEFS_H
|
||||
#define ALLOCMDSDEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR, DLword */
|
||||
LispPTR initmdspage(register LispPTR *base, register DLword size, register LispPTR prev);
|
||||
LispPTR *alloc_mdspage(register short int type);
|
||||
LispPTR initmdspage(LispPTR *base, DLword size, LispPTR prev);
|
||||
LispPTR *alloc_mdspage(short int type);
|
||||
#endif
|
||||
|
||||
171
inc/arith.h
171
inc/arith.h
@@ -9,51 +9,81 @@
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#include "adr68k.h" // for NativeAligned4FromLAddr, LAddrFromNative
|
||||
#include "commondefs.h" // for error
|
||||
#include "lispemul.h" // for SEGMASK, ERROR_EXIT
|
||||
#include "lispmap.h" // for S_NEGATIVE, S_POSITIVE
|
||||
#include "lsptypes.h" // for TYPE_FIXP, GetTypeNumber, TYPE_FLOATP
|
||||
#include "mkcelldefs.h" // for createcell68k
|
||||
|
||||
#define MAX_SMALL 65535 /* == 0x0000FFFF */
|
||||
#define MIN_SMALL (-65536) /* == 0xFFFF0000 */
|
||||
|
||||
#define MAX_FIXP 2147483647 /* == 0x7FFFFFFF */
|
||||
#define MIN_FIXP (-2147483648) /* == 0x80000000 */
|
||||
|
||||
#define GetSmalldata(x) \
|
||||
(((SEGMASK & (x)) == S_POSITIVE) \
|
||||
? (0xFFFF & (x)) \
|
||||
: (((SEGMASK & (x)) == S_NEGATIVE) ? (0xFFFF0000 | (x)) : error("Not smallp address")))
|
||||
#define SMALLP_ZERO ((LispPTR)S_POSITIVE)
|
||||
#define SMALLP_MINUSONE ((LispPTR)(S_NEGATIVE | 0xFFFF))
|
||||
/**
|
||||
* extract an integer value from a smallp
|
||||
*/
|
||||
static inline int GetSmalldata(LispPTR x) {
|
||||
if ((SEGMASK & (int)x) == S_POSITIVE) return (int)(x & 0xFFFF);
|
||||
if ((SEGMASK & (int)x) == S_NEGATIVE) return (int)(x | 0xFFFF0000);
|
||||
error("Not smallp address");
|
||||
return (0);
|
||||
}
|
||||
|
||||
#define GetSmallp(x) \
|
||||
((0xFFFF0000 & (x)) ? (((0xFFFF0000 & (x)) == 0xFFFF0000) ? (S_NEGATIVE | (0xFFFF & (x))) \
|
||||
: error("Not Smallp data")) \
|
||||
: (S_POSITIVE | (0xFFFF & (x))))
|
||||
/**
|
||||
* construct a smallp from an integer value
|
||||
*/
|
||||
|
||||
#define FIXP_VALUE(dest) *((int *)Addr68k_from_LADDR(dest))
|
||||
static inline LispPTR GetSmallp(long x) {
|
||||
if (x >= 0) {
|
||||
if (x <= MAX_SMALL) return (LispPTR)(S_POSITIVE | x);
|
||||
} else {
|
||||
if (x >= MIN_SMALL) return (LispPTR)(S_NEGATIVE | (x & 0xFFFF));
|
||||
}
|
||||
error("Not Smallp data");
|
||||
return (S_POSITIVE | 0);
|
||||
}
|
||||
|
||||
#define FLOATP_VALUE(dest) *((float *)Addr68k_from_LADDR(dest))
|
||||
/**
|
||||
* construct a smallp from an unsigned value
|
||||
*/
|
||||
static inline LispPTR GetPosSmallp(unsigned long x) {
|
||||
if (x <= MAX_SMALL) return (LispPTR)(S_POSITIVE | x);
|
||||
error("Not Smallp data");
|
||||
return (S_POSITIVE | 0);
|
||||
}
|
||||
|
||||
#define FIXP_VALUE(dest) *((int *)NativeAligned4FromLAddr(dest))
|
||||
|
||||
#define FLOATP_VALUE(dest) *((float *)NativeAligned4FromLAddr(dest))
|
||||
|
||||
#define N_GETNUMBER(sour, dest, label) \
|
||||
do { \
|
||||
(dest) = (sour); /* access memory once */ \
|
||||
switch (SEGMASK & (dest)) { \
|
||||
case S_POSITIVE: (dest) = 0xFFFF & (dest); break; \
|
||||
case S_NEGATIVE: (dest) = 0xFFFF0000 | (dest); break; \
|
||||
switch (SEGMASK & (sour)) { \
|
||||
case S_POSITIVE: (dest) = (int)((sour) & 0xFFFF); break; \
|
||||
case S_NEGATIVE: (dest) = (int)((sour) | 0xFFFF0000); break; \
|
||||
default: \
|
||||
/* NOLINTNEXTLINE(bugprone-macro-parentheses) */ \
|
||||
if (GetTypeNumber(dest) != TYPE_FIXP) goto label; \
|
||||
(dest) = FIXP_VALUE(dest); \
|
||||
if (GetTypeNumber(sour) != TYPE_FIXP) goto label; \
|
||||
(dest) = FIXP_VALUE(sour); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define N_IGETNUMBER(sour, dest, label) \
|
||||
do { \
|
||||
(dest) = (sour); /* access memory once */ \
|
||||
switch (SEGMASK & (dest)) { \
|
||||
case S_POSITIVE: (dest) = 0xFFFF & (dest); break; \
|
||||
case S_NEGATIVE: (dest) = 0xFFFF0000 | (dest); break; \
|
||||
switch (SEGMASK & (sour)) { \
|
||||
case S_POSITIVE: (dest) = (int)((sour) & 0xFFFF); break; \
|
||||
case S_NEGATIVE: (dest) = (int)((sour) | 0xFFFF0000); break; \
|
||||
default: \
|
||||
switch (GetTypeNumber(dest)) { \
|
||||
case TYPE_FIXP: (dest) = FIXP_VALUE(dest); break; \
|
||||
switch (GetTypeNumber(sour)) { \
|
||||
case TYPE_FIXP: (dest) = FIXP_VALUE(sour); break; \
|
||||
case TYPE_FLOATP: { \
|
||||
register float temp; \
|
||||
temp = FLOATP_VALUE(dest); \
|
||||
float temp; \
|
||||
temp = FLOATP_VALUE(sour); \
|
||||
/* NOLINTNEXTLINE(bugprone-macro-parentheses) */ \
|
||||
if ((temp > ((float)0x7fffffff)) || (temp < ((float)0x80000000))) goto label; \
|
||||
(dest) = (int)temp; \
|
||||
@@ -66,100 +96,33 @@
|
||||
|
||||
#define ARITH_SWITCH(arg, result) \
|
||||
do { \
|
||||
switch ((int)(arg) & 0xFFFF0000) { \
|
||||
switch ((arg) & (int)0xFFFF0000) { \
|
||||
case 0: (result) = (S_POSITIVE | (int)(arg)); break; \
|
||||
case 0xFFFF0000: (result) = (S_NEGATIVE | (0xFFFF & (int)(arg))); break; \
|
||||
case (int)0xFFFF0000: (result) = (S_NEGATIVE | (0xFFFF & (arg))); break; \
|
||||
default: { \
|
||||
register LispPTR *wordp; \
|
||||
int *fixpp; \
|
||||
/* arg is FIXP, call createcell */ \
|
||||
wordp = (LispPTR *)createcell68k(TYPE_FIXP); \
|
||||
*((int *)wordp) = (int)(arg); \
|
||||
(result) = (LADDR_from_68k(wordp)); \
|
||||
fixpp = (int *)createcell68k(TYPE_FIXP); \
|
||||
*fixpp = (int)(arg); \
|
||||
(result) = LAddrFromNative(fixpp); \
|
||||
break; \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/* *******
|
||||
NEED to See if this is faster than the N_ARITH_SWITCH macro
|
||||
|
||||
if( (MIN_FIXP <= result) && (result <= MAX_FIXP) ){
|
||||
if(0 <= result){
|
||||
if(result <= MAX_SMALL)
|
||||
return(S_POSITIVE | result);
|
||||
else{
|
||||
wordp = createcell68k(TYPE_FIXP);
|
||||
*((unsigned int *)wordp) = result;
|
||||
return(LADDR_from_68k(wordp));
|
||||
}
|
||||
}else{
|
||||
if(MIN_SMALL <= result)
|
||||
return(S_NEGATIVE | (0xFFFF & result));
|
||||
else{
|
||||
wordp = createcell68k(TYPE_FIXP);
|
||||
*((unsigned int *)wordp) = result;
|
||||
return(LADDR_from_68k(wordp));
|
||||
}
|
||||
}/
|
||||
}
|
||||
****** */
|
||||
|
||||
#define N_ARITH_SWITCH(arg) \
|
||||
do { \
|
||||
switch ((arg) & 0xFFFF0000) { \
|
||||
case 0: return (S_POSITIVE | (arg)); \
|
||||
case 0xFFFF0000: return (S_NEGATIVE | (0xFFFF & (arg))); \
|
||||
switch ((arg) & (int)0xFFFF0000) { \
|
||||
case 0: return (LispPTR) (S_POSITIVE | (arg)); \
|
||||
case (int)0xFFFF0000: return (LispPTR)(S_NEGATIVE | (0xFFFF & (arg))); \
|
||||
default: { \
|
||||
register LispPTR *fixpp; \
|
||||
int *fixpp; \
|
||||
/* arg is FIXP, call createcell */ \
|
||||
fixpp = (LispPTR *)createcell68k(TYPE_FIXP); \
|
||||
*((int *)fixpp) = arg; \
|
||||
return (LADDR_from_68k(fixpp)); \
|
||||
fixpp = (int *)createcell68k(TYPE_FIXP); \
|
||||
*fixpp = (int)(arg); \
|
||||
return (LAddrFromNative(fixpp)); \
|
||||
} \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define N_IARITH_BODY_2(a, tos, op) \
|
||||
do { \
|
||||
register int arg1, arg2; \
|
||||
\
|
||||
N_IGETNUMBER(a, arg1, do_ufn); \
|
||||
N_IGETNUMBER(tos, arg2, do_ufn); \
|
||||
\
|
||||
arg1 = arg1 op arg2; \
|
||||
\
|
||||
N_ARITH_SWITCH(arg1); \
|
||||
\
|
||||
do_ufn: \
|
||||
ERROR_EXIT(tos); \
|
||||
} while (0)
|
||||
|
||||
#define N_ARITH_BODY_1(a, n, op) \
|
||||
do { \
|
||||
register int arg1; \
|
||||
\
|
||||
N_GETNUMBER(a, arg1, do_ufn); \
|
||||
\
|
||||
arg1 = arg1 op n; \
|
||||
\
|
||||
N_ARITH_SWITCH(arg1); \
|
||||
\
|
||||
do_ufn: \
|
||||
ERROR_EXIT(a); \
|
||||
} while (0)
|
||||
|
||||
#define N_ARITH_BODY_1_UNSIGNED(a, n, op) \
|
||||
do { \
|
||||
register unsigned int arg1; \
|
||||
\
|
||||
N_GETNUMBER(a, arg1, do_ufn); \
|
||||
\
|
||||
arg1 = arg1 op n; \
|
||||
\
|
||||
N_ARITH_SWITCH(arg1); \
|
||||
\
|
||||
do_ufn: \
|
||||
ERROR_EXIT(a); \
|
||||
} while (0)
|
||||
|
||||
#endif /* ARITH_H */
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
#ifndef ARITH2DEFS_H
|
||||
#define ARITH2DEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
LispPTR N_OP_plus2(int tosm1, int tos);
|
||||
LispPTR N_OP_iplus2(int tosm1, int tos);
|
||||
LispPTR N_OP_difference(int tosm1, int tos);
|
||||
LispPTR N_OP_idifference(int tosm1, int tos);
|
||||
LispPTR N_OP_logxor(int tosm1, int tos);
|
||||
LispPTR N_OP_logand(int tosm1, int tos);
|
||||
LispPTR N_OP_logor(int tosm1, int tos);
|
||||
LispPTR N_OP_greaterp(int tosm1, int tos);
|
||||
LispPTR N_OP_igreaterp(int tosm1, int tos);
|
||||
LispPTR N_OP_iplusn(int tos, int n);
|
||||
LispPTR N_OP_idifferencen(int tos, int n);
|
||||
#endif
|
||||
@@ -1,7 +0,0 @@
|
||||
#ifndef ARITH3DEFS_H
|
||||
#define ARITH3DEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
LispPTR N_OP_makenumber(int tosm1, int tos);
|
||||
LispPTR N_OP_boxiplus(register int a, int tos);
|
||||
LispPTR N_OP_boxidiff(register int a, int tos);
|
||||
#endif
|
||||
@@ -1,8 +0,0 @@
|
||||
#ifndef ARITH4DEFS_H
|
||||
#define ARITH4DEFS_H 1
|
||||
int N_OP_times2(int tosm1, int tos);
|
||||
int N_OP_itimes2(int tosm1, int tos);
|
||||
int N_OP_quot(int tosm1, int tos);
|
||||
int N_OP_iquot(int tosm1, int tos);
|
||||
int N_OP_iremainder(int tosm1, int tos);
|
||||
#endif
|
||||
23
inc/arithopsdefs.h
Normal file
23
inc/arithopsdefs.h
Normal file
@@ -0,0 +1,23 @@
|
||||
#ifndef ARITHOPSDEFS_H
|
||||
#define ARITHOPSDEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
LispPTR N_OP_plus2(LispPTR tosm1, LispPTR tos);
|
||||
LispPTR N_OP_iplus2(LispPTR tosm1, LispPTR tos);
|
||||
LispPTR N_OP_difference(LispPTR tosm1, LispPTR tos);
|
||||
LispPTR N_OP_idifference(LispPTR tosm1, LispPTR tos);
|
||||
LispPTR N_OP_logxor(LispPTR tosm1, LispPTR tos);
|
||||
LispPTR N_OP_logand(LispPTR tosm1, LispPTR tos);
|
||||
LispPTR N_OP_logor(LispPTR tosm1, LispPTR tos);
|
||||
LispPTR N_OP_greaterp(LispPTR tosm1, LispPTR tos);
|
||||
LispPTR N_OP_igreaterp(LispPTR tosm1, LispPTR tos);
|
||||
LispPTR N_OP_iplusn(LispPTR tos, int n);
|
||||
LispPTR N_OP_idifferencen(LispPTR tos, int n);
|
||||
LispPTR N_OP_makenumber(LispPTR tosm1, LispPTR tos);
|
||||
LispPTR N_OP_boxiplus(LispPTR a, LispPTR tos);
|
||||
LispPTR N_OP_boxidiff(LispPTR a, LispPTR tos);
|
||||
LispPTR N_OP_times2(LispPTR tosm1, LispPTR tos);
|
||||
LispPTR N_OP_itimes2(LispPTR tosm1, LispPTR tos);
|
||||
LispPTR N_OP_quot(LispPTR tosm1, LispPTR tos);
|
||||
LispPTR N_OP_iquot(LispPTR tosm1, LispPTR tos);
|
||||
LispPTR N_OP_iremainder(LispPTR tosm1, LispPTR tos);
|
||||
#endif
|
||||
24
inc/array.h
24
inc/array.h
@@ -24,8 +24,8 @@ typedef struct sequencedescriptor {
|
||||
unsigned nil2 :1;
|
||||
unsigned base :28;
|
||||
unsigned typ :4;
|
||||
unsigned length: 28;
|
||||
LispPTR offst;
|
||||
unsigned length :28;
|
||||
int32_t offst;
|
||||
} Arrayp;
|
||||
|
||||
struct arrayheader {
|
||||
@@ -41,8 +41,8 @@ struct arrayheader {
|
||||
unsigned extendablep :1;
|
||||
unsigned typenumber :8;
|
||||
DLword offset;
|
||||
LispPTR fillpointer;
|
||||
LispPTR totalsize;
|
||||
int32_t fillpointer;
|
||||
int32_t totalsize;
|
||||
};
|
||||
#else
|
||||
typedef struct sequencedescriptor {
|
||||
@@ -100,9 +100,9 @@ typedef struct sequencedescriptor {
|
||||
unsigned readonly :1;
|
||||
unsigned nil :1;
|
||||
unsigned orig :1;
|
||||
unsigned length: 28;
|
||||
unsigned length :28;
|
||||
unsigned typ :4;
|
||||
LispPTR offst;
|
||||
int32_t offst;
|
||||
} Arrayp;
|
||||
|
||||
struct arrayheader {
|
||||
@@ -118,8 +118,8 @@ struct arrayheader {
|
||||
unsigned bitp :1;
|
||||
unsigned indirectp :1;
|
||||
unsigned readonlyp :1;
|
||||
LispPTR totalsize;
|
||||
LispPTR fillpointer;
|
||||
int32_t totalsize;
|
||||
int32_t fillpointer;
|
||||
};
|
||||
#else
|
||||
typedef struct sequencedescriptor {
|
||||
@@ -216,14 +216,6 @@ struct abdum
|
||||
#define FIRSTARRAYSEGMENT 19
|
||||
#define MAXCELLSPERHUNK 64
|
||||
|
||||
/****************** The following are for codereclaimer *********************/
|
||||
|
||||
#define BITSPERBITE 8
|
||||
|
||||
/********************* End of codereclaimer *********************************/
|
||||
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* */
|
||||
/* End of Definitions */
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
#ifndef ARRAY2DEFS_H
|
||||
#define ARRAY2DEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
LispPTR N_OP_misc4(register LispPTR data, register LispPTR base, register LispPTR typenumber,
|
||||
register LispPTR inx, int alpha);
|
||||
#endif
|
||||
@@ -1,5 +0,0 @@
|
||||
#ifndef ARRAY3DEFS_H
|
||||
#define ARRAY3DEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
LispPTR N_OP_aref1(register LispPTR arrayarg, register LispPTR inx);
|
||||
#endif
|
||||
@@ -1,5 +0,0 @@
|
||||
#ifndef ARRAY4DEFS_H
|
||||
#define ARRAY4DEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
LispPTR N_OP_aset1(register LispPTR data, LispPTR arrayarg, register int inx);
|
||||
#endif
|
||||
@@ -1,5 +0,0 @@
|
||||
#ifndef ARRAY5DEFS_H
|
||||
#define ARRAY5DEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
LispPTR N_OP_aref2(LispPTR arrayarg, LispPTR inx0, LispPTR inx1);
|
||||
#endif
|
||||
@@ -1,5 +0,0 @@
|
||||
#ifndef ARRAY6DEFS_H
|
||||
#define ARRAY6DEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
LispPTR N_OP_aset2(register LispPTR data, LispPTR arrayarg, LispPTR inx0, LispPTR inx1);
|
||||
#endif
|
||||
@@ -1,5 +0,0 @@
|
||||
#ifndef ARRAYDEFS_H
|
||||
#define ARRAYDEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
LispPTR N_OP_misc3(LispPTR baseL, LispPTR typenumber, LispPTR inx, int alpha);
|
||||
#endif
|
||||
10
inc/arrayopsdefs.h
Normal file
10
inc/arrayopsdefs.h
Normal file
@@ -0,0 +1,10 @@
|
||||
#ifndef ARRAYOPSDEFS_H
|
||||
#define ARRAYOPSDEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
LispPTR N_OP_misc3(LispPTR baseL, LispPTR typenumber, LispPTR inx, int alpha);
|
||||
LispPTR N_OP_misc4(LispPTR data, LispPTR base, LispPTR typenumber, LispPTR inx, int alpha);
|
||||
LispPTR N_OP_aref1(LispPTR arrayarg, LispPTR inx);
|
||||
LispPTR N_OP_aset1(LispPTR data, LispPTR arrayarg, LispPTR inx);
|
||||
LispPTR N_OP_aref2(LispPTR arrayarg, LispPTR inx0, LispPTR inx1);
|
||||
LispPTR N_OP_aset2(LispPTR data, LispPTR arrayarg, LispPTR inx0, LispPTR inx1);
|
||||
#endif
|
||||
50
inc/bb.h
50
inc/bb.h
@@ -389,7 +389,7 @@
|
||||
do_partial_transfer \
|
||||
dst32addr++; \
|
||||
switch (op) \
|
||||
{ register int cnt; \
|
||||
{ int cnt; \
|
||||
case op_repl_src: ForInner { DestGetsF(=) } break; \
|
||||
case op_fn_and: ForInner { DestGetsF(&=) } break; \
|
||||
case op_fn_or: ForInner { DestGetsF(|=) } break; \
|
||||
@@ -416,14 +416,14 @@
|
||||
if (aligned_loop) \
|
||||
{ \
|
||||
if (src_comp) switch (op) \
|
||||
{ register int cnt; \
|
||||
{ int cnt; \
|
||||
case op_repl_src: ForInner {*dst32addr++ = ~*src32addr++;} break; \
|
||||
case op_fn_and: ForInner {*dst32addr++ &= ~*src32addr++;} break; \
|
||||
case op_fn_or: ForInner {*dst32addr++ |= ~*src32addr++;} break; \
|
||||
case op_fn_xor: ForInner {*dst32addr++ ^= ~*src32addr++;} break; \
|
||||
} \
|
||||
else switch (op) \
|
||||
{ register int cnt; \
|
||||
{ int cnt; \
|
||||
case op_repl_src: ForInner {*dst32addr++ = *src32addr++;} break; \
|
||||
case op_fn_and: ForInner {*dst32addr++ &= *src32addr++;} break; \
|
||||
case op_fn_or: ForInner {*dst32addr++ |= *src32addr++;} break; \
|
||||
@@ -433,14 +433,14 @@
|
||||
else \
|
||||
{ \
|
||||
if (src_comp) switch (op) \
|
||||
{ register int cnt; \
|
||||
{ int cnt; \
|
||||
case op_repl_src: ForInner {GetSrcCF DestGetsF(=) } break; \
|
||||
case op_fn_and: ForInner {GetSrcCF DestGetsF(&=) } break; \
|
||||
case op_fn_or: ForInner {GetSrcCF DestGetsF(|=) } break; \
|
||||
case op_fn_xor: ForInner {GetSrcCF DestGetsF(^=) } break; \
|
||||
} \
|
||||
else switch (op) \
|
||||
{ register int cnt; \
|
||||
{ int cnt; \
|
||||
case op_repl_src: ForInner {GetSrcF DestGetsF(=) } break; \
|
||||
case op_fn_and: ForInner {GetSrcF DestGetsF(&=) } break; \
|
||||
case op_fn_or: ForInner {GetSrcF DestGetsF(|=) } break; \
|
||||
@@ -470,14 +470,14 @@
|
||||
if (aligned_loop) \
|
||||
{ \
|
||||
if (src_comp) switch (op) \
|
||||
{ register int cnt; \
|
||||
{ int cnt; \
|
||||
case op_repl_src: ForInner {*dst32addr-- = ~*src32addr--;} break; \
|
||||
case op_fn_and: ForInner {*dst32addr-- &= ~*src32addr--;} break; \
|
||||
case op_fn_or: ForInner {*dst32addr-- |= ~*src32addr--;} break; \
|
||||
case op_fn_xor: ForInner {*dst32addr-- ^= ~*src32addr--;} break; \
|
||||
} \
|
||||
else switch (op) \
|
||||
{ register int cnt; \
|
||||
{ int cnt; \
|
||||
case op_repl_src: ForInner {*dst32addr-- = *src32addr--;} break; \
|
||||
case op_fn_and: ForInner {*dst32addr-- &= *src32addr--;} break; \
|
||||
case op_fn_or: ForInner {*dst32addr-- |= *src32addr--;} break; \
|
||||
@@ -487,14 +487,14 @@
|
||||
else \
|
||||
{ \
|
||||
if (src_comp) switch (op) \
|
||||
{ register int cnt; \
|
||||
{ int cnt; \
|
||||
case op_repl_src: ForInner {GetSrcCB DestGetsB(=) } break; \
|
||||
case op_fn_and: ForInner {GetSrcCB DestGetsB(&=) } break; \
|
||||
case op_fn_or: ForInner {GetSrcCB DestGetsB(|=) } break; \
|
||||
case op_fn_xor: ForInner {GetSrcCB DestGetsB(^=) } break; \
|
||||
} \
|
||||
else switch (op) \
|
||||
{ register int cnt; \
|
||||
{ int cnt; \
|
||||
case op_repl_src: ForInner {GetSrcB DestGetsB(=) } break; \
|
||||
case op_fn_and: ForInner {GetSrcB DestGetsB(&=) } break; \
|
||||
case op_fn_or: ForInner {GetSrcB DestGetsB(|=) } break; \
|
||||
@@ -698,24 +698,24 @@
|
||||
/* However, YOU must set up the control variables that are used */
|
||||
/* as "arguments" to the bitblt code: */
|
||||
/* */
|
||||
/* register DLword *srcbase, *dstbase; */
|
||||
/* DLword *srcbase, *dstbase; */
|
||||
/* int sx, dx, w, h, srcbpl, dstbpl, backwardflg; */
|
||||
/* int src_comp, op, gray, num_gray, curr_gray_line; */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#define variables \
|
||||
int num_lines_remaining; \
|
||||
int dstnumL, src32lbit, srcLshift, dst32lbit; \
|
||||
unsigned int srcRmask, dstold, dstdata, mask; \
|
||||
UNSIGNED x32byta, x32nbyt, x32ia; \
|
||||
int abc, dst32rbit, src32rbit, fwd; \
|
||||
unsigned int *OrigSrcAddr, *OrigDstAddr; \
|
||||
int num_lines_remaining = 0; \
|
||||
int dstnumL = 0, src32lbit = 0, srcLshift = 0, dst32lbit = 0; \
|
||||
unsigned int srcRmask = 0, dstold = 0, dstdata = 0, mask = 0; \
|
||||
UNSIGNED x32byta = 0, x32nbyt = 0, x32ia = 0; \
|
||||
int abc, dst32rbit = 0, src32rbit = 0, fwd; \
|
||||
unsigned int *OrigSrcAddr = 0, *OrigDstAddr = 0; \
|
||||
int bb_fast; \
|
||||
unsigned int preloop_mask, postloop_mask, sdw_mask; \
|
||||
register unsigned int *dst32addr, *src32addr; \
|
||||
register unsigned int shS, savedS, newS; \
|
||||
register int srcRshift;
|
||||
unsigned int *dst32addr = 0, *src32addr = 0; \
|
||||
unsigned int shS = 0, savedS = 0, newS = 0; \
|
||||
int srcRshift = 0;
|
||||
|
||||
|
||||
|
||||
@@ -738,7 +738,7 @@ register int srcRshift;
|
||||
/************************************************************************/
|
||||
|
||||
#define new_bitblt_code \
|
||||
{ \
|
||||
do { \
|
||||
variables \
|
||||
some_init \
|
||||
while (num_lines_remaining-- > 0) \
|
||||
@@ -778,7 +778,7 @@ next_line: \
|
||||
continue; \
|
||||
} \
|
||||
} /* end line loop */ \
|
||||
}
|
||||
} while (0)
|
||||
|
||||
|
||||
|
||||
@@ -791,7 +791,7 @@ next_line: \
|
||||
/************************************************************************/
|
||||
|
||||
#define new_gray_bitblt_code \
|
||||
{ \
|
||||
do { \
|
||||
variables \
|
||||
some_init \
|
||||
while (num_lines_remaining-- > 0) \
|
||||
@@ -803,7 +803,7 @@ do_fpt: \
|
||||
next_line: \
|
||||
do_gray_advance \
|
||||
} /* end line loop */ \
|
||||
}
|
||||
} while (0)
|
||||
|
||||
|
||||
|
||||
@@ -816,7 +816,7 @@ next_line: \
|
||||
/************************************************************************/
|
||||
|
||||
#define new_char_bitblt_code \
|
||||
{ \
|
||||
do { \
|
||||
variables \
|
||||
some_init \
|
||||
while (num_lines_remaining-- > 0) \
|
||||
@@ -828,7 +828,7 @@ do_fpt: \
|
||||
next_line: \
|
||||
F_do_advance \
|
||||
} /* end line loop */ \
|
||||
}
|
||||
} while (0)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#ifndef BINDEFS_H
|
||||
#define BINDEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
LispPTR N_OP_bin(register int tos);
|
||||
LispPTR N_OP_bin(LispPTR tos);
|
||||
#endif
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef BINDSDEFS_H
|
||||
#define BINDSDEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
LispPTR *N_OP_bind(register LispPTR *stack_pointer, register LispPTR tos, int byte1, int byte2);
|
||||
LispPTR *N_OP_unbind(register LispPTR *stack_pointer);
|
||||
LispPTR *N_OP_dunbind(register LispPTR *stack_pointer, register LispPTR tos);
|
||||
LispPTR *N_OP_bind(LispPTR *stack_pointer, LispPTR tos, unsigned byte1, unsigned byte2);
|
||||
LispPTR *N_OP_unbind(LispPTR *stack_pointer);
|
||||
LispPTR *N_OP_dunbind(LispPTR *stack_pointer, LispPTR tos);
|
||||
#endif
|
||||
|
||||
14
inc/bitblt.h
14
inc/bitblt.h
@@ -50,9 +50,9 @@ extern int DisplayRasterWidth;
|
||||
|
||||
|
||||
#ifdef DOS
|
||||
#define HideCursor { (currentdsp->mouse_invisible)(currentdsp, IOPage68K); }
|
||||
#define ShowCursor { (currentdsp->mouse_visible)(IOPage68K->dlmousex, \
|
||||
IOPage68K->dlmousey); }
|
||||
#define HideCursor { (currentdsp->mouse_invisible)(currentdsp, IOPage); }
|
||||
#define ShowCursor { (currentdsp->mouse_visible)(IOPage->dlmousex, \
|
||||
IOPage->dlmousey); }
|
||||
|
||||
#else
|
||||
extern DLword *EmCursorX68K,*EmCursorY68K;
|
||||
@@ -76,13 +76,13 @@ extern DLword *EmCursorX68K,*EmCursorY68K;
|
||||
/* Macro for locking and unlocking screen to prevent multiple updates */
|
||||
|
||||
#ifdef DOS
|
||||
#define LOCKSCREEN currentdsp->device.locked++;
|
||||
#define UNLOCKSCREEN currentdsp->device.locked--;
|
||||
#define LOCKSCREEN currentdsp->device.locked++
|
||||
#define UNLOCKSCREEN currentdsp->device.locked--
|
||||
|
||||
#else
|
||||
|
||||
#define LOCKSCREEN ScreenLocked = T;
|
||||
#define UNLOCKSCREEN ScreenLocked = NIL;
|
||||
#define LOCKSCREEN ScreenLocked = T
|
||||
#define UNLOCKSCREEN ScreenLocked = NIL
|
||||
|
||||
#endif /* DOS */
|
||||
#endif /* BITBLT_H */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef BITBLTDEFS_H
|
||||
#define BITBLTDEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR, DLword */
|
||||
LispPTR N_OP_pilotbitblt(LispPTR pilot_bt_tbl,int tos);
|
||||
LispPTR N_OP_pilotbitblt(LispPTR pilot_bt_tbl, LispPTR tos);
|
||||
int cursorin(DLword addrhi, DLword addrlo, int w, int h, int backward);
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#ifndef BLTDEFS_H
|
||||
#define BLTDEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
LispPTR N_OP_blt(LispPTR destptr, LispPTR sourceptr, register LispPTR wordcount);
|
||||
LispPTR N_OP_blt(LispPTR destptr, LispPTR sourceptr, LispPTR wordcount);
|
||||
#endif
|
||||
|
||||
|
||||
@@ -10,17 +10,7 @@ static inline unsigned int swapx(unsigned int word) {
|
||||
return (((word >> 16) & 0xffff) | ((word & 0xffff) << 16));
|
||||
}
|
||||
|
||||
/****************************************************************/
|
||||
/* */
|
||||
/* Byte-swap a single 2-byte word */
|
||||
/* */
|
||||
/****************************************************************/
|
||||
static inline unsigned short byte_swap_word(unsigned short word) {
|
||||
return (((word >> 8) & 0xff) | ((word & 0xff) << 8));
|
||||
}
|
||||
|
||||
void byte_swap_page(unsigned short *page, int wordcount);
|
||||
void word_swap_page(unsigned short *page, int longwordcount);
|
||||
void word_swap_page(void *page, unsigned longwordcount);
|
||||
void bit_reverse_region(unsigned short *top, int width, int height, int rasterwidth);
|
||||
#ifdef RESWAPPEDCODESTREAM
|
||||
unsigned int byte_swap_code_block(unsigned int *base);
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
#define CAR_CDRDEFS_H 1
|
||||
#include "cell.h" /* for ConsCell */
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
LispPTR car(register LispPTR datum);
|
||||
LispPTR cdr(register LispPTR datum);
|
||||
LispPTR rplaca(register LispPTR x, register LispPTR y);
|
||||
LispPTR rplacd(LispPTR x, register LispPTR y);
|
||||
LispPTR N_OP_car(register LispPTR tos);
|
||||
LispPTR N_OP_cdr(register LispPTR tos);
|
||||
LispPTR N_OP_rplaca(register LispPTR tosm1, register LispPTR tos);
|
||||
LispPTR N_OP_rplacd(register LispPTR tosm1, register LispPTR tos);
|
||||
LispPTR car(LispPTR datum);
|
||||
LispPTR cdr(LispPTR datum);
|
||||
LispPTR rplaca(LispPTR x, LispPTR y);
|
||||
LispPTR rplacd(LispPTR x, LispPTR y);
|
||||
LispPTR N_OP_car(LispPTR tos);
|
||||
LispPTR N_OP_cdr(LispPTR tos);
|
||||
LispPTR N_OP_rplaca(LispPTR tosm1, LispPTR tos);
|
||||
LispPTR N_OP_rplacd(LispPTR tosm1, LispPTR tos);
|
||||
ConsCell *find_close_prior_cell(struct conspage *page, LispPTR oldcell);
|
||||
#endif
|
||||
|
||||
37
inc/cell.h
Executable file → Normal file
37
inc/cell.h
Executable file → Normal file
@@ -9,6 +9,8 @@
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#include "version.h"
|
||||
|
||||
/**********************************************************************/
|
||||
/*
|
||||
File Name : cell.h
|
||||
@@ -20,8 +22,8 @@
|
||||
|
||||
*/
|
||||
/**********************************************************************/
|
||||
#include "adr68k.h" /* for NativeAligned4FromLPage, NativeAligned4FromLAddr */
|
||||
#include "lispemul.h" /* for LispPTR, DLword */
|
||||
#include "version.h" /* for BIGVM, NEWCDRCODING, BIGATOMS */
|
||||
|
||||
/* CONS CELL (LISTP) definitions moved to lispemulater.h */
|
||||
|
||||
@@ -100,13 +102,13 @@ struct conspage {
|
||||
/* Following MACROs for Conspage */
|
||||
|
||||
/* lisp_ptr is LISP pointer, returns 68k ptr points struct conspage obj */
|
||||
#define Get_ConsPageBase(lisp_ptr) (struct conspage *)Addr68k_from_LPAGE(POINTER_PAGEBASE(lisp_ptr))
|
||||
#define Get_ConsPageBase(lisp_ptr) (struct conspage *)NativeAligned4FromLPage(POINTER_PAGEBASE(lisp_ptr))
|
||||
|
||||
#define GetNewCell_68k(conspage68k) \
|
||||
(ConsCell *)(((DLword *)(conspage68k)) + (unsigned)((conspage68k)->next_cell))
|
||||
|
||||
/* page : LISP page */
|
||||
#define GetCONSCount(page) (((struct conspage *)Addr68k_from_LPAGE(page))->count)
|
||||
#define GetCONSCount(page) (((struct conspage *)NativeAligned4FromLPage(page))->count)
|
||||
|
||||
#ifndef BYTESWAP
|
||||
/* For chaining together free cons cells on a page */
|
||||
@@ -376,20 +378,16 @@ struct cadr_cell {
|
||||
#else
|
||||
/* Good for old LITATOMS and new NEW-ATOMs */
|
||||
#define GetDEFCELL68k(index) \
|
||||
((((index) & SEGMASK) != 0) ? (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_DEFN_OFFSET) \
|
||||
: GetDEFCELLlitatom(index))
|
||||
((((index) & SEGMASK) != 0) ? GetDEFCELLnew(index) : GetDEFCELLlitatom(index))
|
||||
|
||||
#define GetVALCELL68k(index) \
|
||||
((((index) & SEGMASK) != 0) ? (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_VALUE_OFFSET) \
|
||||
: GetVALCELLlitatom(index))
|
||||
((((index) & SEGMASK) != 0) ? GetVALCELLnew(index) : GetVALCELLlitatom(index))
|
||||
|
||||
#define GetPnameCell(index) \
|
||||
((((index) & SEGMASK) != 0) ? (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_PNAME_OFFSET) \
|
||||
: GetPnameCelllitatom(index))
|
||||
((((index) & SEGMASK) != 0) ? GetPnameCellnew(index) : GetPnameCelllitatom(index))
|
||||
|
||||
#define GetPropCell(index) \
|
||||
((((index) & SEGMASK) != 0) ? (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_PLIST_OFFSET) \
|
||||
: GetPropCelllitatom(index))
|
||||
((((index) & SEGMASK) != 0) ? GetPropCellnew(index) : GetPropCelllitatom(index))
|
||||
|
||||
/* Good only for old-style LITATOMS */
|
||||
#ifdef BIGVM
|
||||
@@ -405,21 +403,24 @@ struct cadr_cell {
|
||||
#endif
|
||||
|
||||
/* Good only for new-style NEW-ATOMs */
|
||||
#define GetDEFCELLnew(index) (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_DEFN_OFFSET)
|
||||
#define GetVALCELLnew(index) (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_VALUE_OFFSET)
|
||||
#define GetPnameCellnew(index) (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_PNAME_OFFSET)
|
||||
#define GetPropCellnew(index) (LispPTR *)(Addr68k_from_LADDR(index) + NEWATOM_PLIST_OFFSET)
|
||||
/* Note: the _OFFSET values are in units of DLword so need to be adjusted before doing pointer
|
||||
* arithmetic since we now have native pointers to cells not DLwords
|
||||
*/
|
||||
#define GetDEFCELLnew(index) (NativeAligned4FromLAddr(index) + (NEWATOM_DEFN_OFFSET / DLWORDSPER_CELL))
|
||||
#define GetVALCELLnew(index) (NativeAligned4FromLAddr(index) + (NEWATOM_VALUE_OFFSET / DLWORDSPER_CELL))
|
||||
#define GetPnameCellnew(index) (NativeAligned4FromLAddr(index) + (NEWATOM_PNAME_OFFSET / DLWORDSPER_CELL))
|
||||
#define GetPropCellnew(index) (NativeAligned4FromLAddr(index) + (NEWATOM_PLIST_OFFSET / DLWORDSPER_CELL))
|
||||
|
||||
#endif /* BIGATOMS */
|
||||
|
||||
/* When cadr() function is called, type check should be done. */
|
||||
|
||||
#define S_N_CHECKANDCADR(sour, dest, tos) \
|
||||
{ \
|
||||
register LispPTR parm = sour; \
|
||||
do { \
|
||||
LispPTR parm = sour; \
|
||||
if (GetTypeNumber(parm) != TYPE_LISTP) { \
|
||||
ERROR_EXIT(tos); \
|
||||
} else \
|
||||
(dest) = cadr(parm); \
|
||||
}
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
#define CONSPAGEDEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
struct conspage *next_conspage(void);
|
||||
LispPTR N_OP_cons(register int cons_car, register int cons_cdr);
|
||||
LispPTR N_OP_cons(LispPTR cons_car, LispPTR cons_cdr);
|
||||
LispPTR cons(LispPTR cons_car, LispPTR cons_cdr);
|
||||
#endif
|
||||
|
||||
@@ -40,10 +40,10 @@ extern int flushing;
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG
|
||||
#define DBPRINT(X) do {printf X ; if (flushing) fflush(stdout); } while(0)
|
||||
#define DBPRINT(X) do { printf("%s:%d ", __FILE__, __LINE__); printf X ; if (flushing) fflush(stdout); } while(0)
|
||||
#define DEBUGGER(X) X
|
||||
#else
|
||||
#define DBPRINT(X) do {} while(0)
|
||||
#define DBPRINT(X) if (0) do {printf X ; } while(0)
|
||||
#define DEBUGGER(X)
|
||||
#endif
|
||||
|
||||
@@ -51,11 +51,11 @@ extern int flushing;
|
||||
/* For trace print statements */
|
||||
|
||||
#ifdef TRACE
|
||||
#define TPRINT(X) do { printf X; if (flushing) fflush(stdout); } while (0)
|
||||
#define TPRINT(X) do { printf("%s:%d ", __FILE__, __LINE__); printf X; if (flushing) fflush(stdout); } while (0)
|
||||
#define TRACER(X) X
|
||||
#else /* TRACE */
|
||||
|
||||
#define TPRINT(X) do { } while (0)
|
||||
#define TPRINT(X) if (0) do { printf X; } while (0)
|
||||
#define TRACER(X)
|
||||
#endif /* TRACE */
|
||||
|
||||
@@ -64,10 +64,10 @@ extern int flushing;
|
||||
/* For tracing individual opcode executions */
|
||||
|
||||
#ifdef OPTRACE
|
||||
#define OPTPRINT(X) do { printf X; if (flushing) fflush(stdout); } while (0)
|
||||
#define OPTPRINT(X) do { printf("%s:%d ", __FILE__, __LINE__); printf X; if (flushing) fflush(stdout); } while (0)
|
||||
#define OPTRACER(X) X
|
||||
#else
|
||||
#define OPTPRINT(X) do { } while (0)
|
||||
#define OPTPRINT(X) if (0) do { printf X; } while (0)
|
||||
#define OPTRACER(X)
|
||||
#endif
|
||||
|
||||
@@ -75,10 +75,10 @@ extern int flushing;
|
||||
/* For tracing function calls */
|
||||
|
||||
#ifdef FNTRACE
|
||||
#define FNTPRINT(X) do { printf X; if (flushing) fflush(stdout); } while (0)
|
||||
#define FNTPRINT(X) do { printf("%s:%d ", __FILE__, __LINE__); printf X; if (flushing) fflush(stdout); } while (0)
|
||||
#define FNTRACER(X) X
|
||||
#else
|
||||
#define FNTPRINT(X) do { } while (0)
|
||||
#define FNTPRINT(X) if (0) do { printf X; } while (0)
|
||||
#define FNTRACER(X)
|
||||
#endif
|
||||
|
||||
@@ -86,10 +86,10 @@ extern int flushing;
|
||||
/* For function-call & return stack checking */
|
||||
|
||||
#ifdef FNSTKCHECK
|
||||
#define FNCHKPRINT(X) do { printf X ; if (flushing) fflush(stdout); } while (0)
|
||||
#define FNCHKPRINT(X) do { printf("%s:%d ", __FILE__, __LINE__); printf X ; if (flushing) fflush(stdout); } while (0)
|
||||
#define FNCHECKER(X) X
|
||||
#else
|
||||
#define FNCHKPRINT(X) do { } while (0)
|
||||
#define FNCHKPRINT(X) if (0) do { printf X; } while (0)
|
||||
#define FNCHECKER(X)
|
||||
#endif
|
||||
|
||||
|
||||
113
inc/devif.h
113
inc/devif.h
@@ -11,13 +11,6 @@
|
||||
/************************************************************************/
|
||||
#include "lispemul.h" /* for LispPTR, DLword */
|
||||
|
||||
typedef void (*PFV)(); /* Pointer to Function returning Void */
|
||||
typedef int (*PFI)(); /* Pointer to Function returning Int */
|
||||
typedef char (*PFC)(); /* Pointer to Function returning Char */
|
||||
typedef float (*PFF)(); /* Pointer to Function returning Float */
|
||||
typedef int (*PFP)(); /* Pointer to Function returning a Pointer */
|
||||
typedef unsigned long (*PFUL)(); /* Pointer to Function returning an unsigned long */
|
||||
|
||||
#ifdef XWINDOW
|
||||
#include <X11/Xlib.h>
|
||||
#endif /* XWINDOW */
|
||||
@@ -52,17 +45,16 @@ typedef struct
|
||||
{
|
||||
int x;
|
||||
int y;
|
||||
int width;
|
||||
int height;
|
||||
unsigned width;
|
||||
unsigned height;
|
||||
} MRegion;
|
||||
|
||||
|
||||
|
||||
/**************************************************************/
|
||||
/* D e v R e c */
|
||||
/* */
|
||||
/* Definition common to all devices. Used for mouse, kbd and */
|
||||
/* display. */
|
||||
/* display. The xxxInterfaceRec containing this device is */
|
||||
/* passed as the only argument to the device methods */
|
||||
/**************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
@@ -71,22 +63,22 @@ typedef struct
|
||||
to prevent multiple consecutive initializations. */
|
||||
int locked; /* LOCK, a semaphore: 0 if dev is free.
|
||||
Test and increment to use this device. */
|
||||
void (* enter)(); /* ENTER, a function
|
||||
args: self
|
||||
void (* enter)(void *); /* ENTER, a function
|
||||
args: interface rec (Kbd, Dsp, Mouse)
|
||||
Called to set up the device. Has to be called before
|
||||
anything else is done to the device. */
|
||||
void (* exit)(); /* EXIT, a function
|
||||
args: self
|
||||
void (* exit)(void *); /* EXIT, a function
|
||||
args: interface rec (Kbd, Dsp, Mouse)
|
||||
Called to deactivate the device and restore the
|
||||
device to its previous state */
|
||||
void (* before_raid)(); /* BEFORE_RAID, a function.
|
||||
args: self
|
||||
void (* before_raid)(void *); /* BEFORE_RAID, a function.
|
||||
args: interface rec (Kbd, Dsp, Mouse)
|
||||
Prepare this device for uraid. */
|
||||
void (* after_raid)(); /* BEFORE_RAID, a function.
|
||||
args: self
|
||||
void (* after_raid)(void *); /* BEFORE_RAID, a function.
|
||||
args: interface rec (Kbd, Dsp, Mouse)
|
||||
Cleanup and restart device after uraid. */
|
||||
void (* sync_device)(); /* SYNC_DEVICE, a function.
|
||||
args: self
|
||||
void (* sync_device)(void *); /* SYNC_DEVICE, a function.
|
||||
args: interface rec (Kbd, Dsp, Mouse)
|
||||
Make reality and emulator coincide with each other */
|
||||
} DevRec;
|
||||
|
||||
@@ -96,7 +88,7 @@ typedef struct
|
||||
/* M o u s e I n t e r f a c e */
|
||||
/* */
|
||||
/* Definition of the mouse. Note that the mouse is also */
|
||||
/* dependent on the IOPage68K */
|
||||
/* dependent on the IOPage */
|
||||
/**************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
@@ -114,7 +106,7 @@ typedef struct
|
||||
short tick; /* Clock for timeout. */
|
||||
long StartTime; /* The maximum timeout */
|
||||
long RunTimer; /* Chording timer activate flag. */
|
||||
PFV NextHandler; /* Pointer to the next timer (used with 2button) */
|
||||
void (* NextHandler)(void); /* Pointer to the next timer (used with 2button) */
|
||||
} Button;
|
||||
|
||||
|
||||
@@ -133,14 +125,15 @@ typedef struct {
|
||||
typedef struct
|
||||
{
|
||||
DevRec device;
|
||||
void (* Handler)(); /* Event handler for the mouse. */
|
||||
void (* Handler)(void); /* Event handler for the mouse. */
|
||||
MCursor Cursor;
|
||||
Button Button;
|
||||
LispPTR *timestamp;
|
||||
unsigned int keyeventsize; /* The sizeof() one kbd event */
|
||||
unsigned int maxkeyevent; /* Offset to the end of the ringbuffer. */
|
||||
int eurokbd; /* Keep tabs of the euro-ness of the kbd */
|
||||
} MouseInterfaceRec, *MouseInterface;
|
||||
} MouseInterfaceRec;
|
||||
typedef MouseInterfaceRec *MouseInterface;
|
||||
|
||||
|
||||
|
||||
@@ -148,12 +141,12 @@ typedef struct
|
||||
/* K b d I n t e r f a c e */
|
||||
/* */
|
||||
/* Definition of the keyboard. Note that the keyboard is also */
|
||||
/* dependent on the IOPage68K */
|
||||
/* dependent on the IOPage */
|
||||
/**************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
DevRec device;
|
||||
PFV device_event; /* Event handler for the keyboard. */
|
||||
void (*device_event)(void); /* Event handler for the keyboard. */
|
||||
#ifdef DOS
|
||||
u_char KeyMap[0x80]; /* The key translation table. Use the keycode you
|
||||
get from the keyboard as an index. The value
|
||||
@@ -162,14 +155,13 @@ typedef struct
|
||||
unsigned int keyeventsize; /* The sizeof() one kbd event */
|
||||
unsigned int maxkeyevent; /* Offset to the end of the ringbuffer. */
|
||||
int eurokbd; /* Keep tabs of the euro-ness of the kbd */
|
||||
PFV prev_handler; /* The previous keyboard handler.
|
||||
void (* prev_handler)(void);/* The previous keyboard handler.
|
||||
Keep this around
|
||||
to restore when we exit Medley */
|
||||
int URaid; /* Put this in a better place later.. /jarl */
|
||||
#endif /* DOS */
|
||||
} KbdInterfaceRec, *KbdInterface;
|
||||
|
||||
|
||||
} KbdInterfaceRec;
|
||||
typedef KbdInterfaceRec *KbdInterface;
|
||||
|
||||
/**************************************************************/
|
||||
/* D s p I n t e r f a c e */
|
||||
@@ -177,47 +169,53 @@ typedef struct
|
||||
/* Definition of the display. This structure collects all the */
|
||||
/* special knowledge needed to manipulate the screen. */
|
||||
/**************************************************************/
|
||||
typedef struct
|
||||
/*
|
||||
* NOTE: At this time only the DspInterface methods
|
||||
* bitblt_to_screen(), clearscreen(), mouse_visible(), and mouse_invisible()
|
||||
* are called, and the mouse_* are only used for DOS.
|
||||
* All the other methods are not implemented and not called.
|
||||
*/
|
||||
typedef struct DspInterfaceRec
|
||||
{
|
||||
DevRec device;
|
||||
|
||||
void (* drawline)(); /* DRAWLINE
|
||||
unsigned long (* drawline)(void); /* DRAWLINE
|
||||
args: dont know yet. Not yet implemented.*/
|
||||
void (* cleardisplay)(); /* CLEARDISPLAY, a function
|
||||
unsigned long (* cleardisplay)(struct DspInterfaceRec *); /* CLEARDISPLAY, a function
|
||||
args: self
|
||||
clears the screen.*/
|
||||
|
||||
unsigned long (* get_color_map_entry)();
|
||||
unsigned long (* set_color_map_entry)();
|
||||
unsigned long (* available_colors)(); /* How many colors do I have on my palette */
|
||||
unsigned long (* possible_colors)(); /* How many colors is it possible to select from */
|
||||
unsigned long (* get_color_map_entry)(void);
|
||||
unsigned long (* set_color_map_entry)(void *);
|
||||
unsigned long (* available_colors)(void); /* How many colors do I have on my palette */
|
||||
unsigned long (* possible_colors)(void); /* How many colors is it possible to select from */
|
||||
|
||||
#ifdef NOTYET
|
||||
unsigned long (* get_color_map)(); /* get a pointer to a colormap */
|
||||
unsigned long (* set_color_map)(); /* set the current colormap */
|
||||
unsigned long (* make_color_map)(); /* return a brand new colormap */
|
||||
unsigned long (* get_color_map)(void); /* get a pointer to a colormap */
|
||||
unsigned long (* set_color_map)(void); /* set the current colormap */
|
||||
unsigned long (* make_color_map)(void); /* return a brand new colormap */
|
||||
#endif /* NOTYET */
|
||||
|
||||
unsigned long (* medley_to_native_bm)(); /* 1 bit/pix to native bit/pix */
|
||||
unsigned long (* native_to_medley_bm)(); /* native bit/pix to 1 bit/pix */
|
||||
unsigned long (* medley_to_native_bm)(void); /* 1 bit/pix to native bit/pix */
|
||||
unsigned long (* native_to_medley_bm)(void); /* native bit/pix to 1 bit/pix */
|
||||
|
||||
unsigned long (* bitblt_to_screen)(); /* BITBLT_TO_SCREEN, a function
|
||||
unsigned long (* bitblt_to_screen)(struct DspInterfaceRec *, DLword *, int, int, int, int); /* BITBLT_TO_SCREEN, a function
|
||||
args: self, buffer left top width height.
|
||||
biblt's buffer to the screen. */
|
||||
unsigned long (* bitblt_from_screen)();
|
||||
unsigned long (* scroll_region)(); /* ie. bbt from screen to screen */
|
||||
|
||||
void (* mouse_invisible)(); /* MOUSE_INVISIBLE
|
||||
unsigned long (* bitblt_from_screen)(void);
|
||||
unsigned long (* scroll_region)(void); /* ie. bbt from screen to screen */
|
||||
unsigned long (* mouse_invisible)(struct DspInterfaceRec *, void *); /* MOUSE_INVISIBLE
|
||||
args: self (a dsp), iop (an IOPAGE preferably the one and only)
|
||||
This method makes the mouse invisible on the screen. Note that
|
||||
the dsp supplies the method and the iop supplies the data. */
|
||||
void (* mouse_visible)(); /* MOUSE_VISIBLE
|
||||
args: self (a dsp), iop (an IOPAGE preferably the one and only)
|
||||
This method makes the mouse visible on the screen. Note that
|
||||
the dsp supplies the method and the iop supplies the data. */
|
||||
unsigned long (* mouse_visible)(int x, int y); /* MOUSE_VISIBLE
|
||||
args: x, y position where the mouse/cursor should be displayed.
|
||||
NOTE: this should probably include the DspInterface as the first arg?
|
||||
*/
|
||||
MRegion Display; /* Dimensions of the physical display. */
|
||||
unsigned short unused0; /* alignment padding for next field */
|
||||
unsigned short bitsperpixel;
|
||||
unsigned long colors; /* cash for the available_colors */
|
||||
unsigned long colors; /* cache for the available_colors */
|
||||
unsigned long oldstate; /* Keep the old state around */
|
||||
unsigned long graphicsmode; /* Magic cookie used to set the state. */
|
||||
unsigned long numberofbanks;
|
||||
@@ -256,10 +254,11 @@ typedef struct
|
||||
Pixmap GravityOnPixmap;
|
||||
Pixmap GravityOffPixmap;
|
||||
XImage ScreenBitmap;
|
||||
Mask DisableEventMask;
|
||||
Mask EnableEventMask;
|
||||
long DisableEventMask;
|
||||
long EnableEventMask;
|
||||
#endif /* XWINDOW */
|
||||
} DspInterfaceRec, *DspInterface;
|
||||
} DspInterfaceRec;
|
||||
typedef DspInterfaceRec *DspInterface;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,6 +1,62 @@
|
||||
#ifndef DIRDEFS_H
|
||||
#define DIRDEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
|
||||
#include <sys/types.h> // for u_short, ino_t
|
||||
#include "lispemul.h" // for LispPTR
|
||||
#include "locfile.h" // for MAXNAMLEN
|
||||
/*
|
||||
* FINFO and FPROP are used to store the information of the enumerated files
|
||||
* and directories. They are arranged in a form of linked list. Each list is
|
||||
* corresponding to the each directory enumeration. All of the informations
|
||||
* Lisp needs are stored in the list. This list is in the emulator's address space
|
||||
* and can be specified by "ID" which is the interface between the emulator and Lisp
|
||||
* code. In this implementation, ID is represented as an integer and is actually
|
||||
* an index of the array of the lists.
|
||||
*
|
||||
* To avoid the overhead of the FINFO and FPROP structure dynamic allocation and
|
||||
* deallocation, some number of their instances are pre-allocated when the emulator
|
||||
* starts and managed in a free list. If all of the pre-allocated instances are in
|
||||
* use, new instances are allocated. The new instances are linked to the free list
|
||||
* when it is freed.
|
||||
*
|
||||
* As described above, the linked list result of the enumeration is stored in a
|
||||
* array for the subsequent request from Lisp. Lisp code requests the emulator to
|
||||
* release the list when it enumerated all of the entries in the list or the
|
||||
* enumerating operation is aborted.
|
||||
*/
|
||||
|
||||
typedef struct fprop {
|
||||
unsigned length; /* Byte length of this file. */
|
||||
unsigned wdate; /* Written (Creation) date in Lisp sense. */
|
||||
unsigned rdate; /* Read date in Lisp sense. */
|
||||
unsigned protect; /* Protect mode of this file. */
|
||||
size_t au_len; /* Byte length of author. */
|
||||
char author[256]; /* Author in Lisp sense. */
|
||||
} FPROP;
|
||||
|
||||
/* This structure has a pointer at each end to force alignment to
|
||||
be correct when a pointer is 8 bytes long. */
|
||||
typedef struct finfo {
|
||||
FPROP *prop; /* File properties Lisp needs. */
|
||||
char lname[MAXNAMLEN + 1]; /* Name in Lisp Format. */
|
||||
char no_ver_name[MAXNAMLEN + 1];
|
||||
/*
|
||||
* Name in UNIX Format. Does not
|
||||
* include Version field.
|
||||
* All lower case.
|
||||
*/
|
||||
size_t lname_len; /* Byte length of lname. */
|
||||
unsigned dirp; /* If 1, this file is a directory. */
|
||||
unsigned version; /* Version in Lisp sense. */
|
||||
ino_t ino; /* I-node number of this file. */
|
||||
struct finfo *next; /* Last entry is indicated by NULL pointer. */
|
||||
} FINFO;
|
||||
|
||||
typedef struct dfinfo {
|
||||
FINFO *head; /* Head of the linked FINFO structures. */
|
||||
FINFO *next; /* FINFO structure generated next time. */
|
||||
} DFINFO;
|
||||
|
||||
#ifdef DOS
|
||||
int make_old_version(char *old, char *file);
|
||||
#endif
|
||||
@@ -8,7 +64,7 @@ int make_old_version(char *old, char *file);
|
||||
void print_finfo(FINFO *fp);
|
||||
#endif
|
||||
int init_finfo(void);
|
||||
LispPTR COM_gen_files(register LispPTR *args);
|
||||
LispPTR COM_next_file(register LispPTR *args);
|
||||
LispPTR COM_finish_finfo(register LispPTR *args);
|
||||
LispPTR COM_gen_files(LispPTR *args);
|
||||
LispPTR COM_next_file(LispPTR *args);
|
||||
LispPTR COM_finish_finfo(LispPTR *args);
|
||||
#endif
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
/* */
|
||||
/************************************************************************/
|
||||
#include "lispemul.h" /* for DLword */
|
||||
#include "version.h" /* for UNSIGNED */
|
||||
|
||||
#define BCPLDISPLAY stdout
|
||||
|
||||
@@ -44,6 +43,10 @@ extern DLword *DISP_MAX_Address;
|
||||
#define DISPLAYBUFFER
|
||||
#endif /* XWINDOW */
|
||||
|
||||
#ifdef SDL
|
||||
#define DISPLAYBUFFER
|
||||
#endif /* SDL */
|
||||
|
||||
#ifdef DOS
|
||||
#define DISPLAYBUFFER
|
||||
#endif /* DOS */
|
||||
@@ -74,13 +77,4 @@ extern DLword *DisplayRegion68k;
|
||||
#undef DISPLAYBUFFER
|
||||
#endif /* XWINDOW */
|
||||
|
||||
void flush_display_buffer();
|
||||
void flush_display_lineregion(UNSIGNED x, DLword *ybase, UNSIGNED w, UNSIGNED h);
|
||||
void flush_display_region(int x, int y, int w, int h);
|
||||
void flush_display_ptrregion(DLword *ybase, UNSIGNED bitoffset, UNSIGNED w, UNSIGNED h);
|
||||
|
||||
#ifdef BYTESWAP
|
||||
void byte_swapped_displayregion(int x, int y, int w, int h);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -4,6 +4,5 @@
|
||||
int setup_dlpi_dev(char *device);
|
||||
void flush_dlpi(int fd);
|
||||
int dlpi_devtype(int fd);
|
||||
char *savestr(char *s);
|
||||
int dlunitdatareq(int fd, u_char *addrp, int addrlen, u_long minpri, u_long maxpri, u_char *datap, int datalen);
|
||||
#endif
|
||||
|
||||
@@ -6,20 +6,20 @@ void separate_host(char *lfname, char *host, char *drive);
|
||||
#else
|
||||
void separate_host(char *lfname, char *host);
|
||||
#endif
|
||||
LispPTR COM_openfile(register LispPTR *args);
|
||||
LispPTR COM_closefile(register LispPTR *args);
|
||||
LispPTR DSK_getfilename(register LispPTR *args);
|
||||
LispPTR DSK_deletefile(register LispPTR *args);
|
||||
LispPTR DSK_renamefile(register LispPTR *args);
|
||||
LispPTR DSK_directorynamep(register LispPTR *args);
|
||||
LispPTR COM_getfileinfo(register LispPTR *args);
|
||||
LispPTR COM_setfileinfo(register LispPTR *args);
|
||||
LispPTR COM_readpage(register LispPTR *args);
|
||||
LispPTR COM_writepage(register LispPTR *args);
|
||||
LispPTR COM_truncatefile(register LispPTR *args);
|
||||
LispPTR COM_changedir(register LispPTR *args);
|
||||
LispPTR COM_getfreeblock(register LispPTR *args);
|
||||
LispPTR COM_openfile(LispPTR *args);
|
||||
LispPTR COM_closefile(LispPTR *args);
|
||||
LispPTR DSK_getfilename(LispPTR *args);
|
||||
LispPTR DSK_deletefile(LispPTR *args);
|
||||
LispPTR DSK_renamefile(LispPTR *args);
|
||||
LispPTR DSK_directorynamep(LispPTR *args);
|
||||
LispPTR COM_getfileinfo(LispPTR *args);
|
||||
LispPTR COM_setfileinfo(LispPTR *args);
|
||||
LispPTR COM_readpage(LispPTR *args);
|
||||
LispPTR COM_writepage(LispPTR *args);
|
||||
LispPTR COM_truncatefile(LispPTR *args);
|
||||
LispPTR COM_changedir(LispPTR *args);
|
||||
LispPTR COM_getfreeblock(LispPTR *args);
|
||||
void separate_version(char *name, char *ver, int checkp);
|
||||
int unpack_filename(char *file, char *dir, char *name, char *ver, int checkp);
|
||||
int true_name(register char *path);
|
||||
int true_name(char *path);
|
||||
#endif
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
#define DSPIFDEFS_H 1
|
||||
#include "devif.h"
|
||||
void make_dsp_instance(DspInterface dsp, char *lispbitmap, int width_hint, int height_hint, int depth_hint);
|
||||
unsigned long GenericReturnT(void);
|
||||
void GenericPanic(DspInterface dsp);
|
||||
unsigned long GenericReturnT(void *d);
|
||||
void GenericReturnVoid(void *d);
|
||||
void GenericPanic(void *d);
|
||||
void describedsp(DspInterface dsp);
|
||||
#endif
|
||||
|
||||
@@ -5,7 +5,7 @@ void DSP_dspbout(LispPTR *args);
|
||||
void DSP_showdisplay(LispPTR *args);
|
||||
LispPTR DSP_VideoColor(LispPTR *args);
|
||||
void DSP_Cursor(LispPTR *args, int argnum);
|
||||
void DSP_SetMousePos(register LispPTR *args);
|
||||
void DSP_SetMousePos(LispPTR *args);
|
||||
LispPTR DSP_ScreenWidth(LispPTR *args);
|
||||
LispPTR DSP_ScreenHight(LispPTR *args);
|
||||
void flip_cursor(void);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
#ifndef EQFDEFS_H
|
||||
#define EQFDEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
LispPTR N_OP_clequal(register int arg1, register int arg2);
|
||||
LispPTR N_OP_eqlop(register int arg1, register int arg2);
|
||||
LispPTR N_OP_equal(register int arg1, register int arg2);
|
||||
LispPTR N_OP_eqq(register int arg1, register int arg2);
|
||||
LispPTR N_OP_clequal(LispPTR arg1, LispPTR arg2);
|
||||
LispPTR N_OP_eqlop(LispPTR arg1, LispPTR arg2);
|
||||
LispPTR N_OP_equal(LispPTR arg1, LispPTR arg2);
|
||||
LispPTR N_OP_eqq(LispPTR arg1, LispPTR arg2);
|
||||
#endif
|
||||
|
||||
@@ -13,5 +13,11 @@ int *ether_debug(void);
|
||||
LispPTR check_ether(void);
|
||||
void init_ifpage_ether(void);
|
||||
void init_ether(void);
|
||||
LispPTR check_sum(register LispPTR *args);
|
||||
LispPTR check_sum(LispPTR *args);
|
||||
|
||||
void setNethubHost(char* host);
|
||||
void setNethubPort(int port);
|
||||
void setNethubMac(int m0, int m1, int m2, int m3, int m4, int m5);
|
||||
void setNethubLogLevel(int ll);
|
||||
void connectToHub(void);
|
||||
#endif
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#ifndef FINDKEYDEFS_H
|
||||
#define FINDKEYDEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
LispPTR N_OP_findkey(register LispPTR tos, register int byte);
|
||||
LispPTR N_OP_findkey(LispPTR tos, int byte);
|
||||
#endif
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
#define FVARDEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR, DLword */
|
||||
#include "stack.h" /* for fnhead, frameex1 */
|
||||
LispPTR N_OP_fvarn(register int n);
|
||||
LispPTR N_OP_fvarn(int n);
|
||||
LispPTR N_OP_stkscan(LispPTR tos);
|
||||
LispPTR N_OP_fvar_(register LispPTR tos, register int n);
|
||||
void nnewframe(register struct frameex1 *newpfra2, register DLword *achain, register int name);
|
||||
void nfvlookup(struct frameex1 *apframe1, register DLword *achain, register struct fnhead *apfnhead1);
|
||||
LispPTR N_OP_fvar_(LispPTR tos, int n);
|
||||
void nnewframe(struct frameex1 *newpfra2, DLword *achain, int name);
|
||||
void nfvlookup(struct frameex1 *apframe1, DLword *achain, struct fnhead *apfnhead1);
|
||||
LispPTR native_newframe(int slot);
|
||||
#endif
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
#ifndef GCCODEDEFS_H
|
||||
#define GCCODEDEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
LispPTR map_code_pointers(LispPTR codeblock, short int casep);
|
||||
LispPTR remimplicitkeyhash(LispPTR item, LispPTR ik_hash_table);
|
||||
LispPTR reclaimcodeblock(LispPTR codebase);
|
||||
int code_block_size(long unsigned int codeblock68k);
|
||||
#endif
|
||||
|
||||
41
inc/gcdata.h
41
inc/gcdata.h
@@ -19,6 +19,7 @@
|
||||
/**********************************************************************/
|
||||
#include "lispemul.h" /* for LispPTR, DLword */
|
||||
#include "version.h" /* for USHORT */
|
||||
#include "gchtfinddefs.h"
|
||||
|
||||
#define ADDREF 0 /* for gclookup routine. */
|
||||
#define DELREF 1 /* for gclookup routine. */
|
||||
@@ -47,23 +48,23 @@
|
||||
|
||||
/* IncAllocCnt is called only when *Reclaim_cnt_word != NIL */
|
||||
|
||||
#define IncAllocCnt(n) {\
|
||||
#define IncAllocCnt(n) do { \
|
||||
if ((*Reclaim_cnt_word -= (n)) <= S_POSITIVE) { \
|
||||
/* time for GC */\
|
||||
Irq_Stk_Check = Irq_Stk_End = 0;\
|
||||
*Reclaim_cnt_word = S_POSITIVE;\
|
||||
};\
|
||||
}
|
||||
/* time for GC */ \
|
||||
Irq_Stk_Check = Irq_Stk_End = 0; \
|
||||
*Reclaim_cnt_word = S_POSITIVE; \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/* DecAllocCnt only called when *Reclaim_cnt_word != NIL */
|
||||
|
||||
#define DecAllocCnt(n) { *Reclaim_cnt_word += (n); }
|
||||
#define DecAllocCnt(n) do { *Reclaim_cnt_word += (n); } while (0)
|
||||
|
||||
#define FreeLink(link) { \
|
||||
#define FreeLink(link) do { \
|
||||
GETGC(link) = 0; \
|
||||
GETGC((link)+1) = GETGC(HTcoll); \
|
||||
GETGC(HTcoll) = ((link) - HTcoll); \
|
||||
}
|
||||
} while (0)
|
||||
|
||||
|
||||
/* Given the contents of an HTMAIN or HTCOLL entry,
|
||||
@@ -71,7 +72,7 @@
|
||||
#define GetLinkptr(entry) ((entry) & 0x0fffffffe)
|
||||
|
||||
|
||||
#define DelLink(link, prev, entry) { \
|
||||
#define DelLink(link, prev, entry) do { \
|
||||
if ((prev) != (GCENTRY *)0) \
|
||||
{ \
|
||||
GETGC((GCENTRY *)(prev) + 1) = GETGC((GCENTRY *)(link) + 1); \
|
||||
@@ -87,41 +88,41 @@
|
||||
GETGC((GCENTRY *)(entry)) = GETGC((GCENTRY *)(link)); \
|
||||
FreeLink((GCENTRY *)(link)); \
|
||||
} \
|
||||
}
|
||||
} while (0)
|
||||
|
||||
#define RefCntP(ptr) (!(GetTypeEntry((ptr)) & TT_NOREF) && \
|
||||
(*GcDisabled_word != ATOM_T))
|
||||
|
||||
#define GCLOOKUP(ptr, case) { \
|
||||
#define GCLOOKUP(ptr, case) do { \
|
||||
if (RefCntP(ptr)) { \
|
||||
if (*Reclaim_cnt_word != NIL) \
|
||||
htfind(ptr, case); \
|
||||
else \
|
||||
rec_htfind(ptr, case); \
|
||||
} \
|
||||
}
|
||||
} while (0)
|
||||
|
||||
#define GCLOOKUPV(ptr, case, val) { \
|
||||
#define GCLOOKUPV(ptr, case, val) do { \
|
||||
if (RefCntP(ptr)) { \
|
||||
if (*Reclaim_cnt_word != NIL) \
|
||||
(val) = htfind((ptr), (case)); \
|
||||
else \
|
||||
(val) = rec_htfind((ptr), (case)); \
|
||||
} else (val) = NIL; \
|
||||
}
|
||||
} while (0)
|
||||
|
||||
#define REC_GCLOOKUP(ptr, case) { if (RefCntP(ptr)) rec_htfind(ptr, case); }
|
||||
#define REC_GCLOOKUPV(ptr, case, val) { \
|
||||
#define REC_GCLOOKUP(ptr, case) do { if (RefCntP(ptr)) rec_htfind(ptr, case); } while (0)
|
||||
#define REC_GCLOOKUPV(ptr, case, val) do { \
|
||||
if (RefCntP(ptr)) \
|
||||
(val) = rec_htfind((ptr), (case)); \
|
||||
else \
|
||||
(val) = NIL; \
|
||||
}
|
||||
} while (0)
|
||||
|
||||
#define FRPLPTR(old , new) { \
|
||||
#define FRPLPTR(old , new) do { \
|
||||
GCLOOKUP(new, ADDREF); \
|
||||
GCLOOKUP(old, DELREF); \
|
||||
(old) = (new) ; }
|
||||
(old) = (new) ; } while (0)
|
||||
|
||||
|
||||
#ifndef BYTESWAP
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
#ifndef GCSCANDEFS_H
|
||||
#define GCSCANDEFS_H 1
|
||||
#include "lispemul.h" /* for DLword */
|
||||
DLword gcscan1(register int probe);
|
||||
DLword gcscan2(register int probe);
|
||||
int gcscan1(int probe);
|
||||
int gcscan2(int probe);
|
||||
#endif
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#ifndef GVAR2DEFS_H
|
||||
#define GVAR2DEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
LispPTR N_OP_gvar_(register LispPTR tos, unsigned int atom_index);
|
||||
LispPTR N_OP_rplptr(register LispPTR tos_m_1, register LispPTR tos, unsigned int alpha);
|
||||
LispPTR N_OP_gvar_(LispPTR tos, unsigned int atom_index);
|
||||
LispPTR N_OP_rplptr(LispPTR tos_m_1, LispPTR tos, unsigned int alpha);
|
||||
#endif
|
||||
|
||||
@@ -1,39 +0,0 @@
|
||||
#ifndef HDW_CONF_H
|
||||
#define HDW_CONF_H 1
|
||||
/* $Id: hdw_conf.h,v 1.2 1999/01/03 02:06:01 sybalsky Exp $ (C) Copyright Venue, All Rights Reserved */
|
||||
|
||||
|
||||
|
||||
|
||||
/************************************************************************/
|
||||
/* */
|
||||
/* (C) Copyright 1989-92 Venue. All Rights Reserved. */
|
||||
/* Manufactured in the United States of America. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
/**************************************************************/
|
||||
/*
|
||||
File name : machineconfig.h
|
||||
|
||||
Created : Aug-19-87 take
|
||||
|
||||
Desc. : Define for Machine dependent param
|
||||
|
||||
*/
|
||||
/**************************************************************/
|
||||
/* Machine Type */
|
||||
|
||||
#define KATANA 3
|
||||
|
||||
/* Lastvmempage(32Mbyte) */
|
||||
#ifdef BIGVM
|
||||
#define LASTVMEMPAGE 0x1FFFF
|
||||
#else
|
||||
#define LASTVMEMPAGE (65535)
|
||||
#endif
|
||||
|
||||
#endif /* HDW_CONF_H */
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "lispemul.h" /* for LispPTR, DLword */
|
||||
#include "version.h" /* for BIGVM */
|
||||
|
||||
#define MACHINETYPE_MAIKO 3
|
||||
#define IFPAGE_KEYVAL 0x15e3
|
||||
#ifndef BYTESWAP
|
||||
#ifdef BIGVM
|
||||
@@ -91,10 +92,10 @@ typedef struct ifpage {
|
||||
LispPTR dlnilp1;
|
||||
LispPTR dlnilp2;
|
||||
LispPTR dlnilp3;
|
||||
int dllastvmempage;
|
||||
unsigned dllastvmempage;
|
||||
int nactivepages;
|
||||
int ndirtypages;
|
||||
int process_size; /* was lastnumchars */
|
||||
unsigned process_size; /* was lastnumchars */
|
||||
} IFPAGE;
|
||||
#else
|
||||
/* Normal definition, for big-endian machines */
|
||||
@@ -248,10 +249,10 @@ typedef struct ifpage {
|
||||
LispPTR dlnilp1;
|
||||
LispPTR dlnilp2;
|
||||
LispPTR dlnilp3;
|
||||
int dllastvmempage;
|
||||
unsigned dllastvmempage;
|
||||
int nactivepages;
|
||||
int ndirtypages;
|
||||
int process_size; /* was lastnumchars */
|
||||
unsigned process_size; /* was lastnumchars */
|
||||
} IFPAGE;
|
||||
#else
|
||||
/***********************************************************/
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
void init_cursor(void);
|
||||
void set_cursor(void);
|
||||
void clear_display(void);
|
||||
void init_display2(DLword *display_addr, int display_max);
|
||||
void init_display2(DLword *display_addr, unsigned display_max);
|
||||
void display_before_exit(void);
|
||||
void flush_display_buffer(void);
|
||||
void flush_display_region(int x, int y, int w, int h);
|
||||
void byte_swapped_displayregion(int x, int y, int w, int h);
|
||||
void flush_display_lineregion(UNSIGNED x, DLword *ybase, UNSIGNED w, UNSIGNED h);
|
||||
void flush_display_ptrregion(DLword *ybase, UNSIGNED bitoffset, UNSIGNED w, UNSIGNED h);
|
||||
void flush_display_lineregion(UNSIGNED x, DLword *ybase, int w, int h);
|
||||
void flush_display_ptrregion(DLword *ybase, UNSIGNED bitoffset, int w, int h);
|
||||
#endif
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#define INITSOUTDEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
LispPTR *fixp_value(LispPTR *ptr);
|
||||
void init_ifpage(int sysout_size);
|
||||
void init_ifpage(unsigned sysout_size);
|
||||
void init_iopage(void);
|
||||
void build_lisp_map(void);
|
||||
void init_for_keyhandle(void);
|
||||
|
||||
183
inc/inlineC.h
183
inc/inlineC.h
@@ -101,9 +101,9 @@
|
||||
#define OPCAR \
|
||||
do { \
|
||||
if (Listp(TOPOFSTACK)) { \
|
||||
register ConsCell *DATUM68K = (ConsCell *)(Addr68k_from_LADDR(TOPOFSTACK)); \
|
||||
ConsCell *DATUM68K = (ConsCell *)NativeAligned4FromLAddr(TOPOFSTACK); \
|
||||
if (DATUM68K->cdr_code == CDR_INDIRECT) { \
|
||||
TOPOFSTACK = ((LispPTR)((ConsCell *)Addr68k_from_LADDR(DATUM68K->car_field))->car_field); \
|
||||
TOPOFSTACK = ((LispPTR)((ConsCell *)NativeAligned4FromLAddr(DATUM68K->car_field))->car_field); \
|
||||
nextop1; \
|
||||
} else { \
|
||||
TOPOFSTACK = ((LispPTR)DATUM68K->car_field); \
|
||||
@@ -122,8 +122,8 @@
|
||||
#define OPCDR \
|
||||
do { \
|
||||
if (Listp(TOPOFSTACK)) { \
|
||||
register ConsCell *DATUM68K = (ConsCell *)(Addr68k_from_LADDR(TOPOFSTACK)); \
|
||||
register int CDRCODEX = DATUM68K->cdr_code; \
|
||||
ConsCell *DATUM68K = (ConsCell *)(NativeAligned4FromLAddr(TOPOFSTACK)); \
|
||||
int CDRCODEX = DATUM68K->cdr_code; \
|
||||
if (CDRCODEX == CDR_NIL) { \
|
||||
/* cdr-nil */ \
|
||||
TOPOFSTACK = (NIL_PTR); \
|
||||
@@ -139,7 +139,7 @@
|
||||
} else { \
|
||||
/* cdr-differentpage */ \
|
||||
TOPOFSTACK = \
|
||||
((ConsCell *)(Addr68k_from_LADDR((TOPOFSTACK) + (CDRCODEX << 1))))->car_field; \
|
||||
((ConsCell *)(NativeAligned4FromLAddr((TOPOFSTACK) + (CDRCODEX << 1))))->car_field; \
|
||||
nextop1; \
|
||||
} \
|
||||
} else if (TOPOFSTACK == NIL_PTR) { \
|
||||
@@ -152,8 +152,8 @@
|
||||
#define OPCDR \
|
||||
do { \
|
||||
if (Listp(TOPOFSTACK)) { \
|
||||
register ConsCell *DATUM68K = (ConsCell *)(Addr68k_from_LADDR(TOPOFSTACK)); \
|
||||
register int CDRCODEX = DATUM68K->cdr_code; \
|
||||
ConsCell *DATUM68K = (ConsCell *)(NativeAligned4FromLAddr(TOPOFSTACK)); \
|
||||
int CDRCODEX = DATUM68K->cdr_code; \
|
||||
if (CDRCODEX == CDR_NIL) { \
|
||||
/* cdr-nil */ \
|
||||
TOPOFSTACK = (NIL_PTR); \
|
||||
@@ -169,7 +169,7 @@
|
||||
} else { \
|
||||
/* cdr-differentpage */ \
|
||||
TOPOFSTACK = \
|
||||
((ConsCell *)(Addr68k_from_LADDR(POINTER_PAGEBASE(TOPOFSTACK) + (CDRCODEX << 1)))) \
|
||||
((ConsCell *)(NativeAligned4FromLAddr(POINTER_PAGEBASE(TOPOFSTACK) + (CDRCODEX << 1)))) \
|
||||
->car_field; \
|
||||
nextop1; \
|
||||
} \
|
||||
@@ -239,19 +239,19 @@
|
||||
#define GETBASE_N(N) \
|
||||
do { \
|
||||
TOPOFSTACK = \
|
||||
(S_POSITIVE | GETWORD((DLword *)Addr68k_from_LADDR((POINTERMASK & TOPOFSTACK) + (N)))); \
|
||||
(S_POSITIVE | GETWORD((DLword *)NativeAligned2FromLAddr((POINTERMASK & TOPOFSTACK) + (N)))); \
|
||||
nextop2; \
|
||||
} while (0)
|
||||
|
||||
#define GETBASEPTR_N(N) \
|
||||
do { \
|
||||
TOPOFSTACK = (POINTERMASK & *((LispPTR *)Addr68k_from_LADDR((POINTERMASK & TOPOFSTACK) + (N)))); \
|
||||
TOPOFSTACK = (POINTERMASK & *((LispPTR *)NativeAligned4FromLAddr((POINTERMASK & TOPOFSTACK) + (N)))); \
|
||||
nextop2; \
|
||||
} while (0)
|
||||
#define PUTBASEBYTE \
|
||||
do { \
|
||||
register int byteoffset; \
|
||||
register char *p_data; \
|
||||
LispPTR byteoffset; \
|
||||
char *p_data; \
|
||||
if (((SEGMASK & TOPOFSTACK) != S_POSITIVE) || ((unsigned short)TOPOFSTACK >= 256)) \
|
||||
goto op_ufn; \
|
||||
byteoffset = GET_TOS_1; \
|
||||
@@ -261,12 +261,12 @@
|
||||
default: \
|
||||
goto op_ufn; \
|
||||
/*** if( GetTypeNumber(byteoffset) == TYPE_FIXP ) \
|
||||
byteoffset = *((int *)Addr68k_from_LADDR(byteoffset)); \
|
||||
byteoffset = *((int *)NativeAligned4FromLAddr(byteoffset)); \
|
||||
else \
|
||||
goto op_ufn; ***/ \
|
||||
} \
|
||||
--CSTKPTRL; \
|
||||
p_data = (char *)Addr68k_from_LADDR(POINTERMASK & (POP_TOS_1)) + byteoffset; \
|
||||
p_data = (char *)NativeAligned2FromLAddr(POINTERMASK & (POP_TOS_1)) + byteoffset; \
|
||||
GETBYTE(p_data) = 0xFF & TOPOFSTACK; \
|
||||
nextop1; \
|
||||
} while (0)
|
||||
@@ -278,31 +278,30 @@
|
||||
case S_NEGATIVE: TOPOFSTACK |= 0xFFFF0000; break; \
|
||||
default: \
|
||||
if (GetTypeNumber(TOPOFSTACK) == TYPE_FIXP) \
|
||||
TOPOFSTACK = *((int *)Addr68k_from_LADDR(TOPOFSTACK)); \
|
||||
TOPOFSTACK = *NativeAligned4FromLAddr(TOPOFSTACK); \
|
||||
else \
|
||||
goto op_ufn; \
|
||||
} \
|
||||
TOPOFSTACK = \
|
||||
(0xFF & (GETBYTE((char *)Addr68k_from_LADDR((POINTERMASK & (POP_TOS_1))) + TOPOFSTACK))) | \
|
||||
S_POSITIVE; \
|
||||
TOPOFSTACK = S_POSITIVE | (0xFF & \
|
||||
(GETBYTE((char *)NativeAligned2FromLAddr((POINTERMASK & (POP_TOS_1))) + TOPOFSTACK))); \
|
||||
nextop1; \
|
||||
} while (0)
|
||||
|
||||
#define PUTBASEPTR_N(n) \
|
||||
do { \
|
||||
register int base; \
|
||||
LispPTR base; \
|
||||
base = POINTERMASK & POP_TOS_1; \
|
||||
*((LispPTR *)Addr68k_from_LADDR(base + (n))) = TOPOFSTACK; \
|
||||
*((LispPTR *)NativeAligned4FromLAddr(base + (n))) = TOPOFSTACK; \
|
||||
TOPOFSTACK = base; \
|
||||
nextop2; \
|
||||
} while (0)
|
||||
|
||||
#define PUTBASE_N(n) \
|
||||
do { \
|
||||
register int base; \
|
||||
LispPTR base; \
|
||||
if (GetHiWord(TOPOFSTACK) != (S_POSITIVE >> 16)) goto op_ufn; \
|
||||
base = POINTERMASK & POP_TOS_1; \
|
||||
GETWORD((DLword *)Addr68k_from_LADDR(base + (n))) = GetLoWord(TOPOFSTACK); \
|
||||
GETWORD((DLword *)NativeAligned2FromLAddr(base + (n))) = GetLoWord(TOPOFSTACK); \
|
||||
TOPOFSTACK = base; \
|
||||
nextop2; \
|
||||
} while (0)
|
||||
@@ -337,9 +336,9 @@
|
||||
#elif defined(BIGVM)
|
||||
#define GVAR(x) \
|
||||
do { \
|
||||
register int tx = x; \
|
||||
LispPTR tx = x; \
|
||||
if (tx & SEGMASK) { \
|
||||
PUSH(GetLongWord(Addr68k_from_LADDR((tx) + NEWATOM_VALUE_OFFSET))); \
|
||||
PUSH(GetLongWord(NativeAligned4FromLAddr((tx) + NEWATOM_VALUE_OFFSET))); \
|
||||
} else \
|
||||
PUSH(GetLongWord((LispPTR *)AtomSpace + (tx * 5) + NEWATOM_VALUE_PTROFF)); \
|
||||
\
|
||||
@@ -348,9 +347,9 @@
|
||||
#else
|
||||
#define GVAR(x) \
|
||||
do { \
|
||||
register int tx = x; \
|
||||
LispPTR tx = x; \
|
||||
if (tx & SEGMASK) { \
|
||||
PUSH(GetLongWord(Addr68k_from_LADDR((tx) + NEWATOM_VALUE_OFFSET))); \
|
||||
PUSH(GetLongWord(NativeAligned4FromLAddr((tx) + NEWATOM_VALUE_OFFSET))); \
|
||||
} else \
|
||||
PUSH(GetLongWord(Valspace + ((tx) << 1))); \
|
||||
\
|
||||
@@ -366,7 +365,7 @@
|
||||
|
||||
#define SWAP \
|
||||
do { \
|
||||
register LispPTR temp; \
|
||||
LispPTR temp; \
|
||||
temp = GET_TOS_1; \
|
||||
GET_TOS_1 = TOPOFSTACK; \
|
||||
TOPOFSTACK = temp; \
|
||||
@@ -421,15 +420,15 @@
|
||||
|
||||
#define BIN \
|
||||
do { \
|
||||
register Stream *stream68k; /* stream instance on TOS */ \
|
||||
register char *buff68k; /* pointer to BUFF */ \
|
||||
Stream *stream68k; /* stream instance on TOS */ \
|
||||
char *buff68k; /* pointer to BUFF */ \
|
||||
\
|
||||
if (GetTypeNumber(TOPOFSTACK) == TYPE_STREAM) { \
|
||||
stream68k = (Stream *)Addr68k_from_LADDR(TOPOFSTACK); \
|
||||
stream68k = (Stream *)NativeAligned4FromLAddr(TOPOFSTACK); \
|
||||
if ((!stream68k->BINABLE) || (stream68k->COFFSET >= stream68k->CBUFSIZE)) goto op_ufn; \
|
||||
\
|
||||
/* get BUFFER instance */ \
|
||||
buff68k = (char *)Addr68k_from_LADDR(stream68k->CBUFPTR); \
|
||||
buff68k = (char *)NativeAligned2FromLAddr(stream68k->CBUFPTR); \
|
||||
\
|
||||
/* get BYTE data and set it to TOS */ \
|
||||
TOPOFSTACK = (S_POSITIVE | (Get_BYTE(buff68k + (stream68k->COFFSET)++))); \
|
||||
@@ -450,15 +449,15 @@
|
||||
|
||||
#define GCSCAN1 \
|
||||
do { \
|
||||
TOPOFSTACK = gcscan1(TOPOFSTACK & 0xffff); \
|
||||
if (TOPOFSTACK) { TOPOFSTACK |= S_POSITIVE; }; \
|
||||
int scan = gcscan1(TOPOFSTACK & 0xffff); \
|
||||
TOPOFSTACK = (scan == -1) ? NIL : (S_POSITIVE | scan); \
|
||||
nextop1; \
|
||||
} while (0)
|
||||
|
||||
#define GCSCAN2 \
|
||||
do { \
|
||||
TOPOFSTACK = gcscan2(TOPOFSTACK & 0xffff); \
|
||||
if (TOPOFSTACK) { TOPOFSTACK |= S_POSITIVE; }; \
|
||||
int scan = gcscan2(TOPOFSTACK & 0xffff); \
|
||||
TOPOFSTACK = (scan == -1) ? NIL : (S_POSITIVE | scan); \
|
||||
nextop1; \
|
||||
} while (0)
|
||||
|
||||
@@ -496,11 +495,11 @@
|
||||
|
||||
#define BIND \
|
||||
do { \
|
||||
register int byte = Get_BYTE_PCMAC1; \
|
||||
register unsigned n1; \
|
||||
register unsigned n2; \
|
||||
register LispPTR *ppvar; \
|
||||
register int i; \
|
||||
LispPTR byte = Get_BYTE_PCMAC1; \
|
||||
unsigned n1; \
|
||||
unsigned n2; \
|
||||
LispPTR *ppvar; \
|
||||
int i; \
|
||||
n1 = byte >> 4; \
|
||||
n2 = byte & 0xf; \
|
||||
ppvar = (LispPTR *)PVAR + 1 + Get_BYTE_PCMAC2; \
|
||||
@@ -517,10 +516,10 @@
|
||||
|
||||
#define UNBIND \
|
||||
do { \
|
||||
register int num; \
|
||||
register LispPTR *ppvar; \
|
||||
register int i; \
|
||||
register LispPTR value; \
|
||||
int num; \
|
||||
LispPTR *ppvar; \
|
||||
int i; \
|
||||
LispPTR value; \
|
||||
for (; (((int)*--CSTKPTRL) >= 0);) \
|
||||
; \
|
||||
value = *CSTKPTR; \
|
||||
@@ -532,10 +531,10 @@
|
||||
|
||||
#define DUNBIND \
|
||||
do { \
|
||||
register int num; \
|
||||
register LispPTR *ppvar; \
|
||||
register int i; \
|
||||
register LispPTR value; \
|
||||
int num; \
|
||||
LispPTR *ppvar; \
|
||||
int i; \
|
||||
LispPTR value; \
|
||||
if ((int)TOPOFSTACK < 0) { \
|
||||
num = (~TOPOFSTACK) >> 16; \
|
||||
if (num != 0) { \
|
||||
@@ -567,9 +566,9 @@
|
||||
|
||||
#define GETBITS_N_M(a, b) \
|
||||
do { \
|
||||
register int temp, bb = b; \
|
||||
int temp, bb = b; \
|
||||
temp = 0xF & bb; \
|
||||
TOPOFSTACK = S_POSITIVE | (((GETWORD(Addr68k_from_LADDR(POINTERMASK & (TOPOFSTACK + (a))))) >> \
|
||||
TOPOFSTACK = S_POSITIVE | (((GETWORD(NativeAligned2FromLAddr(POINTERMASK & (TOPOFSTACK + (a))))) >> \
|
||||
(16 - ((0xF & (bb >> 4)) + temp + 1))) & \
|
||||
n_mask_array[temp]); \
|
||||
nextop3; \
|
||||
@@ -577,13 +576,13 @@
|
||||
|
||||
#define PUTBITS_N_M(a, b) \
|
||||
do { \
|
||||
int base; \
|
||||
register int bb = b; \
|
||||
register DLword *pword; \
|
||||
register int shift_size, field_size, fmask; \
|
||||
LispPTR base; \
|
||||
int bb = b; \
|
||||
DLword *pword; \
|
||||
int shift_size, field_size, fmask; \
|
||||
if ((SEGMASK & TOPOFSTACK) != S_POSITIVE) { goto op_ufn; }; \
|
||||
base = POINTERMASK & POP_TOS_1; \
|
||||
pword = (DLword *)Addr68k_from_LADDR(base + (a)); \
|
||||
pword = NativeAligned2FromLAddr(base + (a)); \
|
||||
field_size = 0xF & bb; \
|
||||
shift_size = 15 - (0xF & (bb >> 4)) - field_size; \
|
||||
fmask = n_mask_array[field_size] << shift_size; \
|
||||
@@ -606,7 +605,7 @@
|
||||
|
||||
#define MYARGCOUNT \
|
||||
do { \
|
||||
register UNSIGNED arg_num; \
|
||||
UNSIGNED arg_num; \
|
||||
if ((CURRENTFX->alink & 1) == 0) \
|
||||
arg_num = (UNSIGNED)((LispPTR *)(CURRENTFX)-1); \
|
||||
else \
|
||||
@@ -671,7 +670,7 @@
|
||||
|
||||
#define CLARITHEQUAL \
|
||||
do { \
|
||||
register int arg2; \
|
||||
LispPTR arg2; \
|
||||
SV; \
|
||||
arg2 = POP_TOS_1; \
|
||||
if ((TOPOFSTACK & SEGMASK) == S_POSITIVE) { \
|
||||
@@ -687,18 +686,16 @@
|
||||
N_OP_POPPED_CALL_2(N_OP_eqq, arg2); \
|
||||
} while (0)
|
||||
|
||||
#define S_CHARACTER 0x70000
|
||||
|
||||
#define AREF1 \
|
||||
do { \
|
||||
LispPTR arrayarg; \
|
||||
register LispPTR baseL; \
|
||||
register int index; \
|
||||
register OneDArray *arrayblk; \
|
||||
LispPTR baseL; \
|
||||
int index; \
|
||||
OneDArray *arrayblk; \
|
||||
SV; \
|
||||
arrayarg = POP_TOS_1; \
|
||||
if (GetTypeNumber(arrayarg) != TYPE_ONED_ARRAY) goto aref_ufn; \
|
||||
arrayblk = (OneDArray *)Addr68k_from_LADDR(arrayarg); \
|
||||
arrayblk = (OneDArray *)NativeAligned4FromLAddr(arrayarg); \
|
||||
if ((TOPOFSTACK & SEGMASK) != S_POSITIVE) goto aref_ufn; \
|
||||
index = TOPOFSTACK & 0xFFFF; \
|
||||
if (index >= arrayblk->totalsize) goto aref_ufn; \
|
||||
@@ -706,10 +703,10 @@
|
||||
baseL = arrayblk->base; \
|
||||
switch (arrayblk->typenumber) { \
|
||||
case 38: /* pointer : 32 bits */ \
|
||||
TOPOFSTACK = *(((int *)Addr68k_from_LADDR(baseL)) + index); \
|
||||
TOPOFSTACK = *(NativeAligned4FromLAddr(baseL) + index); \
|
||||
nextop1; \
|
||||
case 20: /* signed : 16 bits */ \
|
||||
TOPOFSTACK = (GETWORD(((DLword *)Addr68k_from_LADDR(baseL)) + index)) & 0xFFFF; \
|
||||
TOPOFSTACK = (GETWORD(((DLword *)NativeAligned2FromLAddr(baseL)) + index)) & 0xFFFF; \
|
||||
if (TOPOFSTACK & 0x8000) \
|
||||
TOPOFSTACK |= S_NEGATIVE; \
|
||||
else \
|
||||
@@ -717,47 +714,47 @@
|
||||
nextop1; \
|
||||
case 67: /* Character : 8 bits */ \
|
||||
TOPOFSTACK = \
|
||||
S_CHARACTER | ((GETBYTE(((char *)Addr68k_from_LADDR(baseL)) + index)) & 0xFF); \
|
||||
S_CHARACTER | ((GETBYTE(((char *)NativeAligned2FromLAddr(baseL)) + index)) & 0xFF); \
|
||||
nextop1; \
|
||||
case 22: /* signed : 32 bits */ \
|
||||
TOPOFSTACK = *(((int *)Addr68k_from_LADDR(baseL)) + index); \
|
||||
TOPOFSTACK = *(NativeAligned4FromLAddr(baseL) + index); \
|
||||
switch (TOPOFSTACK & 0xFFFF0000) { \
|
||||
case 0: TOPOFSTACK |= S_POSITIVE; break; \
|
||||
case (unsigned)0xFFFF0000: TOPOFSTACK &= S_NEGATIVE; break; \
|
||||
default: { \
|
||||
register DLword *wordp; \
|
||||
wordp = createcell68k(TYPE_FIXP); \
|
||||
*((int *)wordp) = TOPOFSTACK; \
|
||||
TOPOFSTACK = (LispPTR)LADDR_from_68k(wordp); \
|
||||
LispPTR *cellp; \
|
||||
cellp = (LispPTR *)createcell68k(TYPE_FIXP); \
|
||||
*cellp = TOPOFSTACK; \
|
||||
TOPOFSTACK = (LispPTR)LAddrFromNative(cellp); \
|
||||
} \
|
||||
} \
|
||||
nextop1; \
|
||||
case 0: /* unsigned : 1 bit per element */ \
|
||||
TOPOFSTACK = \
|
||||
S_POSITIVE | (((GETBYTE(((char *)Addr68k_from_LADDR(baseL)) + (index >> 3))) >> \
|
||||
S_POSITIVE | (((GETBYTE(((char *)NativeAligned2FromLAddr(baseL)) + (index >> 3))) >> \
|
||||
(7 - (index & 7))) & \
|
||||
1); \
|
||||
nextop1; \
|
||||
case 3: /* unsigned : 8 bits per element */ \
|
||||
TOPOFSTACK = S_POSITIVE | ((GETBYTE(((char *)Addr68k_from_LADDR(baseL)) + index)) & 0xFF); \
|
||||
TOPOFSTACK = S_POSITIVE | ((GETBYTE(((char *)NativeAligned2FromLAddr(baseL)) + index)) & 0xFF); \
|
||||
nextop1; \
|
||||
case 4: /* unsigned : 16 bits per element */ \
|
||||
TOPOFSTACK = \
|
||||
S_POSITIVE | ((GETWORD(((DLword *)Addr68k_from_LADDR(baseL)) + index)) & 0xFFFF); \
|
||||
S_POSITIVE | ((GETWORD(((DLword *)NativeAligned2FromLAddr(baseL)) + index)) & 0xFFFF); \
|
||||
nextop1; \
|
||||
case 54: /* Float : 32 bits */ { \
|
||||
register DLword *wordp; \
|
||||
wordp = createcell68k(TYPE_FLOATP); \
|
||||
*((int *)wordp) = *(((int *)Addr68k_from_LADDR(baseL)) + index); \
|
||||
TOPOFSTACK = (LispPTR)LADDR_from_68k(wordp); \
|
||||
LispPTR *cellp; \
|
||||
cellp = (LispPTR *)createcell68k(TYPE_FLOATP); \
|
||||
*cellp = *(NativeAligned4FromLAddr(baseL) + index); \
|
||||
TOPOFSTACK = (LispPTR)LAddrFromNative(cellp); \
|
||||
} \
|
||||
nextop1; \
|
||||
case 68: /* Character : 16 bits */ \
|
||||
TOPOFSTACK = \
|
||||
S_CHARACTER | ((GETWORD(((DLword *)Addr68k_from_LADDR(baseL)) + index)) & 0xFFFF); \
|
||||
S_CHARACTER | ((GETWORD(((DLword *)NativeAligned2FromLAddr(baseL)) + index)) & 0xFFFF);\
|
||||
nextop1; \
|
||||
case 86: /* XPointer : 32 bits */ \
|
||||
TOPOFSTACK = *(((int *)Addr68k_from_LADDR(baseL)) + index); \
|
||||
TOPOFSTACK = *(NativeAligned4FromLAddr(baseL) + index); \
|
||||
nextop1; \
|
||||
default: /* Illegal or Unimplemented */ goto aref_ufn; \
|
||||
} /* end switch typenumber */ \
|
||||
@@ -768,8 +765,8 @@
|
||||
#ifdef BIGVM
|
||||
#define DTEST(n) \
|
||||
do { \
|
||||
register int atom_index; \
|
||||
register struct dtd *dtd68k; \
|
||||
int atom_index; \
|
||||
struct dtd *dtd68k; \
|
||||
atom_index = n; \
|
||||
for (dtd68k = (struct dtd *)GetDTD(GetTypeNumber(TOPOFSTACK)); atom_index != dtd68k->dtd_name; \
|
||||
dtd68k = (struct dtd *)GetDTD(dtd68k->dtd_supertype)) { \
|
||||
@@ -780,8 +777,8 @@
|
||||
#else /* BIGVM */
|
||||
#define DTEST(n) \
|
||||
do { \
|
||||
register int atom_index; \
|
||||
register struct dtd *dtd68k; \
|
||||
int atom_index; \
|
||||
struct dtd *dtd68k; \
|
||||
atom_index = n; \
|
||||
for (dtd68k = (struct dtd *)GetDTD(GetTypeNumber(TOPOFSTACK)); \
|
||||
atom_index != dtd68k->dtd_namelo + ((int)(dtd68k->dtd_namehi) << 16); \
|
||||
@@ -794,26 +791,26 @@
|
||||
|
||||
#define FVAR(n) \
|
||||
do { \
|
||||
register LispPTR *chain; \
|
||||
LispPTR *chain; \
|
||||
chain = (LispPTR *)(PVar + (n)); \
|
||||
if (WBITSPTR(chain)->LSB) { \
|
||||
PUSH(GetLongWord(Addr68k_from_LADDR(POINTERMASK &swapx(native_newframe((n) >> 1))))); \
|
||||
PUSH(GetLongWord(NativeAligned4FromLAddr(POINTERMASK &swapx(native_newframe((n) >> 1))))); \
|
||||
nextop1; \
|
||||
} /* if(((WBITS */ \
|
||||
PUSH(GetLongWord(Addr68k_from_LADDR(POINTERMASK &swapx(*chain)))); \
|
||||
PUSH(GetLongWord(NativeAligned4FromLAddr(POINTERMASK &swapx(*chain)))); \
|
||||
nextop1; \
|
||||
} while (0)
|
||||
|
||||
#define FVARX(n) \
|
||||
do { \
|
||||
register int nn = n; \
|
||||
register LispPTR *chain; \
|
||||
int nn = n; \
|
||||
LispPTR *chain; \
|
||||
chain = (LispPTR *)(PVar + nn); \
|
||||
if (WBITSPTR(chain)->LSB) { \
|
||||
PUSH(GetLongWord(Addr68k_from_LADDR(POINTERMASK &swapx(native_newframe(nn >> 1))))); \
|
||||
PUSH(GetLongWord(NativeAligned4FromLAddr(POINTERMASK &swapx(native_newframe(nn >> 1))))); \
|
||||
nextop2; \
|
||||
} /* if(((WBITS */ \
|
||||
PUSH(GetLongWord(Addr68k_from_LADDR(POINTERMASK &swapx(*chain)))); \
|
||||
PUSH(GetLongWord(NativeAligned4FromLAddr(POINTERMASK &swapx(*chain)))); \
|
||||
nextop2; \
|
||||
} while (0)
|
||||
|
||||
@@ -837,7 +834,7 @@
|
||||
#elif defined(BIGVM)
|
||||
#define ATOMCELL_N(n) \
|
||||
do { \
|
||||
register int nn = n; \
|
||||
int nn = n; \
|
||||
if (0 == ((unsigned int)(TOPOFSTACK &= POINTERMASK) & SEGMASK)) { \
|
||||
/* old-symbol case; just add cell-number arg */ \
|
||||
switch (nn) { \
|
||||
@@ -881,7 +878,7 @@
|
||||
|
||||
#define ATOMCELL_N(n) \
|
||||
do { \
|
||||
register int nn = n; \
|
||||
int nn = n; \
|
||||
if (0 == ((unsigned int)TOPOFSTACK & SEGMASK)) { \
|
||||
/* old-symbol case; just add cell-number arg */ \
|
||||
TOPOFSTACK = (nn << 16) + (TOPOFSTACK << 1); \
|
||||
|
||||
30
inc/inlnPS2.h
Executable file → Normal file
30
inc/inlnPS2.h
Executable file → Normal file
@@ -39,8 +39,8 @@
|
||||
/* */
|
||||
/* R E G I S T E R C O N V E N T I O N S */
|
||||
/* */
|
||||
/* The following register conventions hold in the dispatch loop, */
|
||||
/* and are set up by register ... asm("...") decls in xc.c: */
|
||||
/* The following conventions hold in the dispatch loop, */
|
||||
/* and are set up by ... asm("...") decls in xc.c: */
|
||||
/* */
|
||||
/* esi pccache - the current PC */
|
||||
/* edi cspcache - the current lisp stack ptr. */
|
||||
@@ -48,7 +48,7 @@
|
||||
/* */
|
||||
/* */
|
||||
/* Register conventions within arithmetic functions in the files */
|
||||
/* arith2.c - arith4.c, etc.: */
|
||||
/* arithops.c, etc.: */
|
||||
/* */
|
||||
/* esi first argument to the function */
|
||||
/* edi second argument to the function */
|
||||
@@ -60,7 +60,7 @@
|
||||
/* */
|
||||
/* G E N E R A L - P U R P O S E I N L I N E F U N C T I O N S */
|
||||
/* */
|
||||
/* These functions don't rely on register conventions. */
|
||||
/* These functions don't rely on conventions. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
extern inline const unsigned int Get_BYTE_PCMAC0fn (pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word;
|
||||
unsigned int word;
|
||||
asm("leal -1(%1),%0 \n\
|
||||
xorl $3,%0 \n\
|
||||
movzbl (%0),%0 \n\
|
||||
@@ -99,7 +99,7 @@ unsigned int pccache;
|
||||
extern inline const unsigned int Get_BYTE_PCMAC1fn (pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word;
|
||||
unsigned int word;
|
||||
asm("movl %1,%0 \n\
|
||||
xorl $3,%0 \n\
|
||||
movzbl (%0),%0 \n\
|
||||
@@ -110,7 +110,7 @@ unsigned int pccache;
|
||||
extern inline const unsigned int Get_BYTE_PCMAC2fn (pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word;
|
||||
unsigned int word;
|
||||
asm("leal 1(%1),%0 \n\
|
||||
xorl $3,%0 \n\
|
||||
movzbl (%0),%0 \n\
|
||||
@@ -121,7 +121,7 @@ unsigned int pccache;
|
||||
extern inline const unsigned int Get_BYTE_PCMAC3fn (pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word;
|
||||
unsigned int word;
|
||||
asm("leal 2(%1),%0 \n\
|
||||
xorl $3,%0 \n\
|
||||
movzbl (%0),%0 \n\
|
||||
@@ -144,7 +144,7 @@ unsigned int pccache;
|
||||
extern inline const unsigned int Get_DLword_PCMAC0fn(pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word asm("ax");
|
||||
unsigned int word asm("ax");
|
||||
asm("movl %1,%%edx \n\
|
||||
xorb $3,%%dl \n\
|
||||
movzbl (%%edx),%%eax \n\
|
||||
@@ -158,7 +158,7 @@ unsigned int pccache;
|
||||
extern inline const unsigned int Get_DLword_PCMAC1fn(pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word asm("ax");
|
||||
unsigned int word asm("ax");
|
||||
asm("leal 1(%1),%%edx \n\
|
||||
xorb $3,%%dl \n\
|
||||
movzbl (%%edx),%%eax \n\
|
||||
@@ -173,7 +173,7 @@ unsigned int pccache;
|
||||
extern inline const unsigned int Get_DLword_PCMAC2fn(pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word asm("ax");
|
||||
unsigned int word asm("ax");
|
||||
asm("leal 2(%1),%%edx \n\
|
||||
xorb $3,%%dl \n\
|
||||
movzbl (%%edx),%%eax \n\
|
||||
@@ -187,7 +187,7 @@ unsigned int pccache;
|
||||
extern inline const unsigned int Get_DLword_PCMAC3fn(pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word asm("ax");
|
||||
unsigned int word asm("ax");
|
||||
asm("leal 3(%1),%%edx \n\
|
||||
xorb $3,%%dl \n\
|
||||
movzbl (%%edx),%%eax \n\
|
||||
@@ -211,7 +211,7 @@ unsigned int pccache;
|
||||
extern inline const unsigned int Get_Pointer_PCMAC0fn(pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word asm("ax");
|
||||
unsigned int word asm("ax");
|
||||
asm("leal -1(%1),%%edx \n\
|
||||
xorb $3,%%dl \n\
|
||||
movzbl (%%edx),%%eax \n\
|
||||
@@ -229,7 +229,7 @@ unsigned int pccache;
|
||||
extern inline const unsigned int Get_Pointer_PCMAC1fn(pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word asm("ax");
|
||||
unsigned int word asm("ax");
|
||||
asm("leal (%1),%%edx \n\
|
||||
xorb $3,%%dl \n\
|
||||
movzbl (%%edx),%%eax \n\
|
||||
@@ -248,7 +248,7 @@ unsigned int pccache;
|
||||
extern inline const unsigned int Get_Pointer_PCMAC2fn(pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word asm("ax");
|
||||
unsigned int word asm("ax");
|
||||
asm("leal 1(%1),%%edx \n\
|
||||
xorb $3,%%dl \n\
|
||||
movzbl (%%edx),%%eax \n\
|
||||
|
||||
18
inc/inlnSPARC.h
Executable file → Normal file
18
inc/inlnSPARC.h
Executable file → Normal file
@@ -26,7 +26,7 @@
|
||||
/*
|
||||
Get_BYTE(PCMAC+1); \
|
||||
xc.c: #define PCMAC pccache
|
||||
xc.c: register InstPtr pccache;
|
||||
xc.c: InstPtr pccache;
|
||||
xc.c: typedef ByteCode *InstPtr; CHANGED TO
|
||||
xc.c: typedef BYTECODE *InstPtr;
|
||||
lispemul.h: typedef char ByteCode;
|
||||
@@ -51,15 +51,15 @@ lispemul.h: typedef struct {unsigned code : 8;} BYTECODE;
|
||||
|
||||
#define BOX_INTO(result, dest){ \
|
||||
if (NSMALLP_RANGE(result))/* dest = box_fixp(result);*/ \
|
||||
{register LispPTR *wordp; \
|
||||
{LispPTR *wordp; \
|
||||
wordp = (LispPTR *) createcell68k(TYPE_FIXP); \
|
||||
*((int *)wordp) = result; \
|
||||
dest = (LADDR_from_68k(wordp)); } \
|
||||
dest = (LAddrFromNative(wordp)); } \
|
||||
else dest = (( (unsigned)result <<15) >>15) | S_POSITIVE;}
|
||||
|
||||
|
||||
#define ARITH_OP(op, exceptions, handler) \
|
||||
{register int arg1, arg2, result; \
|
||||
{int arg1, arg2, result; \
|
||||
arg1 = GET_TOS_1; /* w/o side effect */ \
|
||||
if(!NSMALLP(TOPOFSTACK) && !NSMALLP(arg1)) { \
|
||||
arg2 = UNBOX_SMALLP(TOPOFSTACK); \
|
||||
@@ -71,7 +71,7 @@ lispemul.h: typedef struct {unsigned code : 8;} BYTECODE;
|
||||
N_OP_CALL_2(handler); }
|
||||
|
||||
#define BINARY_OP(exp, exceptions) { \
|
||||
register int arg1, arg2, result; \
|
||||
int arg1, arg2, result; \
|
||||
arg1 = GET_TOS_1; /* w/o side effect */ \
|
||||
UNBOX_ELSE_UFN(TOPOFSTACK, arg2); \
|
||||
UNBOX_ELSE_UFN(arg1, arg1); \
|
||||
@@ -84,7 +84,7 @@ lispemul.h: typedef struct {unsigned code : 8;} BYTECODE;
|
||||
#undef IGREATERP
|
||||
|
||||
#define GREATERP { \
|
||||
register int arg1, arg2, result; \
|
||||
int arg1, arg2, result; \
|
||||
arg1 = GET_TOS_1; /* w/o side effect */ \
|
||||
UNBOX_ELSE_UFN(TOPOFSTACK, arg2); \
|
||||
UNBOX_ELSE_UFN(arg1, arg1); \
|
||||
@@ -92,7 +92,7 @@ lispemul.h: typedef struct {unsigned code : 8;} BYTECODE;
|
||||
POP_TOS_1; nextop1;}
|
||||
|
||||
#define IGREATERP { \
|
||||
register int arg1, arg2, result; \
|
||||
int arg1, arg2, result; \
|
||||
arg1 = GET_TOS_1; /* w/o side effect */ \
|
||||
UNBOX_ELSE_UFN(TOPOFSTACK, arg2); \
|
||||
UNBOX_ELSE_UFN(arg1, arg1); \
|
||||
@@ -122,7 +122,7 @@ lispemul.h: typedef struct {unsigned code : 8;} BYTECODE;
|
||||
#define LOGXOR BINARY_OP(arg1 ^ arg2, 0)
|
||||
|
||||
#define UNARY_OP(exp, exceptions) { \
|
||||
register int arg, result; \
|
||||
int arg, result; \
|
||||
UNBOX_ELSE_UFN(TOPOFSTACK, arg); \
|
||||
result = exp; \
|
||||
if (exceptions) goto op_ufn; \
|
||||
@@ -141,7 +141,7 @@ lispemul.h: typedef struct {unsigned code : 8;} BYTECODE;
|
||||
|
||||
#undef ADDBASE
|
||||
#define ADDBASE { \
|
||||
register int arg1, arg2; \
|
||||
int arg1, arg2; \
|
||||
UNBOX_ELSE_UFN(TOPOFSTACK, arg2); \
|
||||
TOPOFSTACK = POP_TOS_1 + arg2; \
|
||||
nextop1;}
|
||||
|
||||
30
inc/inlndos.h
Executable file → Normal file
30
inc/inlndos.h
Executable file → Normal file
@@ -39,8 +39,8 @@
|
||||
/* */
|
||||
/* R E G I S T E R C O N V E N T I O N S */
|
||||
/* */
|
||||
/* The following register conventions hold in the dispatch loop, */
|
||||
/* and are set up by register ... asm("...") decls in xc.c: */
|
||||
/* The following conventions hold in the dispatch loop, */
|
||||
/* and are set up by ... asm("...") decls in xc.c: */
|
||||
/* */
|
||||
/* esi pccache - the current PC */
|
||||
/* edi cspcache - the current lisp stack ptr. */
|
||||
@@ -48,7 +48,7 @@
|
||||
/* */
|
||||
/* */
|
||||
/* Register conventions within arithmetic functions in the files */
|
||||
/* arith2.c - arith4.c, etc.: */
|
||||
/* arithops.c etc.: */
|
||||
/* */
|
||||
/* esi first argument to the function */
|
||||
/* edi second argument to the function */
|
||||
@@ -60,7 +60,7 @@
|
||||
/* */
|
||||
/* G E N E R A L - P U R P O S E I N L I N E F U N C T I O N S */
|
||||
/* */
|
||||
/* These functions don't rely on register conventions. */
|
||||
/* These functions don't rely on conventions. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
@@ -88,7 +88,7 @@
|
||||
extern inline unsigned int Get_BYTE_PCMAC0fn (pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word;
|
||||
unsigned int word;
|
||||
asm("lea %0,-1[%1] \n\
|
||||
xor %0,3 \n\
|
||||
movzx %0,BYTE PTR [%0] \n\
|
||||
@@ -99,7 +99,7 @@ unsigned int pccache;
|
||||
extern inline unsigned int Get_BYTE_PCMAC1fn (pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word;
|
||||
unsigned int word;
|
||||
asm("lea %0,[%1] \n\
|
||||
xor %0,3 \n\
|
||||
movzx %0,BYTE PTR [%0] \n\
|
||||
@@ -110,7 +110,7 @@ unsigned int pccache;
|
||||
extern inline unsigned int Get_BYTE_PCMAC2fn (pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word;
|
||||
unsigned int word;
|
||||
asm("lea %0,1[%1] \n\
|
||||
xor %0,3 \n\
|
||||
movzx %0,BYTE PTR [%0] \n\
|
||||
@@ -121,7 +121,7 @@ unsigned int pccache;
|
||||
extern inline unsigned int Get_BYTE_PCMAC3fn (pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word;
|
||||
unsigned int word;
|
||||
asm("lea %0,2[%1] \n\
|
||||
xor %0,3 \n\
|
||||
movzx %0,BYTE PTR [%0] \n\
|
||||
@@ -144,7 +144,7 @@ unsigned int pccache;
|
||||
extern inline unsigned int Get_DLword_PCMAC0fn(pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word asm("ax");
|
||||
unsigned int word asm("ax");
|
||||
asm("mov edx,%1 \n\
|
||||
xor dl,3 \n\
|
||||
movzx eax, byte ptr [edx] \n\
|
||||
@@ -158,7 +158,7 @@ unsigned int pccache;
|
||||
extern inline unsigned int Get_DLword_PCMAC1fn(pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word asm("ax");
|
||||
unsigned int word asm("ax");
|
||||
asm("lea edx,1[%1] \n\
|
||||
xor dl,3 \n\
|
||||
movzx eax, byte ptr [edx] \n\
|
||||
@@ -173,7 +173,7 @@ unsigned int pccache;
|
||||
extern inline unsigned int Get_DLword_PCMAC2fn(pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word asm("ax");
|
||||
unsigned int word asm("ax");
|
||||
asm("lea edx,2[%1] \n\
|
||||
xor dl,3 \n\
|
||||
movzx eax, byte ptr [edx] \n\
|
||||
@@ -187,7 +187,7 @@ unsigned int pccache;
|
||||
extern inline unsigned int Get_DLword_PCMAC3fn(pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word asm("ax");
|
||||
unsigned int word asm("ax");
|
||||
asm("lea edx,3[%1] \n\
|
||||
xor dl,3 \n\
|
||||
movzx eax, byte ptr [edx] \n\
|
||||
@@ -211,7 +211,7 @@ unsigned int pccache;
|
||||
extern inline const unsigned int Get_Pointer_PCMAC0fn(pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word asm("ax");
|
||||
unsigned int word asm("ax");
|
||||
asm("lea edx,-1[%1] \n\
|
||||
xor dl,3 \n\
|
||||
movzx eax,byte ptr [edx] \n\
|
||||
@@ -229,7 +229,7 @@ unsigned int pccache;
|
||||
extern inline const unsigned int Get_Pointer_PCMAC1fn(pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word asm("ax");
|
||||
unsigned int word asm("ax");
|
||||
asm("lea edx,[%1] \n\
|
||||
xor dl,3 \n\
|
||||
movzx eax,byte ptr [edx] \n\
|
||||
@@ -248,7 +248,7 @@ unsigned int pccache;
|
||||
extern inline const unsigned int Get_Pointer_PCMAC2fn(pccache)
|
||||
unsigned int pccache;
|
||||
{
|
||||
register unsigned int word asm("ax");
|
||||
unsigned int word asm("ax");
|
||||
asm("lea edx,1[%1] \n\
|
||||
xor dl,3 \n\
|
||||
movzx eax,byte ptr [edx] \n\
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#ifndef INTCALLDEFS_H
|
||||
#define INTCALLDEFS_H 1
|
||||
void cause_interruptcall(register unsigned int atom_index);
|
||||
void cause_interruptcall(unsigned int atom_index);
|
||||
#endif
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#ifndef KEYEVENTDEFS_H
|
||||
#define KEYEVENTDEFS_H 1
|
||||
#include <sys/types.h>
|
||||
void process_io_events();
|
||||
void process_io_events(void);
|
||||
void kb_trans(u_short keycode, u_short upflg);
|
||||
void taking_mouse_down(void);
|
||||
void copy_cursor(int newx, int newy);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#ifndef LDSOUTDEFS_H
|
||||
#define LDSOUTDEFS_H 1
|
||||
int sysout_loader(const char * sysout_file_name, int sys_size);
|
||||
unsigned sysout_loader(const char * sysout_file_name, unsigned sys_size);
|
||||
#endif
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
#define LINEBLT8DEFS_H 1
|
||||
#include <sys/types.h> /* for u_char */
|
||||
#include "lispemul.h" /* for LispPTR, DLword */
|
||||
void lineBlt8(DLword *srcbase, register int offset, register u_char *destl, register int width,
|
||||
void lineBlt8(DLword *srcbase, int offset, u_char *destl, int width,
|
||||
u_char color0, u_char color1, LispPTR sourcetype, LispPTR operation);
|
||||
#endif
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#define LISP2CDEFS_H 1
|
||||
#include "lispemul.h" /* for LispPTR */
|
||||
int LispStringP(LispPTR object);
|
||||
int LispStringLength(LispPTR lispstring);
|
||||
int LispStringSimpleLength(LispPTR lispstring);
|
||||
void LispStringToCStr(LispPTR lispstring, char *cstring);
|
||||
int LispIntToCInt(LispPTR lispint);
|
||||
LispPTR CIntToLispInt(int cint);
|
||||
|
||||
118
inc/lispemul.h
118
inc/lispemul.h
@@ -9,7 +9,9 @@
|
||||
/* Manufactured in the United States of America. */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
#include "version.h" /* for BIGVM, BIGATOMS, UNSIGNED, UNALIGNED_FETCH_OK */
|
||||
#include "version.h"
|
||||
|
||||
#include "lispmap.h" // for S_POSITIVE
|
||||
|
||||
#ifndef BYTESWAP
|
||||
/*** Normal byte-order type decls */
|
||||
@@ -82,17 +84,17 @@ typedef struct interrupt_state_2 { /* alternate view of the interrupt state */
|
||||
} INTSTAT2;
|
||||
|
||||
struct state {
|
||||
DLword *ivar; /* + 0 */
|
||||
DLword *pvar; /* + 4 */
|
||||
DLword *csp; /* + 8 */
|
||||
LispPTR tosvalue; /* + 12 */
|
||||
ByteCode *currentpc; /* + 16 */
|
||||
struct fnhead *currentfunc; /* + 20*/
|
||||
DLword *endofstack; /* + 24*/
|
||||
UNSIGNED irqcheck; /* + 28 */
|
||||
UNSIGNED irqend; /* + 32 */
|
||||
LispPTR scratch_cstk; /* + 34 */
|
||||
int errorexit; /* + 38 */
|
||||
DLword *ivar;
|
||||
DLword *pvar;
|
||||
DLword *csp;
|
||||
ByteCode *currentpc;
|
||||
struct fnhead *currentfunc;
|
||||
DLword *endofstack;
|
||||
UNSIGNED irqcheck;
|
||||
UNSIGNED irqend;
|
||||
LispPTR tosvalue;
|
||||
LispPTR scratch_cstk;
|
||||
int errorexit;
|
||||
};
|
||||
|
||||
/***** Get_DLword(ptr) ptr is char* ***/
|
||||
@@ -140,12 +142,6 @@ typedef struct wbits {
|
||||
unsigned LSB : 1;
|
||||
} WBITS;
|
||||
|
||||
typedef struct lbits {
|
||||
unsigned xMSB : 1;
|
||||
unsigned MIDDLE : 30;
|
||||
unsigned LSB : 1;
|
||||
} LBITS;
|
||||
|
||||
#define PUTBASEBIT68K(base68k, offset, bitvalue) \
|
||||
do { \
|
||||
if (bitvalue) \
|
||||
@@ -226,17 +222,17 @@ typedef struct interrupt_state_2 { /* alternate view of the interrupt state */
|
||||
} INTSTAT2;
|
||||
|
||||
struct state {
|
||||
DLword *ivar; /* + 0 */
|
||||
DLword *pvar; /* + 4 */
|
||||
DLword *csp; /* + 8 */
|
||||
LispPTR tosvalue; /* + 12 */
|
||||
ByteCode *currentpc; /* + 16 */
|
||||
struct fnhead *currentfunc; /* + 20*/
|
||||
DLword *endofstack; /* + 24*/
|
||||
UNSIGNED irqcheck; /* + 28 */
|
||||
UNSIGNED irqend; /* + 32 */
|
||||
LispPTR scratch_cstk; /* + 34 */
|
||||
int errorexit; /* + 38 */
|
||||
DLword *ivar;
|
||||
DLword *pvar;
|
||||
DLword *csp;
|
||||
ByteCode *currentpc;
|
||||
struct fnhead *currentfunc;
|
||||
DLword *endofstack;
|
||||
UNSIGNED irqcheck;
|
||||
UNSIGNED irqend;
|
||||
LispPTR tosvalue;
|
||||
LispPTR scratch_cstk;
|
||||
int errorexit;
|
||||
};
|
||||
|
||||
/* Fetching 2 bytes to make a word -- always do it the hard way */
|
||||
@@ -289,12 +285,6 @@ typedef struct wbits {
|
||||
USHORT xMSB : 1;
|
||||
} WBITS;
|
||||
|
||||
typedef struct lbits {
|
||||
unsigned LSB : 1;
|
||||
unsigned MIDDLE : 30;
|
||||
unsigned xMSB : 1; /* xMSB b/c HPUX defined MSB in a header */
|
||||
} LBITS;
|
||||
|
||||
#define PUTBASEBIT68K(base68k, offset, bitvalue) \
|
||||
do { \
|
||||
UNSIGNED real68kbase; \
|
||||
@@ -316,19 +306,18 @@ typedef struct lbits {
|
||||
|
||||
extern struct state MachineState;
|
||||
|
||||
#define MState (&MachineState)
|
||||
#define CURRENTFX ((struct frameex1 *)(((DLword *)PVar) - FRAMESIZE))
|
||||
#define IVar (MState->ivar)
|
||||
#define PVar (MState->pvar)
|
||||
#define CurrentStackPTR (MState->csp)
|
||||
#define TopOfStack (MState->tosvalue)
|
||||
#define PC (MState->currentpc)
|
||||
#define FuncObj (MState->currentfunc)
|
||||
#define EndSTKP (MState->endofstack)
|
||||
#define Irq_Stk_Check (MState->irqcheck)
|
||||
#define Irq_Stk_End (MState->irqend)
|
||||
#define Scratch_CSTK (MState->scratch_cstk)
|
||||
#define Error_Exit (MState->errorexit)
|
||||
#define CURRENTFX ((struct frameex1 *)(void *)(((DLword *)PVar) - FRAMESIZE))
|
||||
#define IVar (MachineState.ivar)
|
||||
#define PVar (MachineState.pvar)
|
||||
#define CurrentStackPTR (MachineState.csp)
|
||||
#define TopOfStack (MachineState.tosvalue)
|
||||
#define PC (MachineState.currentpc)
|
||||
#define FuncObj (MachineState.currentfunc)
|
||||
#define EndSTKP (MachineState.endofstack)
|
||||
#define Irq_Stk_Check (MachineState.irqcheck)
|
||||
#define Irq_Stk_End (MachineState.irqend)
|
||||
#define Scratch_CSTK (MachineState.scratch_cstk)
|
||||
#define Error_Exit (MachineState.errorexit)
|
||||
|
||||
/****************************************************
|
||||
MakeAddr:
|
||||
@@ -355,23 +344,33 @@ GetLongWord:
|
||||
*****************************************************/
|
||||
#define GetLongWord(address) (*((LispPTR *)(address)))
|
||||
|
||||
/* The stack is maintained as a DLword* pointer, carefully incremented
|
||||
* and decremented by 2 (= 4 bytes), and mostly accessed as a LispPTR*
|
||||
* to fetch 4-byte cells. There are a few places where items are
|
||||
* accessed as 2 separate DLwords, so don't be tempted to blindly replace
|
||||
* the DLword* declaration by a LispPTR*. The (void *) cast discourages
|
||||
* the compiler from complaining about a required upgrade in the
|
||||
* alignment when we know(!) that it will always point to an
|
||||
* appropriate boundary.
|
||||
*/
|
||||
|
||||
/****************************************************
|
||||
PopCStack:
|
||||
#define PopCStack {TopOfStack = *((LispPTR *)(--CurrentStackPTR)); --CurrentStackPTR;}
|
||||
*****************************************************/
|
||||
#define PopCStack \
|
||||
do { \
|
||||
TopOfStack = *((LispPTR *)(CurrentStackPTR)); \
|
||||
TopOfStack = *((LispPTR *)(void *)(CurrentStackPTR)); \
|
||||
CurrentStackPTR -= 2; \
|
||||
} while (0)
|
||||
|
||||
/****************************************************
|
||||
PopStackTo: CSTK -> Place
|
||||
#define PopStackTo(Place) {Place= *((LispPTR *)(--CurrentStackPTR)); CurrentStackPTR--; }
|
||||
#define PopStackTo(Place) {Place= *((LispPTR *)(void *)(--CurrentStackPTR)); CurrentStackPTR--; }
|
||||
*****************************************************/
|
||||
#define PopStackTo(Place) \
|
||||
do { \
|
||||
(Place) = *((LispPTR *)(CurrentStackPTR)); \
|
||||
(Place) = *((LispPTR *)(void *)(CurrentStackPTR)); \
|
||||
CurrentStackPTR -= 2; \
|
||||
} while (0)
|
||||
|
||||
@@ -382,7 +381,7 @@ PushCStack:
|
||||
#define PushCStack \
|
||||
do { \
|
||||
CurrentStackPTR += 2; \
|
||||
*((LispPTR *)(CurrentStackPTR)) = TopOfStack; \
|
||||
*((LispPTR *)(void *)(CurrentStackPTR)) = TopOfStack; \
|
||||
} while (0)
|
||||
|
||||
/****************************************************
|
||||
@@ -392,14 +391,14 @@ PushStack:
|
||||
#define PushStack(x) \
|
||||
do { \
|
||||
CurrentStackPTR += 2; \
|
||||
*((LispPTR *)(CurrentStackPTR)) = x; \
|
||||
*((LispPTR *)(void *)(CurrentStackPTR)) = x; \
|
||||
} while (0)
|
||||
|
||||
/****************************************************
|
||||
SmashStack:
|
||||
#define SmashStack(x) (*((LispPTR *)(CurrentStackPTR-1))=x)
|
||||
*****************************************************/
|
||||
#define SmashStack(x) (*((LispPTR *)(CurrentStackPTR)) = (x))
|
||||
#define SmashStack(x) (*((LispPTR *)(void *)(CurrentStackPTR)) = (x))
|
||||
|
||||
/*********************************************************
|
||||
Get_BYTE(byteptr) byteptr: pointer to 8 bit data
|
||||
@@ -411,7 +410,7 @@ Get_BYTE(byteptr) byteptr: pointer to 8 bit data
|
||||
|
||||
/**********************************************************
|
||||
DOSTACKOVERFLOW(argnum,bytenum) if it needs hardreturn-cleanup
|
||||
then upnt to contextsw and immediately return
|
||||
then punt to contextsw and immediately return
|
||||
**********************************************************/
|
||||
#define DOSTACKOVERFLOW(argnum, bytenum) \
|
||||
do { \
|
||||
@@ -444,20 +443,21 @@ DOSTACKOVERFLOW(argnum,bytenum) if it needs hardreturn-cleanup
|
||||
/* so that it picks up where it left off after the interrupt. */
|
||||
/* */
|
||||
/* Call Interface where neg number indicates an error return */
|
||||
/* but the function returns a LispPTR and casts back to int */
|
||||
/* */
|
||||
/************************************************************************/
|
||||
|
||||
#define ERROR_EXIT(tos) \
|
||||
do { \
|
||||
TopOfStack = tos; \
|
||||
TopOfStack = (LispPTR)tos; \
|
||||
Error_Exit = 1; \
|
||||
return (-1); \
|
||||
return ((LispPTR)-1); \
|
||||
} while (0)
|
||||
#define TIMER_EXIT(tos) \
|
||||
do { \
|
||||
TopOfStack = tos; \
|
||||
TopOfStack = (LispPTR)tos; \
|
||||
Error_Exit = 1; \
|
||||
return (-2); \
|
||||
return ((LispPTR)-2); \
|
||||
} while (0)
|
||||
|
||||
#define WARN(message, operation) \
|
||||
|
||||
@@ -154,7 +154,7 @@
|
||||
#define SNEG_SIZE 0x10000
|
||||
|
||||
/* for characters */
|
||||
#define S_CHAR 0x70000
|
||||
#define S_CHARACTER 0x70000
|
||||
|
||||
/* for HTMAIN */
|
||||
#define HTMAIN_HI 22
|
||||
@@ -307,7 +307,7 @@
|
||||
#define SNEG_SIZE 0x10000
|
||||
|
||||
/* for characters */
|
||||
#define S_CHAR 0x70000
|
||||
#define S_CHARACTER 0x70000
|
||||
|
||||
#ifdef BIGVM
|
||||
/* for HTMAIN */
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user