home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Misc / CLISP-2.LHA / CLISP960530-di.lha / diffs-src-14.8.96-jch < prev    next >
Encoding:
C/C++ Source or Header  |  1996-08-15  |  110.2 KB  |  3,126 lines

  1. Only in src/: affi.d
  2. Only in src/: affi1.fas
  3. Only in src/: affi1.lib
  4. Only in src/: affi1.lsp
  5. diff -c2 src.orig/amiga.d src/amiga.d
  6. *** src.orig/amiga.d    Mon Apr 15 16:28:58 1996
  7. --- src/amiga.d    Sun Jul 21 19:17:00 1996
  8. ***************
  9. *** 27,45 ****
  10.   
  11.   
  12. - # Wir definieren dieses selbst, brauchen nur Teile von <exec/types.h>:
  13. - #define BYTE   OS_BYTE
  14. - #define UBYTE  OS_UBYTE
  15. - #define WORD   OS_WORD
  16. - #define UWORD  OS_UWORD
  17. - #define LONG   OS_LONG
  18. - #define ULONG  OS_ULONG
  19.   #include <exec/types.h>
  20. - #undef ULONG
  21. - #undef LONG
  22. - #undef UWORD
  23. - #undef WORD
  24. - #undef UBYTE
  25. - #undef BYTE
  26.   #include <exec/memory.h>         # für Allocate()-Deklaration, MEMF_24BITDMA
  27.   #include <exec/execbase.h>       # für SysBase, AFF_680x0
  28. --- 27,31 ----
  29. ***************
  30. *** 51,71 ****
  31.   #endif
  32.   
  33. ! #if defined(GNU_INLINES)
  34. !   # M. Wilds Prototypen inline/?*.h weichen von den offiziellen ab!
  35. !   #define ASTRING  STRPTR
  36. !   #ifndef GNU_INLINES_LATE
  37. !     #include <inline/exec.h>
  38. !     #include <inline/dos.h>
  39. !   #endif
  40. ! #else
  41. !   # das sind die offiziellen Prototypen:
  42. !   #define ASTRING  UBYTE*
  43. !   #ifdef ANSI
  44. !     #include <clib/exec_protos.h>
  45. !     #include <clib/dos_protos.h>
  46. !   #endif
  47.   #endif
  48.   
  49.   
  50.   # BCPL-Pointer (hier BCPL* genannt, Typ BPTR) sind durch 4 teilbare Adressen,
  51.   # die durch 4 dividiert wurden.
  52. --- 37,55 ----
  53.   #endif
  54.   
  55. ! #ifdef GNU
  56. !   # Expandiere alle Betriebssystem-Aufrufe inline, mit Kamil Iskra inlines.h
  57. !   #define GNU_INLINES
  58.   #endif
  59.   
  60. + #define Class  OS_Class          # Shadowing intuition/classes.h
  61. + # das sind die Compiler-spezifischen Prototypen:
  62. + # Bei GCC werden dabei inline/...h gelesen, das sind Macros
  63. + #define ASTRING  UBYTE*
  64. + #include <proto/exec.h>
  65. + #include <proto/dos.h>
  66.   
  67. + #undef Class
  68.   # BCPL-Pointer (hier BCPL* genannt, Typ BPTR) sind durch 4 teilbare Adressen,
  69.   # die durch 4 dividiert wurden.
  70. ***************
  71. *** 86,89 ****
  72. --- 70,83 ----
  73.   
  74.   
  75. + # Information über die eigene Task.
  76. +   extern struct ExecBase * const SysBase;
  77. + # wird verwendet von SPVW
  78. + # Versionsabfragen:
  79. +   extern struct DosLibrary * const DOSBase;
  80. + # wird verwendet von STREAM
  81.   # Deklaration von Typen von Ein-/Ausgabe-Parametern von Betriebssystemfunktionen
  82.     #define CONST
  83. ***************
  84. *** 98,101 ****
  85. --- 92,98 ----
  86.   
  87.   
  88. + # Die Inlines sind jetzt Macros, also können Funktionen nicht mehr deklariert werden
  89. + #if !defined(GNU_INLINES)
  90.   # Holt das aktuelle Datum und die aktuelle Uhrzeit.
  91.   # DateStamp(&datestamp);
  92. ***************
  93. *** 119,122 ****
  94. --- 116,124 ----
  95.   # wird verwendet von ERROR, PATHNAME
  96.   
  97. + # Setzt die nächste Fehlernummer.
  98. + # olderrno = SetIoErr(errno);
  99. +   extern LONG SetIoErr (LONG);
  100. + # wird verwendet von ERROR
  101.   
  102.   # Öffnet eine Datei.
  103. ***************
  104. *** 130,138 ****
  105.   
  106.   # Schließt eine Datei.
  107. ! # Close(handle)
  108.   # > handle: Handle eines offenen Files
  109. ! # < ergebnis: keins!
  110.     extern LONG Close (Handle handle); # siehe dos.library/Close
  111. !   #define CLOSE(handle)  (Close(handle),0)
  112.   # wird verwendet von SPVW, PATHNAME, STREAM
  113.   
  114. --- 132,140 ----
  115.   
  116.   # Schließt eine Datei.
  117. ! # ergebnis = Close(handle)
  118.   # > handle: Handle eines offenen Files
  119. ! # < ergebnis: NULL bei Fehler.
  120.     extern LONG Close (Handle handle); # siehe dos.library/Close
  121. !   # define CLOSE(handle)  (Close(handle),0)
  122.   # wird verwendet von SPVW, PATHNAME, STREAM
  123.   
  124. ***************
  125. *** 281,285 ****
  126.   # WaitForChar(handle,timeout)
  127.   # > handle: Handle eines (offenen) interaktiven Files
  128. ! # > timeout: maximale Wartezeit (>0), in Mikrosekunden
  129.   # < ergebnis: gibt an, ob bis zum Ende der Wartezeit ein Zeichen lesbar ist.
  130.     extern LONG WaitForChar (Handle handle, long timeout);
  131. --- 283,287 ----
  132.   # WaitForChar(handle,timeout)
  133.   # > handle: Handle eines (offenen) interaktiven Files
  134. ! # > timeout: maximale Wartezeit (>=0), in Mikrosekunden
  135.   # < ergebnis: gibt an, ob bis zum Ende der Wartezeit ein Zeichen lesbar ist.
  136.     extern LONG WaitForChar (Handle handle, long timeout);
  137. ***************
  138. *** 291,296 ****
  139.   # > mode: 1 für RAW, 0 für CON
  140.   # < ergebnis: 0 falls nicht erfolgreich (Modus ließ sich nicht umsetzen)
  141. - # Diese Funktion gab es vor dos.library 2.0 nicht, deswegen wird stattdessen
  142. - # setmode() aus Jörgs Library jchlib/misc/setmode.c oder stream.d verwendet.
  143.     extern LONG SetMode (BPTR handle, long mode); # siehe dos.library/SetMode
  144.   # wird verwendet von STREAM
  145. --- 293,296 ----
  146. ***************
  147. *** 313,320 ****
  148.   
  149.   
  150. - # Information über die eigene Task.
  151. -   extern struct ExecBase * SysBase;
  152. - # wird verwendet von SPVW
  153.   # Liefert einen Pointer auf die eigene Task.
  154.   # FindTask(NULL)
  155. --- 313,316 ----
  156. ***************
  157. *** 361,364 ****
  158. --- 357,365 ----
  159.   # wird verwendet von DEBUG
  160.   
  161. + #endif # GNU_INLINES
  162. + # ignoriere Ergebnis, was sollen wir tun können?
  163. +   #define CLOSE(handle)  (Close(handle),0)
  164.   # Sofortiger Programmabbruch, Sprung in den Debugger
  165.     #if defined(GNU) && 0 # Jörg mag das nicht so sehr bis überhaupt nicht
  166. ***************
  167. *** 371,376 ****
  168.       # non fermés, des «Lock» alloués, etc.                       Jörg 7.1.1993
  169.       #define abort()  \
  170. !       { asciz_out(CRLFstring "CLISP panic! (going into endless loop)" CRLFstring); \
  171. !         Wait(0L);                                                                  \
  172.         }
  173.     #else
  174. --- 372,377 ----
  175.       # non fermés, des «Lock» alloués, etc.                       Jörg 7.1.1993
  176.       #define abort()  \
  177. !       { asciz_out(CRLFstring "CLISP panic! (halting)" CRLFstring); \
  178. !         Wait(0L);                                                  \
  179.         }
  180.     #else
  181. ***************
  182. *** 381,389 ****
  183.     #endif
  184.   # wird verwendet von EVAL, IO
  185. - # Versionsabfragen:
  186. -   extern struct DosLibrary * DOSBase;
  187. - # wird verwendet von STREAM
  188.   
  189.   
  190. --- 382,385 ----
  191. diff -c2 src.orig/amiga2.d src/amiga2.d
  192. *** src.orig/amiga2.d    Mon Apr 15 16:28:58 1996
  193. --- src/amiga2.d    Wed Jun 12 07:14:33 1996
  194. ***************
  195. *** 1,6 ****
  196.   # Include-File: Amiga-Spezifisches, das nur von wenigen Modulen benötigt wird
  197. ! # Jörg Höhle 4.3.1995
  198.   
  199.   
  200.   # Verhindert Multitasking kurzzeitig.
  201.   # Forbid(); ... Permit();
  202. --- 1,11 ----
  203.   # Include-File: Amiga-Spezifisches, das nur von wenigen Modulen benötigt wird
  204. ! # Jörg Höhle 12.6.1996
  205.   
  206.   
  207. + #include <proto/alib.h>
  208. + # Die Inlines sind jetzt Macros, also können Funktionen nicht mehr deklariert werden
  209. + #if !defined(GNU_INLINES)
  210.   # Verhindert Multitasking kurzzeitig.
  211.   # Forbid(); ... Permit();
  212. ***************
  213. *** 87,90 ****
  214. --- 92,97 ----
  215.   #endif
  216.   
  217. + #endif # GNU_INLINES
  218.   
  219.   #ifdef REXX
  220. ***************
  221. *** 94,104 ****
  222.   
  223.   #include <rexx/rxslib.h>
  224. ! #if defined(GNU_INLINES)
  225. !   #include <inline/rexxsyslib.h>
  226. ! #else
  227. !   #ifdef ANSI
  228. !     #include <clib/rexxsyslib_protos.h>
  229. !   #endif
  230. ! #endif
  231.   
  232.   # Arexx-Messages haben ein spezielles Aussehen:
  233. --- 101,107 ----
  234.   
  235.   #include <rexx/rxslib.h>
  236. ! #include <proto/rexxsyslib.h>
  237. ! #if !defined(GNU_INLINES)
  238.   
  239.   # Arexx-Messages haben ein spezielles Aussehen:
  240. ***************
  241. *** 159,162 ****
  242. --- 162,167 ----
  243.     extern BOOL FillRexxMsg (struct RexxMsg * msg, ULONG argcount, ULONG mask); # siehe rexxsyslib.library/FillRexxMsg
  244.   # wird verwendet von
  245. + #endif # GNU_INLINES
  246.   
  247.   #define RXERRORIMGONE 100L
  248. Only in src/: ari68000.d
  249. Only in src/: ari68000.mit.d
  250. Only in src/: ari68000.mot.d
  251. Only in src/: ari68020.d
  252. Only in src/: ari68020.mit.d
  253. Only in src/: ari68020.mot.d
  254. Only in src/: aridecl.d
  255. Only in src/: arilev0.d
  256. Only in src/: arilev1.d
  257. Only in src/: arilev1c.d
  258. Only in src/: arilev1e.d
  259. Only in src/: arilev1i.d
  260. Only in src/: array.d
  261. Only in src/: avl.d
  262. Only in src/: backquot.fas
  263. Only in src/: backquot.lib
  264. Only in src/: backquot.lsp
  265. Only in src/: bytecode.d
  266. diff -c2 src.orig/cfgamiga.lsp src/cfgamiga.lsp
  267. *** src.orig/cfgamiga.lsp    Mon Apr 15 16:29:16 1996
  268. --- src/cfgamiga.lsp    Wed Jul 24 09:47:10 1996
  269. ***************
  270. *** 8,12 ****
  271.   
  272.   (defun machine-type () "Amiga")
  273. ! (defun machine-version () "Amiga, OS 1.2-3.1")
  274.   (defun machine-instance () "Heinrich Mustermanns Amiga")
  275.                             ;"Smith's Amiga"
  276. --- 8,12 ----
  277.   
  278.   (defun machine-type () "Amiga")
  279. ! (defun machine-version () "Amiga, OS 2.04-3.1")
  280.   (defun machine-instance () "Heinrich Mustermanns Amiga")
  281.                             ;"Smith's Amiga"
  282. ***************
  283. *** 23,27 ****
  284.   ;; DEUTSCH: Der Name des Editors:
  285.   ;; FRANCAIS: Nom de l'éditeur :
  286. ! (defparameter *editor* "ed")
  287.   
  288.   ;; ENGLISH: The temporary file LISP creates for editing:
  289. --- 23,28 ----
  290.   ;; DEUTSCH: Der Name des Editors:
  291.   ;; FRANCAIS: Nom de l'éditeur :
  292. ! (defparameter *editor* "emacs")
  293. ! (defun editor-name () (or (sys::getenv "EDITOR") *editor*))
  294.   
  295.   ;; ENGLISH: The temporary file LISP creates for editing:
  296. Only in src/: charstrg.d
  297. Only in src/: clos.fas
  298. Only in src/: clos.lib
  299. Only in src/: clos.lsp
  300. Only in src/: compelem.d
  301. Only in src/: compiler.fas
  302. Only in src/: compiler.lib
  303. diff -c2 src.orig/compiler.lsp src/compiler.lsp
  304. *** src.orig/compiler.lsp    Fri May 03 14:40:26 1996
  305. --- src/compiler.lsp    Wed Aug 07 01:19:14 1996
  306. ***************
  307. *** 3263,3268 ****
  308.     (if (atom funname)
  309.       (values (symbol-name funname) (symbol-package funname))
  310. !     (values (concatenate 'string "(" (symbol-name (first funname)) " "
  311. !                                      (symbol-name (second funname)) ")"
  312.               )
  313.               (symbol-package (second funname))
  314. --- 3263,3268 ----
  315.     (if (atom funname)
  316.       (values (symbol-name funname) (symbol-package funname))
  317. !     (values (string-concat "(" (symbol-name (first funname)) " "
  318. !                                (symbol-name (second funname)) ")"
  319.               )
  320.               (symbol-package (second funname))
  321. ***************
  322. *** 3283,3287 ****
  323.         )     )
  324.         ; neues Symbol bilden:
  325. !       (let ((new-name (concatenate 'string name "-" suffix)))
  326.           (if pack (intern new-name pack) (make-symbol new-name))
  327.   ) ) ) )
  328. --- 3283,3287 ----
  329.         )     )
  330.         ; neues Symbol bilden:
  331. !       (let ((new-name (string-concat name "-" suffix)))
  332.           (if pack (intern new-name pack) (make-symbol new-name))
  333.   ) ) ) )
  334. ***************
  335. *** 3321,3331 ****
  336.   (defun c-warn (cstring &rest args)
  337.     (setq cstring
  338. !     (concatenate 'string 
  339. !                  #L{
  340. !                  DEUTSCH "~%WARNUNG~@[ in Funktion ~S~]~A :~%"
  341. !                  ENGLISH "~%WARNING~@[ in function ~S~]~A :~%"
  342. !                  FRANCAIS "~%AVERTISSEMENT~@[ dans la fonction ~S~]~A :~%"
  343. !                  }
  344. !                  cstring
  345.     ) )
  346.     (incf *warning-count*)
  347. --- 3321,3331 ----
  348.   (defun c-warn (cstring &rest args)
  349.     (setq cstring
  350. !     (string-concat 
  351. !      #L{
  352. !      DEUTSCH "~%WARNUNG~@[ in Funktion ~S~]~A :~%"
  353. !      ENGLISH "~%WARNING~@[ in function ~S~]~A :~%"
  354. !      FRANCAIS "~%AVERTISSEMENT~@[ dans la fonction ~S~]~A :~%"
  355. !      }
  356. !      cstring
  357.     ) )
  358.     (incf *warning-count*)
  359. ***************
  360. *** 12104,12108 ****
  361.       (flet ((PC->label-a (PC)
  362.                (cons PC (make-symbol
  363. !                         (concatenate 'string "L" (prin1-to-string PC))
  364.              ) )        )
  365.              (next-byte () (incf PC) (pop byte-list))
  366. --- 12104,12108 ----
  367.       (flet ((PC->label-a (PC)
  368.                (cons PC (make-symbol
  369. !                         (string-concat "L" (prin1-to-string PC))
  370.              ) )        )
  371.              (next-byte () (incf PC) (pop byte-list))
  372. Only in src/: comptran.d
  373. Only in src/: conditio.fas
  374. Only in src/: conditio.lib
  375. Only in src/: conditio.lsp
  376. Only in src/: config.fas
  377. Only in src/: config.lib
  378. diff -c2 src.orig/config.lsp src/config.lsp
  379. *** src.orig/config.lsp    Mon Apr 15 16:29:16 1996
  380. --- src/config.lsp    Wed Jul 24 09:47:10 1996
  381. ***************
  382. *** 8,12 ****
  383.   
  384.   (defun machine-type () "Amiga")
  385. ! (defun machine-version () "Amiga, OS 1.2-3.1")
  386.   (defun machine-instance () "Heinrich Mustermanns Amiga")
  387.                             ;"Smith's Amiga"
  388. --- 8,12 ----
  389.   
  390.   (defun machine-type () "Amiga")
  391. ! (defun machine-version () "Amiga, OS 2.04-3.1")
  392.   (defun machine-instance () "Heinrich Mustermanns Amiga")
  393.                             ;"Smith's Amiga"
  394. ***************
  395. *** 23,27 ****
  396.   ;; DEUTSCH: Der Name des Editors:
  397.   ;; FRANCAIS: Nom de l'éditeur :
  398. ! (defparameter *editor* "ed")
  399.   
  400.   ;; ENGLISH: The temporary file LISP creates for editing:
  401. --- 23,28 ----
  402.   ;; DEUTSCH: Der Name des Editors:
  403.   ;; FRANCAIS: Nom de l'éditeur :
  404. ! (defparameter *editor* "emacs")
  405. ! (defun editor-name () (or (sys::getenv "EDITOR") *editor*))
  406.   
  407.   ;; ENGLISH: The temporary file LISP creates for editing:
  408. Only in src/: constobj.d
  409. Only in src/: constpack.d
  410. diff -c2 src.orig/constsym.d src/constsym.d
  411. *** src.orig/constsym.d    Fri Apr 26 14:56:56 1996
  412. --- src/constsym.d    Tue Jun 11 19:50:00 1996
  413. ***************
  414. *** 950,954 ****
  415.   #ifdef AMIGAOS
  416.   LISPSYM(foreign_library,"FOREIGN-LIBRARY",ffi)
  417. ! LISPSYM(foreign_library_variable,"FOREIGN-LIBRARY-VARIABLE",ffi)
  418.   LISPSYM(foreign_library_function,"FOREIGN-LIBRARY-FUNCTION",ffi)
  419.   #endif
  420. --- 950,954 ----
  421.   #ifdef AMIGAOS
  422.   LISPSYM(foreign_library,"FOREIGN-LIBRARY",ffi)
  423. ! LISPSYM(foreign_library_variable,"FOREIGN-ADDRESS-VARIABLE",ffi)
  424.   LISPSYM(foreign_library_function,"FOREIGN-LIBRARY-FUNCTION",ffi)
  425.   #endif
  426. Only in src/: control.d
  427. Only in src/: dbxtypes.d
  428. Only in src/: debug.d
  429. Only in src/: defmacro.fas
  430. Only in src/: defmacro.lib
  431. Only in src/: defmacro.lsp
  432. Only in src/: defs1.fas
  433. Only in src/: defs1.lib
  434. Only in src/: defs1.lsp
  435. Only in src/: defs2.fas
  436. Only in src/: defs2.lib
  437. Only in src/: defs2.lsp
  438. Only in src/: defs3.fas
  439. Only in src/: defs3.lib
  440. Only in src/: defs3.lsp
  441. Only in src/: defseq.fas
  442. Only in src/: defseq.lib
  443. Only in src/: defseq.lsp
  444. Only in src/: defstruc.fas
  445. Only in src/: defstruc.lib
  446. Only in src/: defstruc.lsp
  447. Only in src/: dfloat.d
  448. Only in src/: disassem.lsp
  449. Only in src/: editor.fas
  450. Only in src/: editor.lib
  451. diff -c2 src.orig/editor.lsp src/editor.lsp
  452. *** src.orig/editor.lsp    Mon Apr 15 16:29:42 1996
  453. --- src/editor.lsp    Wed Jul 24 09:37:19 1996
  454. ***************
  455. *** 19,25 ****
  456.   
  457.   (defmacro with-window (&body body)
  458. !   `(LET* ((*WINDOW* (SCREEN:MAKE-WINDOW))
  459. !           #+AMIGA (*KEYBOARD-INPUT* (SCREEN::MAKE-KEYBOARD-STREAM *WINDOW*))
  460. !          )
  461.        (UNWIND-PROTECT
  462.          (MULTIPLE-VALUE-BIND (GLOBAL-SCREEN-HEIGHT GLOBAL-SCREEN-WIDTH) (SCREEN:WINDOW-SIZE *WINDOW*)
  463. --- 19,23 ----
  464.   
  465.   (defmacro with-window (&body body)
  466. !   `(LET* ((*WINDOW* (SCREEN:MAKE-WINDOW)))
  467.        (UNWIND-PROTECT
  468.          (MULTIPLE-VALUE-BIND (GLOBAL-SCREEN-HEIGHT GLOBAL-SCREEN-WIDTH) (SCREEN:WINDOW-SIZE *WINDOW*)
  469. ***************
  470. *** 27,31 ****
  471.              ,@body
  472.          ) )
  473. -        #+AMIGA (CLOSE *KEYBOARD-INPUT*)
  474.          #+AMIGA (SCREEN:WINDOW-CURSOR-ON *WINDOW*)
  475.          (CLOSE *WINDOW*)
  476. --- 25,28 ----
  477. ***************
  478. *** 3035,3046 ****
  479.   )
  480.   (bind-key '(#\Escape #\Code28) ; c-[, c-\
  481. !                       :control '(:LEAVE) '
  482. !                       #L{
  483. !                       DEUTSCH "Editor verlassen"
  484. !                       ENGLISH "quit editor"
  485. !                       FRANCAIS "quitter l'éditeur"
  486. !                       }
  487.   )
  488. ! (bind-key #\Code29    :control '(:TOP 0) '(C-H-doc 0)) ; c-]
  489.   ; #\Code30 = c-^ leer
  490.   ; #\Code31 = c-_ leer
  491. --- 3032,3043 ----
  492.   )
  493.   (bind-key '(#\Escape #\Code28) ; c-[, c-\
  494. !           :control '(:LEAVE) '
  495. !           #L{
  496. !           DEUTSCH "Editor verlassen"
  497. !           ENGLISH "quit editor"
  498. !           FRANCAIS "quitter l'éditeur"
  499. !           }
  500.   )
  501. ! (bind-key '(#\Code29 #\C-])   :control '(:TOP 0) '(C-H-doc 0)) ; c-]
  502.   ; #\Code30 = c-^ leer
  503.   ; #\Code31 = c-_ leer
  504. diff -c2 src.orig/error.d src/error.d
  505. *** src.orig/error.d    Wed May 22 16:09:50 1996
  506. --- src/error.d    Sun Jul 21 19:12:25 1996
  507. ***************
  508. *** 319,327 ****
  509.   #ifdef AMIGAOS
  510.     # Behandlung von AMIGAOS-Fehlern
  511. !   # OS_error();
  512.     # > IoErr(): Fehlercode
  513. !     nonreturning_function(global, OS_error, (void));
  514. !     global void OS_error ()
  515. !       { var reg1 uintC errcode = IoErr(); # Fehlernummer
  516.           end_system_call();
  517.           clr_break_sem_4(); # keine AMIGAOS-Operation mehr aktiv
  518. --- 319,668 ----
  519.   #ifdef AMIGAOS
  520.     # Behandlung von AMIGAOS-Fehlern
  521. !   # OS_error_();
  522.     # > IoErr(): Fehlercode
  523. !     nonreturning_function(global, OS_error_, (void));
  524. !   # Tabelle der Fehlermeldungen und ihrer Namen:
  525. !     local const char* error100_msg_table[23][2];
  526. !     local const char* error200_msg_table[44][2];
  527. !     local const char* error300_msg_table[6][2];
  528. !   # Initialisierung der Tabelle:
  529. !     global int init_errormsg_table (void);
  530. !     global int init_errormsg_table()
  531. !       {
  532. !         # A remanescence of pre-gettext times
  533. !         #ifdef LANGUAGE_STATIC
  534. !           #define lang3(english,deutsch,francais)  ENGLISH ? english : DEUTSCH ? deutsch : FRANCAIS ? francais : ""
  535. !           #define lang1(string)  string
  536. !           #define langcount  1
  537. !           #define language  0
  538. !         #else
  539. !           #define lang3(english,deutsch,francais)  english, deutsch, francais
  540. !           #define lang1(string)  string, string, string
  541. !           #define langcount  3
  542. !         #endif
  543. !         error100_msg_table[0][0]=""; error100_msg_table[0][1]="";
  544. !         error100_msg_table[1][0]=""; error100_msg_table[1][1]="";
  545. !         error100_msg_table[2][0]=""; error100_msg_table[2][1]="";
  546. !         error100_msg_table[3][0]="ERROR_NO_FREE_STORE";
  547. !         //: DEUTSCH "nicht genügend Speicher vorhanden"
  548. !         //: ENGLISH "not enough memory available"
  549. !         //: FRANCAIS "Pas assez de mémoire"
  550. !         error100_msg_table[3][1]=GETTEXT("not enough memory available");
  551. !         error100_msg_table[4][0]=""; error100_msg_table[4][1]="";
  552. !         error100_msg_table[5][0]="ERROR_TASK_TABLE_FULL";
  553. !         //: DEUTSCH "keine weiteren CLI Prozesse mehr"
  554. !         //: ENGLISH "process table full"
  555. !         //: FRANCAIS "La table des processus est pleine"
  556. !         error100_msg_table[5][1]=GETTEXT("process table full");
  557. !         error100_msg_table[6][0]=""; error100_msg_table[6][1]="";
  558. !         error100_msg_table[7][0]=""; error100_msg_table[7][1]="";
  559. !         error100_msg_table[8][0]=""; error100_msg_table[8][1]="";
  560. !         error100_msg_table[9][0]=""; error100_msg_table[9][1]="";
  561. !         error100_msg_table[10][0]=""; error100_msg_table[10][1]="";
  562. !         error100_msg_table[11][0]=""; error100_msg_table[11][1]="";
  563. !         error100_msg_table[12][0]=""; error100_msg_table[12][1]="";
  564. !         error100_msg_table[13][0]=""; error100_msg_table[13][1]="";
  565. !         error100_msg_table[14][0]="ERROR_BAD_TEMPLATE";
  566. !         //: DEUTSCH "ungültiges Muster"
  567. !         //: ENGLISH "bad template"
  568. !         //: FRANCAIS "mauvais schéma"
  569. !         error100_msg_table[14][1]=GETTEXT("bad template");
  570. !         error100_msg_table[15][0]="ERROR_BAD_NUMBER";
  571. !         //: DEUTSCH "ungültige Zahl"
  572. !         //: ENGLISH "bad number"
  573. !         //: FRANCAIS "mauvais nombre"
  574. !         error100_msg_table[15][1]=GETTEXT("bad number");
  575. !         error100_msg_table[16][0]="ERROR_REQUIRED_ARG_MISSING";
  576. !         //: DEUTSCH "benötigtes Schlüsselwort nicht vorhanden"
  577. !         //: ENGLISH "required argument missing"
  578. !         //: FRANCAIS "mot clé manque"
  579. !         error100_msg_table[16][1]=GETTEXT("required argument missing");
  580. !         error100_msg_table[17][0]="ERROR_KEY_NEEDS_ARG";
  581. !         //: DEUTSCH "kein Wert nach Schlüsselwort vorhanden"
  582. !         //: ENGLISH "value after keyword missing"
  583. !         //: FRANCAIS "mot clé sans valeur"
  584. !         error100_msg_table[17][1]=GETTEXT("value after keyword missing");
  585. !         error100_msg_table[18][0]="ERROR_TOO_MANY_ARGS";
  586. !         //: DEUTSCH "falsche Anzahl Argumente"
  587. !         //: ENGLISH "wrong number of arguments"
  588. !         //: FRANCAIS "mauvais nombre d'arguments"
  589. !         error100_msg_table[18][1]=GETTEXT("wrong number of arguments");
  590. !  
  591. !         error100_msg_table[19][0]="ERROR_UNMATCHED_QUOTES";
  592. !         //: DEUTSCH "ausstehende Anführungszeichen"
  593. !         //: ENGLISH "unmatched quotes"
  594. !         //: FRANCAIS "guillemets non terminés"
  595. !         error100_msg_table[19][1]=GETTEXT("unmatched quotes");
  596. !         error100_msg_table[20][0]="ERROR_LINE_TOO_LONG";
  597. !         //: DEUTSCH "ungültige Zeile oder Zeile zu lang"
  598. !         //: ENGLISH "argument line invalid or too long"
  599. !         //: FRANCAIS "ligne est mauvaise ou trop longue"
  600. !         error100_msg_table[20][1]="argument line invalid or too long";
  601. !         error100_msg_table[21][0]="ERROR_FILE_NOT_OBJECT";
  602. !         //: DEUTSCH "Datei ist nicht ausführbar"
  603. !         //: ENGLISH "file is not executable"
  604. !         //: FRANCAIS "fichier non exécutable"
  605. !         error100_msg_table[21][1]=GETTEXT("file is not executable");
  606. !         error100_msg_table[22][0]="ERROR_INVALID_RESIDENT_LIBRARY";
  607. !         //: DEUTSCH "ungültige residente Library"
  608. !         //: ENGLISH "invalid resident library"
  609. !         //: FRANCAIS "Librarie résidente non valide"
  610. !         error100_msg_table[22][1]=GETTEXT("invalid resident library");
  611. !  
  612. !         error200_msg_table[0][0]=""; error200_msg_table[0][1]="";
  613. !         
  614. !         error200_msg_table[1][0]="ERROR_NO_DEFAULT_DIR";
  615. !         error200_msg_table[1][1]="";
  616. !         error200_msg_table[2][0]="ERROR_OBJECT_IN_USE";
  617. !         //: DEUTSCH "Objekt wird schon benutzt"
  618. !         //: ENGLISH "object is in use"
  619. !         //: FRANCAIS "l'objet est utilisé"
  620. !         error200_msg_table[2][1]=GETTEXT("object is in use");
  621. !         
  622. !         error200_msg_table[3][0]="ERROR_OBJECT_EXISTS";
  623. !         //: DEUTSCH "Objekt existiert bereits"
  624. !         //: ENGLISH "object already exists"
  625. !         //: FRANCAIS "l'objet existe déjà"
  626. !         error200_msg_table[3][1]=GETTEXT("object already exists");
  627. !         error200_msg_table[4][0]="ERROR_DIR_NOT_FOUND";
  628. !         //: DEUTSCH "Verzeichnis nicht gefunden"
  629. !         //: ENGLISH "directory not found"
  630. !         //: FRANCAIS "répertoire non trouvé"
  631. !         error200_msg_table[4][1]=GETTEXT("directory not found");
  632. !         error200_msg_table[5][0]="ERROR_OBJECT_NOT_FOUND";
  633. !         //: DEUTSCH "Objekt nicht gefunden"
  634. !         //: ENGLISH "object not found"
  635. !         //: FRANCAIS "objet non trouvé"
  636. !         error200_msg_table[5][1]=GETTEXT("object not found");
  637. !         error200_msg_table[6][0]="ERROR_BAD_STREAM_NAME";
  638. !         //: DEUTSCH "ungültige Fensterbeschreibung"
  639. !         //: ENGLISH "invalid window description"
  640. !         //: FRANCAIS "mauvais descripteur de fenêtre"
  641. !         error200_msg_table[6][1]=GETTEXT("invalid window description");
  642. !         error200_msg_table[7][0]="ERROR_OBJECT_TOO_LARGE";
  643. !         //: DEUTSCH "Objekt zu groß"
  644. !         //: ENGLISH "object too large"
  645. !         //: FRANCAIS "objet trop grand"
  646. !         error200_msg_table[7][1]=GETTEXT("object too large");
  647. !         error200_msg_table[8][0]=""; error200_msg_table[8][1]="";
  648. !         error200_msg_table[9][0]="ERROR_ACTION_NOT_KNOWN";
  649. !         //: DEUTSCH "unbekannter Pakettyp" # ??
  650. !         //: ENGLISH "packet request type unknown"
  651. !         //: FRANCAIS "Type de paquet inconnu"
  652. !         error200_msg_table[9][1]=GETTEXT("packet request type unknown");
  653. !         error200_msg_table[10][0]="ERROR_INVALID_COMPONENT_NAME";
  654. !         //: DEUTSCH "ungültiger Objektname"
  655. !         //: ENGLISH "object name invalid"
  656. !         //: FRANCAIS "nom d'objet incorrect"
  657. !         error200_msg_table[10][1]=GETTEXT("object name invalid");
  658. !         
  659. !         error200_msg_table[11][0]="ERROR_INVALID_LOCK";
  660. !         //: DEUTSCH "ungültiger Objektlock"
  661. !         //: ENGLISH "invalid object lock"
  662. !         //: FRANCAIS "«lock» invalide d'un objet"
  663. !         error200_msg_table[11][1]=GETTEXT("invalid object lock");
  664. !         error200_msg_table[12][0]="ERROR_OBJECT_WRONG_TYPE";
  665. !         //: DEUTSCH "Objekt ist nicht von benötigten Typ"
  666. !         //: ENGLISH "object is not of required type"
  667. !         //: FRANCAIS "objet de mauvais type"
  668. !         error200_msg_table[12][1]=GETTEXT("object is not of required type");
  669. !         error200_msg_table[13][0]="ERROR_DISK_NOT_VALIDATED";
  670. !         //: DEUTSCH "Datenträger ist nicht validiert"
  671. !         //: ENGLISH "disk not validated"
  672. !         //: FRANCAIS "volume non validé"
  673. !         error200_msg_table[13][1]=GETTEXT("disk not validated");
  674. !         error200_msg_table[14][0]="ERROR_DISK_WRITE_PROTECTED";
  675. !         //: DEUTSCH "Datenträger ist schreibgeschützt"
  676. !         //: ENGLISH "disk is write-protected"
  677. !         //: FRANCAIS "disquette protégée contre l'écriture"
  678. !         error200_msg_table[14][1]=GETTEXT("disk is write-protected");
  679. !         error200_msg_table[15][0]="ERROR_RENAME_ACROSS_DEVICES";
  680. !         //: DEUTSCH "rename über Laufwerke versucht"
  681. !         //: ENGLISH "rename across devices attempted"
  682. !         //: FRANCAIS "«rename» à travers des unités distinctes"
  683. !         error200_msg_table[15][1]=GETTEXT("rename across devices attempted");
  684. !         error200_msg_table[16][0]="ERROR_DIRECTORY_NOT_EMPTY";
  685. !         //: DEUTSCH "Verzeichnis ist nicht leer"
  686. !         //: ENGLISH "directory not empty"
  687. !         //: FRANCAIS "répertoire non vide"
  688. !         error200_msg_table[16][1]=GETTEXT("directory not empty");
  689. !         error200_msg_table[17][0]="ERROR_TOO_MANY_LEVELS";
  690. !         //: DEUTSCH "zu viele Verweise"
  691. !         //: ENGLISH "too many levels"
  692. !         //: FRANCAIS "trop de niveaux"
  693. !         error200_msg_table[17][1]=GETTEXT("too many levels");
  694. !         error200_msg_table[18][0]="ERROR_DEVICE_NOT_MOUNTED";
  695. !         //: DEUTSCH "Datenträger ist in keinem Laufwerk"
  696. !         //: ENGLISH "device (or volume) is not mounted"
  697. !         //: FRANCAIS "l'unité n'est dans aucun lecteur"
  698. !         error200_msg_table[18][1]=GETTEXT("device (or volume) is not mounted");
  699. !         error200_msg_table[19][0]="ERROR_SEEK_ERROR";
  700. !         //: DEUTSCH "seek schlug fehl"
  701. !         //: ENGLISH "seek failure"
  702. !         //: FRANCAIS "erreur pendant un déplacement (seek)"
  703. !         error200_msg_table[19][1]=GETTEXT("seek failure");
  704. !         error200_msg_table[20][0]="ERROR_COMMENT_TOO_BIG";
  705. !         //: DEUTSCH "Kommentar ist zu lang"
  706. !         //: ENGLISH "comment is too long"
  707. !         //: FRANCAIS "Commentaire trop long"
  708. !         error200_msg_table[20][1]=GETTEXT("comment is too long");
  709. !         error200_msg_table[21][0]="ERROR_DISK_FULL";
  710. !         //: DEUTSCH "Datenträger ist voll"
  711. !         //: ENGLISH "disk is full"
  712. !         //: FRANCAIS "support plein"
  713. !         error200_msg_table[21][1]=GETTEXT("disk is full");
  714. !         error200_msg_table[22][0]="ERROR_DELETE_PROTECTED";
  715. !         //: DEUTSCH "Datei ist gegen Löschen geschützt"
  716. !         //: ENGLISH "object is protected from deletion"
  717. !         //: FRANCAIS "objet est protégé contre l'effacement"
  718. !         error200_msg_table[22][1]=GETTEXT("object is protected from deletion");
  719. !         error200_msg_table[23][0]="ERROR_WRITE_PROTECTED";
  720. !         //: DEUTSCH "Datei ist schreibgeschützt"
  721. !         //: ENGLISH "file is write protected"
  722. !         //: FRANCAIS "fichier protégé contre l'écriture"
  723. !         error200_msg_table[23][1]=GETTEXT("file is write protected");
  724. !         error200_msg_table[24][0]="ERROR_READ_PROTECTED";
  725. !         //: DEUTSCH "Datei ist lesegeschützt"
  726. !         //: ENGLISH "file is read protected"
  727. !         //: FRANCAIS "fichier protégé contre la lecture"
  728. !         error200_msg_table[24][1]=GETTEXT("file is read protected");
  729. !         error200_msg_table[25][0]="ERROR_NOT_A_DOS_DISK";
  730. !         //: DEUTSCH "kein gültiger DOS-Datenträger"
  731. !         //: ENGLISH "not a valid DOS disk"
  732. !         //: FRANCAIS "disque non DOS"
  733. !         error200_msg_table[25][1]=GETTEXT("not a valid DOS disk");
  734. !         error200_msg_table[26][0]="ERROR_NO_DISK";
  735. !         //: DEUTSCH "kein Datenträger im Laufwerk"
  736. !         //: ENGLISH "no disk in drive"
  737. !         //: FRANCAIS "pas de disquette dans le lecteur"
  738. !         error200_msg_table[26][1]=GETTEXT("no disk in drive");
  739. !         error200_msg_table[27][0]=""; error200_msg_table[27][1]="";
  740. !         error200_msg_table[28][0]=""; error200_msg_table[28][1]="";
  741. !         error200_msg_table[29][0]=""; error200_msg_table[29][1]="";
  742. !         error200_msg_table[30][0]=""; error200_msg_table[30][1]="";
  743. !         error200_msg_table[31][0]=""; error200_msg_table[31][1]="";
  744. !         error200_msg_table[32][0]="ERROR_NO_MORE_ENTRIES";
  745. !         //: DEUTSCH "keine weiteren Verzeichniseinträge mehr"
  746. !         //: ENGLISH "no more entries in directory"
  747. !         //: FRANCAIS "pas plus d'entrées dans le répertoire"
  748. !         error200_msg_table[32][1]=GETTEXT("no more entries in directory");
  749. !         error200_msg_table[33][0]="ERROR_IS_SOFT_LINK";
  750. !         //: DEUTSCH "Objekt ist ein Softlink"
  751. !         //: ENGLISH "object is soft link"
  752. !         //: FRANCAIS "l'objet est un «soft link»"
  753. !         error200_msg_table[33][1]=GETTEXT("object is soft link");
  754. !         error200_msg_table[34][0]="ERROR_OBJECT_LINKED";
  755. !         //: DEUTSCH "Objekt ist gelinkt"
  756. !         //: ENGLISH "object is linked"
  757. !         //: FRANCAIS "l'objet est lié"
  758. !         error200_msg_table[34][1]=GETTEXT("object is linked");
  759. !         error200_msg_table[35][0]="ERROR_BAD_HUNK";
  760. !         //: DEUTSCH "Datei teilweise nicht ladbar"
  761. !         //: ENGLISH "bad loadfile hunk"
  762. !         //: FRANCAIS "fichier pas entièrement chargeable"
  763. !         error200_msg_table[35][1]=GETTEXT("bad loadfile hunk");
  764. !         error200_msg_table[36][0]="ERROR_NOT_IMPLEMENTED";
  765. !         //: DEUTSCH "unimplementierte Funktion"
  766. !         //: ENGLISH "function not implemented"
  767. !         //: FRANCAIS "fonction non implémentée"
  768. !         error200_msg_table[36][1]=GETTEXT("function not implemented");
  769. !         error200_msg_table[37][0]=""; error200_msg_table[37][1]="";
  770. !         error200_msg_table[38][0]=""; error200_msg_table[38][1]="";
  771. !         error200_msg_table[39][0]=""; error200_msg_table[39][1]="";
  772. !         error200_msg_table[40][0]="ERROR_RECORD_NOT_LOCKED";
  773. !         //: DEUTSCH ""
  774. !         //: ENGLISH "record not locked"
  775. !         //: FRANCAIS ""
  776. !         error200_msg_table[40][1]=GETTEXT("record not locked");
  777. !         error200_msg_table[41][0]="ERROR_LOCK_COLLISION";
  778. !         //: DEUTSCH ""
  779. !         //: ENGLISH "record lock collision"
  780. !         //: FRANCAIS ""
  781. !         error200_msg_table[41][1]=GETTEXT("record lock collision");
  782. !         error200_msg_table[42][0]="ERROR_LOCK_TIMEOUT";
  783. !         //: DEUTSCH ""
  784. !         //: ENGLISH "record lock timeout"
  785. !         //: FRANCAIS ""
  786. !         error200_msg_table[42][1]=GETTEXT("record lock timeout");
  787. !         error200_msg_table[43][0]="ERROR_UNLOCK_ERROR";
  788. !         //: DEUTSCH ""
  789. !         //: ENGLISH "record unlock error"
  790. !         //: FRANCAIS ""
  791. !         error200_msg_table[43][1]=GETTEXT("record unlock error");
  792. !         error300_msg_table[0][0]=""; error300_msg_table[0][1]="";
  793. !         error300_msg_table[1][0]=""; error300_msg_table[1][1]="";
  794. !         error300_msg_table[2][0]=""; error300_msg_table[2][1]="";
  795. !         error300_msg_table[3][0]="ERROR_BUFFER_OVERFLOW";
  796. !         //: DEUTSCH "Puffer-Überlauf"
  797. !         //: ENGLISH "buffer overflow"
  798. !         //: FRANCAIS "débordement de tampon"
  799. !         error300_msg_table[3][1]=GETTEXT("buffer overflow");
  800. !         error300_msg_table[4][0]="ERROR_BREAK";
  801. !         //: DEUTSCH "Unterbrechung"
  802. !         //: ENGLISH "break"
  803. !         //: FRANCAIS "interruption"
  804. !         error300_msg_table[4][1]=GETTEXT("break");
  805. !         error300_msg_table[5][0]="ERROR_NOT_EXECUTABLE";
  806. !         //: DEUTSCH "Datei ist nicht ausführbar"
  807. !         //: ENGLISH "file not executable"
  808. !         //: FRANCAIS "fichier non exécutable"
  809. !         error300_msg_table[5][1]=GETTEXT("file not executable");
  810. !         return 0;
  811. !       }
  812. !     global void OS_error_ ()
  813. !       { var reg1 sintW errcode = IoErr(); # Fehlernummer
  814.           end_system_call();
  815.           clr_break_sem_4(); # keine AMIGAOS-Operation mehr aktiv
  816. ***************
  817. *** 335,351 ****
  818.           write_errorobject(fixnum(errcode));
  819.           {
  820. -           #ifdef LANGUAGE_STATIC
  821. -             #define lang3(english,deutsch,francais)  ENGLISH ? english : DEUTSCH ? deutsch : FRANCAIS ? francais : ""
  822. -             #define lang1(string)  string
  823. -             #define langcount  1
  824. -             #define language  0
  825. -           #else
  826. -             #define lang3(english,deutsch,francais)  english, deutsch, francais
  827. -             #define lang1(string)  string, string, string
  828. -             #define langcount  3
  829. -           #endif
  830. -           local const char* error100_msg_table[23][2];
  831. -           local const char* error200_msg_table[44][2];
  832. -           local const char* error300_msg_table[6][2];
  833.             var reg3 const char* errorname = "";
  834.             var reg3 const char* errormsg = "";
  835. --- 676,679 ----
  836. ***************
  837. *** 352,673 ****
  838.             var reg2 uintC index;
  839.   
  840. -           error100_msg_table[0][0]=""; error100_msg_table[0][1]="";
  841. -           error100_msg_table[1][0]=""; error100_msg_table[1][1]="";
  842. -           error100_msg_table[2][0]=""; error100_msg_table[2][1]="";
  843. -           error100_msg_table[3][0]="ERROR_NO_FREE_STORE";
  844. -           //: DEUTSCH "nicht genügend Speicher vorhanden"
  845. -           //: ENGLISH "not enough memory available"
  846. -           //: FRANCAIS "Pas assez de mémoire"
  847. -           error100_msg_table[3][1]=GETTEXT("not enough memory available");
  848. -           error100_msg_table[4][0]=""; error100_msg_table[4][1]="";
  849. -           error100_msg_table[5][0]="ERROR_TASK_TABLE_FULL";
  850. -           //: DEUTSCH "keine weiteren CLI Prozesse mehr"
  851. -           //: ENGLISH "process table full"
  852. -           //: FRANCAIS "La table des processus est pleine"
  853. -           error100_msg_table[5][1]=GETTEXT("process table full");
  854. -           error100_msg_table[6][0]=""; error100_msg_table[6][1]="";
  855. -           error100_msg_table[7][0]=""; error100_msg_table[7][1]="";
  856. -           error100_msg_table[8][0]=""; error100_msg_table[8][1]="";
  857. -           error100_msg_table[9][0]=""; error100_msg_table[9][1]="";
  858. -           error100_msg_table[10][0]=""; error100_msg_table[10][1]="";
  859. -           error100_msg_table[11][0]=""; error100_msg_table[11][1]="";
  860. -           error100_msg_table[12][0]=""; error100_msg_table[12][1]="";
  861. -           error100_msg_table[13][0]=""; error100_msg_table[13][1]="";
  862. -           error100_msg_table[14][0]="ERROR_BAD_TEMPLATE";
  863. -           //: DEUTSCH "ungültiges Muster"
  864. -           //: ENGLISH "bad template"
  865. -           //: FRANCAIS "mauvais schéma"
  866. -           error100_msg_table[14][1]=GETTEXT("bad template");
  867. -           error100_msg_table[15][0]="ERROR_BAD_NUMBER";
  868. -           //: DEUTSCH "ungültige Zahl"
  869. -           //: ENGLISH "bad number"
  870. -           //: FRANCAIS "mauvais nombre"
  871. -           error100_msg_table[15][1]=GETTEXT("bad number");
  872. -           error100_msg_table[16][0]="ERROR_REQUIRED_ARG_MISSING";
  873. -           //: DEUTSCH "benötigtes Schlüsselwort nicht vorhanden"
  874. -           //: ENGLISH "required argument missing"
  875. -           //: FRANCAIS "mot clé manque"
  876. -           error100_msg_table[16][1]=GETTEXT("required argument missing");
  877. -           error100_msg_table[17][0]="ERROR_KEY_NEEDS_ARG";
  878. -           //: DEUTSCH "kein Wert nach Schlüsselwort vorhanden"
  879. -           //: ENGLISH "value after keyword missing"
  880. -           //: FRANCAIS "mot clé sans valeur"
  881. -           error100_msg_table[17][1]=GETTEXT("value after keyword missing");
  882. -           error100_msg_table[18][0]="ERROR_TOO_MANY_ARGS";
  883. -           //: DEUTSCH "falsche Anzahl Argumente"
  884. -           //: ENGLISH "wrong number of arguments"
  885. -           //: FRANCAIS "mauvais nombre d'arguments"
  886. -           error100_msg_table[18][1]=GETTEXT("wrong number of arguments");
  887. -  
  888. -           error100_msg_table[19][0]="ERROR_UNMATCHED_QUOTES";
  889. -           //: DEUTSCH "ausstehende Anführungszeichen"
  890. -           //: ENGLISH "unmatched quotes"
  891. -           //: FRANCAIS "guillemets non terminés"
  892. -           error100_msg_table[19][1]=GETTEXT("unmatched quotes");
  893. -           error100_msg_table[20][0]="ERROR_LINE_TOO_LONG";
  894. -           //: DEUTSCH "ungültige Zeile oder Zeile zu lang"
  895. -           //: ENGLISH "argument line invalid or too long"
  896. -           //: FRANCAIS "ligne est mauvaise ou trop longue"
  897. -           error100_msg_table[20][1]="argument line invalid or too long";
  898. -           error100_msg_table[21][0]="ERROR_FILE_NOT_OBJECT";
  899. -           //: DEUTSCH "Datei ist nicht ausführbar"
  900. -           //: ENGLISH "file is not executable"
  901. -           //: FRANCAIS "fichier non exécutable"
  902. -           error100_msg_table[21][1]=GETTEXT("file is not executable");
  903. -           error100_msg_table[22][0]="ERROR_INVALID_RESIDENT_LIBRARY";
  904. -           //: DEUTSCH "ungültige residente Library"
  905. -           //: ENGLISH "invalid resident library"
  906. -           //: FRANCAIS "Librarie résidente non valide"
  907. -           error100_msg_table[22][1]=GETTEXT("invalid resident library");
  908. -  
  909. -           error200_msg_table[0][0]=""; error200_msg_table[0][1]="";
  910. -           
  911. -           error200_msg_table[1][0]="ERROR_NO_DEFAULT_DIR";
  912. -           error200_msg_table[1][1]="";
  913. -           error200_msg_table[2][0]="ERROR_OBJECT_IN_USE";
  914. -           //: DEUTSCH "Objekt wird schon benutzt"
  915. -           //: ENGLISH "object is in use"
  916. -           //: FRANCAIS "l'objet est utilisé"
  917. -           error200_msg_table[2][1]=GETTEXT("object is in use");
  918. -         
  919. -           error200_msg_table[3][0]="ERROR_OBJECT_EXISTS";
  920. -           //: DEUTSCH "Objekt existiert bereits"
  921. -           //: ENGLISH "object already exists"
  922. -           //: FRANCAIS "l'objet existe déjà"
  923. -           error200_msg_table[3][1]=GETTEXT("object already exists");
  924. -           error200_msg_table[4][0]="ERROR_DIR_NOT_FOUND",
  925. -           //: DEUTSCH "Verzeichnis nicht gefunden"
  926. -           //: ENGLISH "directory not found"
  927. -           //: FRANCAIS "répertoire non trouvé"
  928. -           error200_msg_table[4][1]=GETTEXT("directory not found");
  929. -           error200_msg_table[5][0]="ERROR_OBJECT_NOT_FOUND";
  930. -           //: DEUTSCH "Objekt nicht gefunden"
  931. -           //: ENGLISH "object not found"
  932. -           //: FRANCAIS "objet non trouvé"
  933. -           error200_msg_table[5][1]=GETTEXT("object not found");
  934. -           error200_msg_table[6][0]="ERROR_BAD_STREAM_NAME"
  935. -           //: DEUTSCH "ungültige Fensterbeschreibung"
  936. -           //: ENGLISH "invalid window description"
  937. -           //: FRANCAIS "mauvais descripteur de fenêtre"
  938. -           error200_msg_table[6][1]=GETTEXT("invalid window description");
  939. -           error200_msg_table[7][0]="ERROR_OBJECT_TOO_LARGE";
  940. -           //: DEUTSCH "Objekt zu groß"
  941. -           //: ENGLISH "object too large"
  942. -           //: FRANCAIS "objet trop grand"
  943. -           error200_msg_table[7][1]=GETTEXT("object too large");
  944. -           error200_msg_table[8][0]=""; error200_msg_table[8][1]="";
  945. -           error200_msg_table[9][0]="ERROR_ACTION_NOT_KNOWN";
  946. -           //: DEUTSCH "unbekannter Pakettyp" # ??
  947. -           //: ENGLISH "packet request type unknown"
  948. -           //: FRANCAIS "Type de paquet inconnu"
  949. -           error200_msg_table[9][1]=GETTEXT("packet request type unknown");
  950. -           error200_msg_table[10][0]="ERROR_INVALID_COMPONENT_NAME";
  951. -           //: DEUTSCH "ungültiger Objektname"
  952. -           //: ENGLISH "object name invalid"
  953. -           //: FRANCAIS "nom d'objet incorrect"
  954. -           error200_msg_table[10][1]=GETTEXT("object name invalid");
  955. -           
  956. -           error200_msg_table[11][0]="ERROR_INVALID_LOCK";
  957. -           //: DEUTSCH "ungültiger Objektlock"
  958. -           //: ENGLISH "invalid object lock"
  959. -           //: FRANCAIS "«lock» invalide d'un objet"
  960. -           error200_msg_table[11][1]=GETTEXT("invalid object lock");
  961. -           error200_msg_table[12][0]="ERROR_OBJECT_WRONG_TYPE";
  962. -           //: DEUTSCH "Objekt ist nicht von benötigten Typ"
  963. -           //: ENGLISH "object is not of required type"
  964. -           //: FRANCAIS "objet de mauvais type"
  965. -           error200_msg_table[12][1]=GETTEXT("object is not of required type");
  966. -           error200_msg_table[13][0]="ERROR_DISK_NOT_VALIDATED";
  967. -           //: DEUTSCH "Datenträger ist nicht validiert"
  968. -           //: ENGLISH "disk not validated"
  969. -           //: FRANCAIS "volume non validé"
  970. -           error200_msg_table[13][1]=GETTEXT("disk not validated");
  971. -           error200_msg_table[14][0]="ERROR_DISK_WRITE_PROTECTED";
  972. -           //: DEUTSCH "Datenträger ist schreibgeschützt"
  973. -           //: ENGLISH "disk is write-protected"
  974. -           //: FRANCAIS "disquette protégée contre l'écriture"
  975. -           error200_msg_table[14][1]=GETTEXT("disk is write-protected");
  976. -           error200_msg_table[15][0]="ERROR_RENAME_ACROSS_DEVICES";
  977. -           //: DEUTSCH "rename über Laufwerke versucht"
  978. -           //: ENGLISH "rename across devices attempted"
  979. -           //: FRANCAIS "«rename» à travers des unités distinctes"
  980. -           error200_msg_table[15][1]=GETTEXT("rename across devices attempted");
  981. -           error200_msg_table[16][0]="ERROR_DIRECTORY_NOT_EMPTY";
  982. -           //: DEUTSCH "Verzeichnis ist nicht leer"
  983. -           //: ENGLISH "directory not empty"
  984. -           //: FRANCAIS "répertoire non vide"
  985. -           error200_msg_table[16][1]=GETTEXT("directory not empty");
  986. -           error200_msg_table[17][0]="ERROR_TOO_MANY_LEVELS";
  987. -           //: DEUTSCH "zu viele Verweise"
  988. -           //: ENGLISH "too many levels"
  989. -           //: FRANCAIS "trop de niveaux"
  990. -           error200_msg_table[17][1]=GETTEXT("too many levels");
  991. -           error200_msg_table[18][0]="ERROR_DEVICE_NOT_MOUNTED";
  992. -           //: DEUTSCH "Datenträger ist in keinem Laufwerk"
  993. -           //: ENGLISH "device (or volume) is not mounted"
  994. -           //: FRANCAIS "l'unité n'est dans aucun lecteur"
  995. -           error200_msg_table[18][1]=GETTEXT("device (or volume) is not mounted");
  996. -           error200_msg_table[19][0]="ERROR_SEEK_ERROR";
  997. -           //: DEUTSCH "seek schlug fehl"
  998. -           //: ENGLISH "seek failure"
  999. -           //: FRANCAIS "erreur pendant un déplacement (seek)"
  1000. -           error200_msg_table[19][1]=GETTEXT("seek failure");
  1001. -           error200_msg_table[20][0]="ERROR_COMMENT_TOO_BIG";
  1002. -           //: DEUTSCH "Kommentar ist zu lang"
  1003. -           //: ENGLISH "comment is too long"
  1004. -           //: FRANCAIS "Commentaire trop long"
  1005. -           error200_msg_table[20][1]=GETTEXT("comment is too long");
  1006. -           error200_msg_table[21][0]="ERROR_DISK_FULL";
  1007. -           //: DEUTSCH "Datenträger ist voll"
  1008. -           //: ENGLISH "disk is full"
  1009. -           //: FRANCAIS "support plein"
  1010. -           error200_msg_table[21][1]=GETTEXT("disk is full");
  1011. -           error200_msg_table[22][0]="ERROR_DELETE_PROTECTED";
  1012. -           //: DEUTSCH "Datei ist gegen Löschen geschützt"
  1013. -           //: ENGLISH "object is protected from deletion"
  1014. -           //: FRANCAIS "objet est protégé contre l'effacement"
  1015. -           error200_msg_table[22][1]=GETTEXT("object is protected from deletion");
  1016. -           error200_msg_table[23][0]="ERROR_WRITE_PROTECTED";
  1017. -           //: DEUTSCH "Datei ist schreibgeschützt"
  1018. -           //: ENGLISH "file is write protected"
  1019. -           //: FRANCAIS "fichier protégé contre l'écriture"
  1020. -           error200_msg_table[23][1]=GETTEXT("file is write protected");
  1021. -           error200_msg_table[24][0]="ERROR_READ_PROTECTED";
  1022. -           //: DEUTSCH "Datei ist lesegeschützt"
  1023. -           //: ENGLISH "file is read protected"
  1024. -           //: FRANCAIS "fichier protégé contre la lecture"
  1025. -           error200_msg_table[24][1]=GETTEXT("file is read protected");
  1026. -           error200_msg_table[25][0]="ERROR_NOT_A_DOS_DISK";
  1027. -           //: DEUTSCH "kein gültiger DOS-Datenträger"
  1028. -           //: ENGLISH "not a valid DOS disk"
  1029. -           //: FRANCAIS "disque non DOS"
  1030. -           error200_msg_table[25][1]=GETTEXT("not a valid DOS disk");
  1031. -           error200_msg_table[26][0]="ERROR_NO_DISK";
  1032. -           //: DEUTSCH "kein Datenträger im Laufwerk"
  1033. -           //: ENGLISH "no disk in drive"
  1034. -           //: FRANCAIS "pas de disquette dans le lecteur"
  1035. -           error200_msg_table[26][1]=GETTEXT("no disk in drive");
  1036. -           error200_msg_table[27][0]=""; error200_msg_table[27][1]="";
  1037. -           error200_msg_table[28][0]=""; error200_msg_table[28][1]="";
  1038. -           error200_msg_table[29][0]=""; error200_msg_table[29][1]="";
  1039. -           error200_msg_table[30][0]=""; error200_msg_table[30][1]="";
  1040. -           error200_msg_table[31][0]=""; error200_msg_table[31][1]="";
  1041. -           error200_msg_table[32][0]="ERROR_NO_MORE_ENTRIES";
  1042. -           //: DEUTSCH "keine weiteren Verzeichniseinträge mehr"
  1043. -           //: ENGLISH "no more entries in directory"
  1044. -           //: FRANCAIS "pas plus d'entrées dans le répertoire"
  1045. -           error200_msg_table[32][1]=GETTEXT("no more entries in directory");
  1046. -           error200_msg_table[33][0]="ERROR_IS_SOFT_LINK";
  1047. -           //: DEUTSCH "Objekt ist ein Softlink"
  1048. -           //: ENGLISH "object is soft link"
  1049. -           //: FRANCAIS "l'objet est un «soft link»"
  1050. -           error200_msg_table[33][1]=GETTEXT("object is soft link");
  1051. -           error200_msg_table[34][0]="ERROR_OBJECT_LINKED";
  1052. -           //: DEUTSCH "Objekt ist gelinkt"
  1053. -           //: ENGLISH "object is linked"
  1054. -           //: FRANCAIS "l'objet est lié"
  1055. -           error200_msg_table[34][1]=GETTEXT("object is linked");
  1056. -           error200_msg_table[35][0]="ERROR_BAD_HUNK";
  1057. -           //: DEUTSCH "Datei teilweise nicht ladbar"
  1058. -           //: ENGLISH "bad loadfile hunk"
  1059. -           //: FRANCAIS "fichier pas entièrement chargeable"
  1060. -           error200_msg_table[35][1]=GETTEXT("bad loadfile hunk");
  1061. -           error200_msg_table[36][0]="ERROR_NOT_IMPLEMENTED";
  1062. -           //: DEUTSCH "unimplementierte Funktion"
  1063. -           //: ENGLISH "function not implemented"
  1064. -           //: FRANCAIS "fonction non implémentée"
  1065. -           error200_msg_table[36][1]=GETTEXT("function not implemented");
  1066. -           error200_msg_table[37][0]=""; error200_msg_table[37][1]="";
  1067. -           error200_msg_table[38][0]=""; error200_msg_table[38][1]="";
  1068. -           error200_msg_table[39][0]=""; error200_msg_table[39][1]="";
  1069. -           error200_msg_table[40][0]="ERROR_RECORD_NOT_LOCKED";
  1070. -           //: DEUTSCH ""
  1071. -           //: ENGLISH "record not locked"
  1072. -           //: FRANCAIS ""
  1073. -           error200_msg_table[40][1]=GETTEXT("record not locked");
  1074. -           error200_msg_table[41][0]="ERROR_LOCK_COLLISION";
  1075. -           //: DEUTSCH ""
  1076. -           //: ENGLISH "record lock collision"
  1077. -           //: FRANCAIS ""
  1078. -           error200_msg_table[41][1]=GETTEXT("record lock collision");
  1079. -           error200_msg_table[42][0]="ERROR_LOCK_TIMEOUT";
  1080. -           //: DEUTSCH ""
  1081. -           //: ENGLISH "record lock timeout"
  1082. -           //: FRANCAIS ""
  1083. -           error200_msg_table[42][1]=GETTEXT("record lock timeout");
  1084. -           error200_msg_table[43][0]="ERROR_UNLOCK_ERROR";
  1085. -           //: DEUTSCH ""
  1086. -           //: ENGLISH "record unlock error"
  1087. -           //: FRANCAIS ""
  1088. -           error200_msg_table[43][1]=GETTEXT("record unlock error");
  1089. -           error300_msg_table[0][0]=""; error300_msg_table[0][1]="";
  1090. -           error301_msg_table[1][0]=""; error301_msg_table[1][1]="";
  1091. -           error302_msg_table[2][0]=""; error302_msg_table[2][1]="";
  1092. -           error300_msg_table[3][0]="ERROR_BUFFER_OVERFLOW";
  1093. -           //: DEUTSCH "Puffer-Überlauf"
  1094. -           //: ENGLISH "buffer overflow"
  1095. -           //: FRANCAIS "débordement de tampon"
  1096. -           error300_msg_table[3][1]=GETTEXT("buffer overflow");
  1097. -           error300_msg_table[4][0]="ERROR_BREAK";
  1098. -           //: DEUTSCH "Unterbrechung"
  1099. -           //: ENGLISH "break"
  1100. -           //: FRANCAIS "interruption"
  1101. -           error300_msg_table[4][1]=GETTEXT("break");
  1102. -           error300_msg_table[5][0]="ERROR_NOT_EXECUTABLE";
  1103. -           //: DEUTSCH "Datei ist nicht ausführbar"
  1104. -           //: ENGLISH "file not executable"
  1105. -           //: FRANCAIS "fichier non exécutable"
  1106. -           error300_msg_table[5][1]=GETTEXT("file not executable");
  1107.             if (errcode == 0)
  1108.               { errorname = "";
  1109. --- 680,683 ----
  1110. ***************
  1111. *** 699,704 ****
  1112.               }
  1113.           }
  1114. !         # Fehlercode löschen (fürs nächste Mal):
  1115. !         ((struct Process *)FindTask(NULL))->pr_Result2 = 0L;
  1116.           end_error(args_end_pointer STACKop (4+DYNBIND_SIZE)); # Fehlermeldung beenden
  1117.         }
  1118. --- 709,713 ----
  1119.               }
  1120.           }
  1121. !         SetIoErr(0L); # Fehlercode löschen (fürs nächste Mal):
  1122.           end_error(args_end_pointer STACKop (4+DYNBIND_SIZE)); # Fehlermeldung beenden
  1123.         }
  1124. ***************
  1125. *** 1042,1045 ****
  1126. --- 1051,1055 ----
  1127.           end_error(args_end_pointer STACKop (4+DYNBIND_SIZE)); # Fehlermeldung beenden
  1128.         }
  1129.     # Ausgabe eines Fehlers, direkt übers Betriebssystem
  1130.     # errno_out(errorcode);
  1131. ***************
  1132. *** 1051,1066 ****
  1133.   #endif
  1134.   
  1135. -   nonreturning_function(global, OS_error_debug, (const char *,int));
  1136. -   global void OS_error_debug (const char *filename,int lineno);
  1137. -   global void OS_error_debug(filename,lineno)
  1138. -     var const char *filename;
  1139. -     var int lineno;
  1140. -     {
  1141. -       asciz_out(CRLFstring "filename: "); asciz_out(filename); 
  1142. -       asciz_out(CRLFstring "line: "); dez_out(lineno);
  1143. -       asciz_out(CRLFstring);
  1144. -       OS_error_();
  1145. -     }
  1146.   #if defined(UNIX) || defined(EMUNIX) || defined(WATCOM) || defined(RISCOS) || defined(WIN32_DOS) || defined(WIN32_UNIX)
  1147.   
  1148. --- 1061,1064 ----
  1149. ***************
  1150. *** 1993,1997 ****
  1151.           return 0;
  1152.         }
  1153. !     
  1154.       global void OS_error_ ()
  1155.         { var reg1 uintC errcode = errno; # positive Fehlernummer
  1156. --- 1991,1995 ----
  1157.           return 0;
  1158.         }
  1159.       global void OS_error_ ()
  1160.         { var reg1 uintC errcode = errno; # positive Fehlernummer
  1161. ***************
  1162. *** 2065,2068 ****
  1163. --- 2063,2078 ----
  1164.   
  1165.   #endif # UNIX || EMUNIX || WATCOM || RISCOS
  1166. +   nonreturning_function(global, OS_error_debug, (const char *,int));
  1167. +   global void OS_error_debug (const char *filename,int lineno);
  1168. +   global void OS_error_debug(filename,lineno)
  1169. +     var const char *filename;
  1170. +     var int lineno;
  1171. +     {
  1172. +       asciz_out(CRLFstring "filename: "); asciz_out(filename); 
  1173. +       asciz_out(CRLFstring "line: "); dez_out(lineno);
  1174. +       asciz_out(CRLFstring);
  1175. +       OS_error_();
  1176. +     }
  1177.   
  1178.   LISPFUN(error,1,0,rest,nokey,0,NIL)
  1179. Only in src/: eval.d
  1180. Only in src/: ffloat.d
  1181. Only in src/: floatpri.fas
  1182. Only in src/: floatpri.lib
  1183. Only in src/: floatpri.lsp
  1184. Only in src/: flo_konv.d
  1185. Only in src/: flo_rest.d
  1186. diff -c2 src.orig/foreign.d src/foreign.d
  1187. *** src.orig/foreign.d    Mon Apr 15 16:29:48 1996
  1188. --- src/foreign.d    Fri Jul 26 21:35:12 1996
  1189. ***************
  1190. *** 545,550 ****
  1191.   #else # defined(AMIGAOS)
  1192.   # No malloc() is available. Disable malloc() and free() altogether.
  1193. ! nonreturning_function(local, fehler_malloc_free, (void));
  1194. ! local void fehler_malloc_free()
  1195.     { 
  1196.       //: DEUTSCH ":MALLOC-FREE ist unter AMIGAOS nicht verfügbar."
  1197. --- 545,550 ----
  1198.   #else # defined(AMIGAOS)
  1199.   # No malloc() is available. Disable malloc() and free() altogether.
  1200. ! nonreturning_function(global, fehler_malloc_free, (void));
  1201. ! global void fehler_malloc_free()
  1202.     { 
  1203.       //: DEUTSCH ":MALLOC-FREE ist unter AMIGAOS nicht verfügbar."
  1204. ***************
  1205. *** 553,558 ****
  1206.       fehler(error, GETTEXT(":MALLOC-FREE is not available under AMIGAOS."));
  1207.     }
  1208. ! #define malloc(amount)  (fehler_malloc_free(), 0)
  1209. ! #define free(pointer)  (fehler_malloc_free(), 0)
  1210.   #define xmalloc(size)  malloc(size)
  1211.   #endif
  1212. --- 553,558 ----
  1213.       fehler(error, GETTEXT(":MALLOC-FREE is not available under AMIGAOS."));
  1214.     }
  1215. ! #define malloc(amount)  (fehler_malloc_free(), NULL)
  1216. ! #define free(pointer)  fehler_malloc_free()
  1217.   #define xmalloc(size)  malloc(size)
  1218.   #endif
  1219. ***************
  1220. *** 2634,2639 ****
  1221.   # do_av_arg(flags,arg_fvd,&alist,arg_address,arg_size,arg_alignment);
  1222.     local void do_av_arg (uintWL flags, object arg_fvd, av_alist * alist, void* arg_address, unsigned long arg_size, unsigned long arg_alignment);
  1223. !   #ifdef AMIGA
  1224. !   local int AV_ARG_REGNUM; # number of register where the argument is to be passed
  1225.     #endif
  1226.     local void do_av_arg(flags,arg_fvd,alist,arg_address,arg_size,arg_alignment)
  1227. --- 2634,2639 ----
  1228.   # do_av_arg(flags,arg_fvd,&alist,arg_address,arg_size,arg_alignment);
  1229.     local void do_av_arg (uintWL flags, object arg_fvd, av_alist * alist, void* arg_address, unsigned long arg_size, unsigned long arg_alignment);
  1230. !   #ifdef AMIGAOS
  1231. !   local sintWL AV_ARG_REGNUM; # number of register where the argument is to be passed
  1232.     #endif
  1233.     local void do_av_arg(flags,arg_fvd,alist,arg_address,arg_size,arg_alignment)
  1234. ***************
  1235. *** 2849,2852 ****
  1236. --- 2849,2857 ----
  1237.                 }
  1238.             }
  1239. +           #ifdef AMIGAOS
  1240. +           # set register a6 as for a library call, even if not used
  1241. +           # library pointer has already been validated through Fpointer_value() above
  1242. +           alist.regargs[8+7-1] = (uintP)TheFpointer(TheFaddress(TheFfunction(ffun)->ff_address)->fa_base)->fp_pointer;
  1243. +           #endif
  1244.            {var reg4 uintL result_count = 0;
  1245.             typedef struct { void* address; } result_descr; # fvd is pushed onto the STACK
  1246. ***************
  1247. *** 2901,2905 ****
  1248.                             }
  1249.                           # Call av_xxx:
  1250. !                         #ifdef AMIGA
  1251.                           AV_ARG_REGNUM = (int)(arg_flags >> 8) - 1;
  1252.                           #endif
  1253. --- 2906,2910 ----
  1254.                             }
  1255.                           # Call av_xxx:
  1256. !                         #ifdef AMIGAOS
  1257.                           AV_ARG_REGNUM = (int)(arg_flags >> 8) - 1;
  1258.                           #endif
  1259. ***************
  1260. *** 2922,2926 ****
  1261.                             }
  1262.                           # Call av_xxx:
  1263. !                         #ifdef AMIGA
  1264.                           AV_ARG_REGNUM = (int)(arg_flags >> 8) - 1;
  1265.                           #endif
  1266. --- 2927,2931 ----
  1267.                             }
  1268.                           # Call av_xxx:
  1269. !                         #ifdef AMIGAOS
  1270.                           AV_ARG_REGNUM = (int)(arg_flags >> 8) - 1;
  1271.                           #endif
  1272. ***************
  1273. *** 3410,3422 ****
  1274.         while (consp(alist))
  1275.           { if (equal(name,Car(Car(alist))))
  1276. !             { var reg3 object lib = Cdr(Car(alist));
  1277.                 if (!fp_validp(TheFpointer(lib)))
  1278.                   # Library already existed in a previous Lisp session.
  1279.                   # Update the address, and make it valid.
  1280. !                 { var reg4 struct Library * libaddr = open_library(name,v);
  1281.                     TheFpointer(lib)->fp_pointer = libaddr;
  1282.                     mark_fp_valid(TheFpointer(lib));
  1283.                   }
  1284. !               value1 = lib;
  1285.                 goto done;
  1286.               }
  1287. --- 3415,3428 ----
  1288.         while (consp(alist))
  1289.           { if (equal(name,Car(Car(alist))))
  1290. !             { var reg4 object address = Cdr(Car(alist));
  1291. !               var reg3 object lib = TheFaddress(address)->fa_base;
  1292.                 if (!fp_validp(TheFpointer(lib)))
  1293.                   # Library already existed in a previous Lisp session.
  1294.                   # Update the address, and make it valid.
  1295. !                 { var reg5 struct Library * libaddr = open_library(name,v);
  1296.                     TheFpointer(lib)->fp_pointer = libaddr;
  1297.                     mark_fp_valid(TheFpointer(lib));
  1298.                   }
  1299. !               value1 = address;
  1300.                 goto done;
  1301.               }
  1302. ***************
  1303. *** 3425,3433 ****
  1304.       # Pre-allocate room:
  1305.       pushSTACK(allocate_cons()); pushSTACK(allocate_cons());
  1306. !     pushSTACK(allocate_fpointer());
  1307.       # Open the library:
  1308. !     { var reg5 struct Library * libaddr = open_library(STACK_(1+3),v);
  1309.         var reg4 object lib = popSTACK();
  1310. !       TheFpointer(lib)->fp_pointer = libaddr;
  1311.         value1 = lib;
  1312.        {var reg1 object acons = popSTACK();
  1313. --- 3431,3442 ----
  1314.       # Pre-allocate room:
  1315.       pushSTACK(allocate_cons()); pushSTACK(allocate_cons());
  1316. !     pushSTACK(allocate_fpointer((void*)0));
  1317. !     pushSTACK(allocate_faddress());
  1318.       # Open the library:
  1319. !     { var reg5 struct Library * libaddr = open_library(STACK_(1+4),v);
  1320.         var reg4 object lib = popSTACK();
  1321. !       TheFpointer(STACK_0)->fp_pointer = libaddr;
  1322. !       TheFaddress(lib)->fa_base = popSTACK();
  1323. !       TheFaddress(lib)->fa_offset = 0;
  1324.         value1 = lib;
  1325.        {var reg1 object acons = popSTACK();
  1326. ***************
  1327. *** 3452,3456 ****
  1328.             { var reg2 object acons = Car(l);
  1329.               l = Cdr(l);
  1330. !             if (eq(Cdr(acons),obj))
  1331.                 { var reg4 struct Library * libaddr = open_library(Car(acons),0); # version ??
  1332.                   TheFpointer(obj)->fp_pointer = libaddr;
  1333. --- 3461,3465 ----
  1334.             { var reg2 object acons = Car(l);
  1335.               l = Cdr(l);
  1336. !             if (eq(TheFaddress(Cdr(acons))->fa_base,obj))
  1337.                 { var reg4 struct Library * libaddr = open_library(Car(acons),0); # version ??
  1338.                   TheFpointer(obj)->fp_pointer = libaddr;
  1339. ***************
  1340. *** 3461,3465 ****
  1341.       }
  1342.   
  1343. ! # (FFI::FOREIGN-LIBRARY-VARIABLE name library offset c-type)
  1344.   # returns a foreign variable.
  1345.   LISPFUNN(foreign_library_variable,4)
  1346. --- 3470,3474 ----
  1347.       }
  1348.   
  1349. ! # (FFI::FOREIGN-ADDRESS-VARIABLE name library offset c-type)
  1350.   # returns a foreign variable.
  1351.   LISPFUNN(foreign_library_variable,4)
  1352. ***************
  1353. *** 3466,3476 ****
  1354.     { if (!mstringp(STACK_3)) { fehler_string(STACK_3); }
  1355.       STACK_3 = coerce_ss(STACK_3);
  1356. !     if (!fpointerp(STACK_2))
  1357.         { pushSTACK(STACK_2);
  1358.           pushSTACK(TheSubr(subr_self)->name);
  1359. !         //: DEUTSCH "~: ~ ist keine Bibliothek."
  1360. !         //: ENGLISH "~: ~ is not a library"
  1361. !         //: FRANCAIS "~ : ~ n'est pas une bibliothèque."
  1362. !         fehler(error, GETTEXT("~: ~ is not a library"));
  1363.         }
  1364.       check_sint32(STACK_1);
  1365. --- 3475,3485 ----
  1366.     { if (!mstringp(STACK_3)) { fehler_string(STACK_3); }
  1367.       STACK_3 = coerce_ss(STACK_3);
  1368. !     if (!faddressp(STACK_2))
  1369.         { pushSTACK(STACK_2);
  1370.           pushSTACK(TheSubr(subr_self)->name);
  1371. !         //: DEUTSCH "~: Argument ist keine Foreign-Adresse: ~"
  1372. !         //: ENGLISH "~: argument is not a foreign address: ~"
  1373. !         //: FRANCAIS "~ : l'argument n'est pas une adresse étrangère : ~."
  1374. !         fehler(error, GETTEXT("~: argument is not a foreign address: ~"));
  1375.         }
  1376.       check_sint32(STACK_1);
  1377. ***************
  1378. *** 3478,3482 ****
  1379.      {var reg3 uintL size = data_size;
  1380.       var reg2 uintL alignment = data_alignment;
  1381. !     pushSTACK(make_faddress(STACK_2,(sintP)I_to_sint32(STACK_1)));
  1382.       { var reg1 object fvar = allocate_fvariable();
  1383.         TheFvariable(fvar)->fv_name = STACK_(3+1);
  1384. --- 3487,3493 ----
  1385.      {var reg3 uintL size = data_size;
  1386.       var reg2 uintL alignment = data_alignment;
  1387. !     pushSTACK(make_faddress(TheFaddress(STACK_2)->fa_base,
  1388. !                             TheFaddress(STACK_2)->fa_offset
  1389. !                             + (sintP)I_to_sint32(STACK_1)));
  1390.       { var reg1 object fvar = allocate_fvariable();
  1391.         TheFvariable(fvar)->fv_name = STACK_(3+1);
  1392. ***************
  1393. *** 3500,3504 ****
  1394.     { if (!mstringp(STACK_3)) { fehler_string(STACK_3); }
  1395.       STACK_3 = coerce_ss(STACK_3);
  1396. !     if (!fpointerp(STACK_2))
  1397.         { pushSTACK(STACK_2);
  1398.           pushSTACK(TheSubr(subr_self)->name);
  1399. --- 3511,3515 ----
  1400.     { if (!mstringp(STACK_3)) { fehler_string(STACK_3); }
  1401.       STACK_3 = coerce_ss(STACK_3);
  1402. !     if (!faddressp(STACK_2)) # TODO? search in O(foreign_libraries)
  1403.         { pushSTACK(STACK_2);
  1404.           pushSTACK(TheSubr(subr_self)->name);
  1405. ***************
  1406. *** 3526,3530 ****
  1407.           }
  1408.       }
  1409. !     pushSTACK(make_faddress(STACK_2,(sintP)I_to_sint32(STACK_1)));
  1410.       { var reg1 object ffun = allocate_ffunction();
  1411.         var reg2 object fvd = STACK_(0+1);
  1412. --- 3537,3543 ----
  1413.           }
  1414.       }
  1415. !     pushSTACK(make_faddress(TheFaddress(STACK_2)->fa_base,
  1416. !                             TheFaddress(STACK_2)->fa_offset
  1417. !                             + (sintP)I_to_sint32(STACK_1)));
  1418.       { var reg1 object ffun = allocate_ffunction();
  1419.         var reg2 object fvd = STACK_(0+1);
  1420. ***************
  1421. *** 3568,3572 ****
  1422.           while (consp(alist))
  1423.             { var reg4 object acons = Car(alist);
  1424. !             var reg3 object obj = Cdr(acons);
  1425.               if (fp_validp(TheFpointer(obj)))
  1426.                 { var reg2 struct Library * libaddr = (struct Library *)(TheFpointer(obj)->fp_pointer);
  1427. --- 3581,3585 ----
  1428.           while (consp(alist))
  1429.             { var reg4 object acons = Car(alist);
  1430. !             var reg3 object obj = TheFaddress(Cdr(acons))->fa_base;
  1431.               if (fp_validp(TheFpointer(obj)))
  1432.                 { var reg2 struct Library * libaddr = (struct Library *)(TheFpointer(obj)->fp_pointer);
  1433. Only in src/: foreign1.fas
  1434. Only in src/: foreign1.lib
  1435. diff -c2 src.orig/foreign1.lsp src/foreign1.lsp
  1436. *** src.orig/foreign1.lsp    Mon Apr 15 16:29:50 1996
  1437. --- src/foreign1.lsp    Sat Jul 27 01:28:43 1996
  1438. ***************
  1439. *** 11,14 ****
  1440. --- 11,15 ----
  1441.             def-c-enum def-c-struct element deref slot cast typeof sizeof bitsizeof
  1442.             validp
  1443. +           #+AMIGA def-lib-call-out
  1444.   )        )
  1445.   
  1446. ***************
  1447. *** 98,102 ****
  1448.   ) )
  1449.   
  1450. ! #+AMIGAOS
  1451.   (defconstant *registers*
  1452.     '#(:D0 :D1 :D2 :D3 :D4 :D5 :D6 :D7 :A0 :A1 :A2 :A3 :A4 :A5 :A6)
  1453. --- 99,103 ----
  1454.   ) )
  1455.   
  1456. ! #+AMIGA
  1457.   (defconstant *registers*
  1458.     '#(:D0 :D1 :D2 :D3 :D4 :D5 :D6 :D7 :A0 :A1 :A2 :A3 :A4 :A5 :A6)
  1459. ***************
  1460. *** 379,383 ****
  1461.                           (unless (and (listp argspec)
  1462.                                        (symbolp (first argspec))
  1463. !                                      (<= 2 (length argspec) #-AMIGAOS 4 #+AMIGAOS 5)
  1464.                                   )
  1465.                             (error 
  1466. --- 380,384 ----
  1467.                           (unless (and (listp argspec)
  1468.                                        (symbolp (first argspec))
  1469. !                                      (<= 2 (length argspec) #-AMIGA 4 #+AMIGA 5)
  1470.                                   )
  1471.                             (error 
  1472. ***************
  1473. *** 413,417 ****
  1474.                                        (:MALLOC-FREE ff-flag-malloc-free)
  1475.                                      )
  1476. !                                    #+AMIGAOS
  1477.                                      (if (cddddr argspec)
  1478.                                        (ash (1+ (position (fifth argspec) *registers*)) 8)
  1479. --- 414,418 ----
  1480.                                        (:MALLOC-FREE ff-flag-malloc-free)
  1481.                                      )
  1482. !                                    #+AMIGA
  1483.                                      (if (cddddr argspec)
  1484.                                        (ash (1+ (position (fifth argspec) *registers*)) 8)
  1485. ***************
  1486. *** 551,555 ****
  1487.                                                                   (t ':NONE)
  1488.                                                             )
  1489. !                                                          #+AMIGAOS
  1490.                                                            ,@(let ((h (logand (ash argflags -8) #xF)))
  1491.                                                                (if (not (zerop h))
  1492. --- 552,556 ----
  1493.                                                                   (t ':NONE)
  1494.                                                             )
  1495. !                                                          #+AMIGA
  1496.                                                            ,@(let ((h (logand (ash argflags -8) #xF)))
  1497.                                                                (if (not (zerop h))
  1498. ***************
  1499. *** 917,920 ****
  1500. --- 918,938 ----
  1501.       (push (list c-name (parse-c-function alist whole)) *function-list*)
  1502.   ) )
  1503. + #+AMIGA
  1504. + (defmacro DEF-LIB-CALL-OUT (&whole whole name library &rest options)
  1505. +   (check-symbol whole)
  1506. +   (let* ((alist (parse-options options '(:name :offset :arguments :return-type) whole))
  1507. +          (c-name (foreign-name name (assoc ':name alist)))
  1508. +          (offset (second (assoc ':offset alist))))
  1509. +     `(LET ()
  1510. +        (SYSTEM::REMOVE-OLD-DEFINITIONS ',name)
  1511. +        (EVAL-WHEN (COMPILE) (COMPILER::C-DEFUN ',name))
  1512. +        (SYSTEM::%PUTD ',name
  1513. +          (FFI::FOREIGN-LIBRARY-FUNCTION ',c-name
  1514. +           (FFI::FOREIGN-LIBRARY ',library)
  1515. +           ',offset
  1516. +           (PARSE-C-FUNCTION ',(remove (assoc ':name alist) alist) ',whole)))
  1517. +        ',name
  1518. + ) )  )
  1519.   
  1520.   (defmacro DEF-C-CALL-IN (name &rest options)
  1521. Only in src/: format.fas
  1522. Only in src/: format.lib
  1523. diff -c2 src.orig/format.lsp src/format.lsp
  1524. *** src.orig/format.lsp    Mon Apr 15 16:29:50 1996
  1525. --- src/format.lsp    Wed Aug 07 01:05:51 1996
  1526. ***************
  1527. *** 1470,1474 ****
  1528.                 (progn
  1529.                   (when (char-bit arg ':HYPER)
  1530. !                   (write-string 
  1531.                      #L{
  1532.                      DEUTSCH "Ziffernblock-"
  1533. --- 1470,1474 ----
  1534.                 (progn
  1535.                   (when (char-bit arg ':HYPER)
  1536. !                   (write-string
  1537.                      #L{
  1538.                      DEUTSCH "Ziffernblock-"
  1539. ***************
  1540. *** 2790,2794 ****
  1541.           (if (and (consp new-forms) (stringp (car new-forms)) (stringp form))
  1542.             (setf (car new-forms)
  1543. !                 (concatenate 'string form (car new-forms))
  1544.             )
  1545.             (push form new-forms)
  1546. --- 2790,2794 ----
  1547.           (if (and (consp new-forms) (stringp (car new-forms)) (stringp form))
  1548.             (setf (car new-forms)
  1549. !                 (string-concat form (car new-forms))
  1550.             )
  1551.             (push form new-forms)
  1552. Only in src/: fsubr.d
  1553. Only in src/: genclisph.d
  1554. Only in src/: gstream.fas
  1555. Only in src/: gstream.lib
  1556. Only in src/: gstream.lsp
  1557. Only in src/: hashtabl.d
  1558. Only in src/: init-small.fas
  1559. Only in src/: init.fas
  1560. Only in src/: init.lib
  1561. diff -c2 src.orig/init.lsp src/init.lsp
  1562. *** src.orig/init.lsp    Mon Apr 15 16:29:56 1996
  1563. --- src/init.lsp    Mon Jun 17 20:58:12 1996
  1564. ***************
  1565. *** 1804,1808 ****
  1566.             :pathname filename
  1567.             #L{
  1568. !           DEUTSCH "Ein Datei mit Namen ~A gibt es nicht."
  1569.             ENGLISH "A file with name ~A does not exist"
  1570.             FRANCAIS "Il n'existe pas de fichier de nom ~A."
  1571. --- 1804,1808 ----
  1572.             :pathname filename
  1573.             #L{
  1574. !           DEUTSCH "Eine Datei mit Namen ~A gibt es nicht."
  1575.             ENGLISH "A file with name ~A does not exist"
  1576.             FRANCAIS "Il n'existe pas de fichier de nom ~A."
  1577. ***************
  1578. *** 2236,2239 ****
  1579. --- 2236,2244 ----
  1580.   #+FFI ; when (find-package "FFI")
  1581.   (LOAD "foreign1") ;; foreign function interface, optional
  1582. + #+AMIGA
  1583. + (when (find-symbol "%LIBCALL" "SYS")
  1584. +   (LOAD "affi1") ;; einfaches FFI, optional
  1585. + )
  1586.   
  1587.   (when (or #+AMIGA t (find-package "SCREEN"))
  1588. Only in src/: int2adic.d
  1589. Only in src/: intbyte.d
  1590. Only in src/: intcomp.d
  1591. Only in src/: intdiv.d
  1592. diff -c2 src.orig/intelem.d src/intelem.d
  1593. *** src.orig/intelem.d    Mon Apr 15 16:30:00 1996
  1594. --- src/intelem.d    Sun Jul 21 20:04:32 1996
  1595. ***************
  1596. *** 278,282 ****
  1597.       }   }
  1598.   
  1599. ! #if defined(HAVE_FFI) && defined(HAVE_LONGLONG)
  1600.   
  1601.   # Wandelt Integer >=0 in Unsigned Quadword um.
  1602. --- 278,282 ----
  1603.       }   }
  1604.   
  1605. ! #if (defined(HAVE_FFI) || defined(HAVE_AFFI)) && defined(HAVE_LONGLONG)
  1606.   
  1607.   # Wandelt Integer >=0 in Unsigned Quadword um.
  1608. ***************
  1609. *** 355,358 ****
  1610. --- 355,361 ----
  1611.               fehler(type_error, GETTEXT("not a 64-bit integer: ~"));
  1612.       }   }
  1613. + #endif
  1614. + #if defined(HAVE_FFI) && defined(HAVE_LONGLONG)
  1615.   
  1616.   # Wandelt Integer in Signed Quadword um.
  1617. Only in src/: intgcd.d
  1618. Only in src/: intlog.d
  1619. Only in src/: intmal.d
  1620. Only in src/: intplus.d
  1621. Only in src/: intprint.d
  1622. Only in src/: intread.d
  1623. Only in src/: intsqrt.d
  1624. Only in src/: io.d
  1625. Only in src/: lfloat.d
  1626. Only in src/: lisparit.d
  1627. Only in src/: lisparit0.d
  1628. Only in src/: lisparit1.d
  1629. Only in src/: lisparit2.d
  1630. diff -c2 src.orig/lispbibl.d src/lispbibl.d
  1631. *** src.orig/lispbibl.d    Thu May 23 19:30:46 1996
  1632. --- src/lispbibl.d    Sun Jul 21 21:28:00 1996
  1633. ***************
  1634. *** 468,472 ****
  1635.         #endif
  1636.       #else
  1637. !       #define GETTEXT(str) (DEUTSCH ? DEUTSCH_MSG : ENGLISH ? ENGLISH_MSG : FRANCAIS ? FRANCAIS_MSG : str)
  1638.       #endif
  1639.     #endif
  1640. --- 468,473 ----
  1641.         #endif
  1642.       #else
  1643. !       # define GETTEXT(str) (DEUTSCH ? DEUTSCH_MSG : ENGLISH ? ENGLISH_MSG : FRANCAIS ? FRANCAIS_MSG : str)
  1644. !       #define GETTEXT(str) (DEUTSCH ? DEUTSCH_MSG : FRANCAIS ? FRANCAIS_MSG : ENGLISH_MSG)
  1645.       #endif
  1646.     #endif
  1647. ***************
  1648. *** 1535,1543 ****
  1649.   #ifdef AMIGAOS
  1650.   
  1651. - #ifdef GNU
  1652. -   # Expandiere alle Betriebssystem-Aufrufe inline, mit Markus Wild inlines.h
  1653. -   #define GNU_INLINES
  1654. - #endif
  1655.   #include "amiga.c"
  1656.   
  1657. --- 1536,1539 ----
  1658. ***************
  1659. *** 1739,1743 ****
  1660.   # Ob das Betriebssystem ein Environment verwaltet, das Strings zu Strings
  1661.   # assoziiert:
  1662. !   #if defined(UNIX) || defined(MSDOS) || defined(RISCOS) || defined(WIN32_UNIX)
  1663.       #define HAVE_ENVIRONMENT
  1664.     #endif
  1665. --- 1735,1739 ----
  1666.   # Ob das Betriebssystem ein Environment verwaltet, das Strings zu Strings
  1667.   # assoziiert:
  1668. !   #if defined(UNIX) || defined(MSDOS) || defined(AMIGAOS) || defined(RISCOS) || defined(WIN32_UNIX)
  1669.       #define HAVE_ENVIRONMENT
  1670.     #endif
  1671. ***************
  1672. *** 6639,6643 ****
  1673.   #ifndef LANGUAGE_STATIC
  1674.   # Sprache, in der mit dem Benutzer kommuniziert wird:
  1675. !   extern uintL language;
  1676.     #define language_english   0
  1677.     #define language_deutsch   1
  1678. --- 6635,6639 ----
  1679.   #ifndef LANGUAGE_STATIC
  1680.   # Sprache, in der mit dem Benutzer kommuniziert wird:
  1681. !   extern uintC language;
  1682.     #define language_english   0
  1683.     #define language_deutsch   1
  1684. ***************
  1685. *** 7460,7464 ****
  1686.   
  1687.   
  1688. ! # ####################### MODBIBL zu EVAL.D ############################## #
  1689.   
  1690.   # Anzahl der externen Module:
  1691. --- 7456,7460 ----
  1692.   
  1693.   
  1694. ! # ###################### MODBIBL zu MODULES.D ############################ #
  1695.   
  1696.   # Anzahl der externen Module:
  1697. ***************
  1698. *** 9704,9710 ****
  1699.   #ifdef AMIGAOS
  1700.     # Behandlung von AMIGAOS-Fehlern
  1701. !   # OS_error();
  1702.     # > IoErr(): Fehlercode
  1703. !     nonreturning_function(extern, OS_error, (void));
  1704.     # wird verwendet von SPVW, STREAM, PATHNAME
  1705.   #endif
  1706. --- 9700,9706 ----
  1707.   #ifdef AMIGAOS
  1708.     # Behandlung von AMIGAOS-Fehlern
  1709. !   # OS_error_();
  1710.     # > IoErr(): Fehlercode
  1711. !     nonreturning_function(extern, OS_error_, (void));
  1712.     # wird verwendet von SPVW, STREAM, PATHNAME
  1713.   #endif
  1714. ***************
  1715. *** 9716,9720 ****
  1716.     # wird verwendet von SPVW, STREAM, PATHNAME, GRAPH
  1717.   #endif
  1718. ! #if defined(UNIX) || defined(EMUNIX) || defined(WATCOM) || defined(RISCOS) || defined(WIN32_UNIX) || defined(WIN32_DOS)
  1719.     # Initialisierung der Fehlertabelle:
  1720.       extern int init_errormsg_table (void);
  1721. --- 9712,9716 ----
  1722.     # wird verwendet von SPVW, STREAM, PATHNAME, GRAPH
  1723.   #endif
  1724. ! #if defined(UNIX) || defined(EMUNIX) || defined(AMIGAOS) || defined(WATCOM) || defined(RISCOS) || defined(WIN32_UNIX) || defined(WIN32_DOS)
  1725.     # Initialisierung der Fehlertabelle:
  1726.       extern int init_errormsg_table (void);
  1727. ***************
  1728. *** 10407,10411 ****
  1729.   # wird verwendet von STDWIN
  1730.   
  1731. ! #if defined(HAVE_FFI) && defined(HAVE_LONGLONG)
  1732.   
  1733.   # Wandelt Integer >=0 in Unsigned Quadword um.
  1734. --- 10403,10407 ----
  1735.   # wird verwendet von STDWIN
  1736.   
  1737. ! #if (defined(HAVE_FFI) || defined(HAVE_AFFI)) && defined(HAVE_LONGLONG)
  1738.   
  1739.   # Wandelt Integer >=0 in Unsigned Quadword um.
  1740. ***************
  1741. *** 10414,10418 ****
  1742.   # < ergebnis: der Wert des Integer als Unsigned Quadword.
  1743.     extern uint64 I_to_UQ (object obj);
  1744. ! # wird verwendet von FOREIGN, vom FFI
  1745.   
  1746.   # Wandelt Integer in Signed Quadword um.
  1747. --- 10410,10417 ----
  1748.   # < ergebnis: der Wert des Integer als Unsigned Quadword.
  1749.     extern uint64 I_to_UQ (object obj);
  1750. ! # wird verwendet von AFFI, FOREIGN, vom FFI
  1751. ! #endif
  1752. ! #if defined(HAVE_FFI) && defined(HAVE_LONGLONG)
  1753.   
  1754.   # Wandelt Integer in Signed Quadword um.
  1755. ***************
  1756. *** 10425,10429 ****
  1757.   #endif
  1758.   
  1759. ! #ifdef HAVE_FFI
  1760.   # Wandelt ein Integer in ein C-Integer gegebenen Typs um.
  1761.   # I_to_xintyy(obj) setzt voraus, daß xintyy_p(obj) schon abgeprüft wurde.
  1762. --- 10424,10428 ----
  1763.   #endif
  1764.   
  1765. ! #if defined(HAVE_FFI) || defined(HAVE_AFFI)
  1766.   # Wandelt ein Integer in ein C-Integer gegebenen Typs um.
  1767.   # I_to_xintyy(obj) setzt voraus, daß xintyy_p(obj) schon abgeprüft wurde.
  1768. ***************
  1769. *** 10458,10462 ****
  1770.       #define I_to_slong  I_to_sint64
  1771.     #endif
  1772. ! # wird verwendet vom FFI
  1773.   #endif
  1774.   
  1775. --- 10457,10461 ----
  1776.       #define I_to_slong  I_to_sint64
  1777.     #endif
  1778. ! # wird verwendet von AFFI, vom FFI
  1779.   #endif
  1780.   
  1781. ***************
  1782. *** 10724,10736 ****
  1783.     extern void switch_text_mode (void);
  1784.   
  1785. - #endif
  1786. - # ######################################################################### #
  1787. - #if defined(AMIGAOS) && defined(GNU_INLINES) && defined(GNU_INLINES_LATE)
  1788. -   # Inline-Deklarationen der Betriebssystem-Funktionen nach Markus Wild
  1789. -   # (dürfen erst nach globalen Register-Deklarationen kommen!)
  1790. -   #include <inline/exec.h>
  1791. -   #include <inline/dos.h>
  1792.   #endif
  1793.   
  1794. --- 10723,10726 ----
  1795. Only in src/: list.d
  1796. Only in src/: loop.fas
  1797. Only in src/: loop.lib
  1798. Only in src/: loop.lsp
  1799. Only in src/: macros1.fas
  1800. Only in src/: macros1.lib
  1801. Only in src/: macros1.lsp
  1802. Only in src/: macros2.fas
  1803. Only in src/: macros2.lib
  1804. Only in src/: macros2.lsp
  1805. Only in src/: macros3.fas
  1806. Only in src/: macros3.lib
  1807. Only in src/: macros3.lsp
  1808. Only in src/: main.d
  1809. Only in src/: misc.d
  1810. Only in src/: modules.d
  1811. Only in src/: modules.h
  1812. Only in src/: noreadline.d
  1813. Only in src/: package.d
  1814. diff -c2 src.orig/pathname.d src/pathname.d
  1815. *** src.orig/pathname.d    Thu May 23 19:19:50 1996
  1816. --- src/pathname.d    Thu Aug 01 08:42:41 1996
  1817. ***************
  1818. *** 945,949 ****
  1819.         //: ENGLISH "~: argument should be a string, symbol, file stream or pathname, not ~"
  1820.         //: FRANCAIS "~ : L'argument doit être une chaîne, un symbole, un «stream» de fichier ou un «pathname» et non ~"
  1821. !       fehler(error,  GETTEXT("~: argument should be a string, symbol, file stream or pathname, not ~"));
  1822.       }
  1823.   
  1824. --- 945,949 ----
  1825.         //: ENGLISH "~: argument should be a string, symbol, file stream or pathname, not ~"
  1826.         //: FRANCAIS "~ : L'argument doit être une chaîne, un symbole, un «stream» de fichier ou un «pathname» et non ~"
  1827. !       fehler(error, GETTEXT("~: argument should be a string, symbol, file stream or pathname, not ~"));
  1828.       }
  1829.   
  1830. ***************
  1831. *** 6149,6153 ****
  1832.     local object assure_dir_exists(tolerantp)
  1833.       var reg5 boolean tolerantp;
  1834. !     { return assure_dir_exists(tolerantp,FALSE);
  1835.       }
  1836.   
  1837. --- 6149,6153 ----
  1838.     local object assure_dir_exists(tolerantp)
  1839.       var reg5 boolean tolerantp;
  1840. !     { return assure_dir_exists_(tolerantp,FALSE);
  1841.       }
  1842.   
  1843. ***************
  1844. *** 8819,8823 ****
  1845.                        # Stackaufbau: ..., pathname, dir_namestring, direntry.
  1846.                        # Feststellen, ob es ein Directory oder ein File ist:
  1847. !                      if (fibptr->fib_DirEntryType > 0) # Ist es ein Directory?
  1848.                          # Eintrag ist ein Directory.
  1849.                          { if (recursively) # alle rekursiven Subdirectories gewünscht?
  1850. --- 8819,8824 ----
  1851.                        # Stackaufbau: ..., pathname, dir_namestring, direntry.
  1852.                        # Feststellen, ob es ein Directory oder ein File ist:
  1853. !                      if ((fibptr->fib_DirEntryType > 0)
  1854. !                          && (fibptr->fib_DirEntryType != ST_SOFTLINK)) # Ist es ein Directory?
  1855.                          # Eintrag ist ein Directory.
  1856.                          { if (recursively) # alle rekursiven Subdirectories gewünscht?
  1857. Only in src/: places.fas
  1858. Only in src/: places.lib
  1859. Only in src/: places.lsp
  1860. Only in src/: predtype.d
  1861. Only in src/: pseudofun.d
  1862. Only in src/: rational.d
  1863. Only in src/: realelem.d
  1864. Only in src/: realrand.d
  1865. Only in src/: realtran.d
  1866. Only in src/: record.d
  1867. diff -c2 src.orig/rexx.d src/rexx.d
  1868. *** src.orig/rexx.d    Mon Apr 15 16:30:32 1996
  1869. --- src/rexx.d    Sun Jul 21 21:02:30 1996
  1870. ***************
  1871. *** 9,12 ****
  1872. --- 9,16 ----
  1873.   #include "amiga2.c"
  1874.   
  1875. + # ARexx 'library base' pointer:
  1876. + # (Muß global sichtbar sein und diesen Namen tragen, damit's der Linker findet!)
  1877. +   global struct RxsLib * RexxSysBase = NULL;
  1878.   
  1879.   #ifdef DEBUG_REXX
  1880. ***************
  1881. *** 412,415 ****
  1882. --- 416,420 ----
  1883.         # Die Message foreign ist nun beantwortet.
  1884.         O(rexx_inmsg_list) = deleteq(O(rexx_inmsg_list),foreign);
  1885. +       mark_fp_invalid(TheFpointer(foreign)); # prohibit further use
  1886.         debug_asciz_out(CRLFstring);
  1887.       }
  1888. ***************
  1889. *** 457,464 ****
  1890.       value1 = NIL; mv_count=0;
  1891.     }}
  1892. - # ARexx 'library base' pointer:
  1893. - # (Muß global sichtbar sein und diesen Namen tragen, damit's der Linker findet!)
  1894. -   global struct RxsLib * RexxSysBase = NULL;
  1895.   
  1896.   # Initialisiert das REXX-Interface.
  1897. --- 462,465 ----
  1898. Only in src/: rexx1.fas
  1899. Only in src/: rexx1.lib
  1900. diff -c2 src.orig/rexx1.lsp src/rexx1.lsp
  1901. *** src.orig/rexx1.lsp    Mon Apr 15 16:30:32 1996
  1902. --- src/rexx1.lsp    Thu Jun 13 21:59:49 1996
  1903. ***************
  1904. *** 1,4 ****
  1905.   ;;;; Rexx Funktionen für CLISP
  1906. ! ;;;; Jörg Höhle 5.7.1994
  1907.   
  1908.   (in-package "LISP")
  1909. --- 1,4 ----
  1910.   ;;;; Rexx Funktionen für CLISP
  1911. ! ;;;; Jörg Höhle 13.6.1996
  1912.   
  1913.   (in-package "LISP")
  1914. ***************
  1915. *** 44,49 ****
  1916.   ;; unbearbeiteten Messages und ihrer Antworten (Listen (Code String);
  1917.   ;; NIL für noch unbeantwortete Messages). Beim Abschicken einer Message
  1918. ! ;; bekommen wir ein "handle" als Erkennungszeichen (diese werden
  1919. ! ;; mit EQUAL verglichen).
  1920.   
  1921.   (defvar *rexx-outmsg-list* '())
  1922. --- 44,49 ----
  1923.   ;; unbearbeiteten Messages und ihrer Antworten (Listen (Code String);
  1924.   ;; NIL für noch unbeantwortete Messages). Beim Abschicken einer Message
  1925. ! ;; bekommen wir ein "handle" (FOREIGN-POINTER) als Erkennungszeichen
  1926. ! ;; (diese werden mit EQUALP verglichen).
  1927.   
  1928.   (defvar *rexx-outmsg-list* '())
  1929. ***************
  1930. *** 53,57 ****
  1931.   )
  1932.   (defun rexx-find-index (handle)
  1933. !   (assoc handle *rexx-outmsg-list* :test #'equal)
  1934.   )
  1935.   (defun rexx-delete-entry (acons)
  1936. --- 53,57 ----
  1937.   )
  1938.   (defun rexx-find-index (handle)
  1939. !   (assoc handle *rexx-outmsg-list* :test #'equalp)
  1940.   )
  1941.   (defun rexx-delete-entry (acons)
  1942. ***************
  1943. *** 109,113 ****
  1944.                      (when index (setf (cdr index) (rest event))) ; Antwort abspeichern
  1945.                    )
  1946. !                  (when (equal (first event) wait-for)
  1947.                      (return-from rexx-loop (rest event)) ; evtl. Schleife beenden
  1948.                   ))
  1949. --- 109,113 ----
  1950.                      (when index (setf (cdr index) (rest event))) ; Antwort abspeichern
  1951.                    )
  1952. !                  (when (equalp (first event) wait-for)
  1953.                      (return-from rexx-loop (rest event)) ; evtl. Schleife beenden
  1954.                   ))
  1955. Only in src/: screen.fas
  1956. Only in src/: screen.lib
  1957. diff -c2 src.orig/screen.lsp src/screen.lsp
  1958. *** src.orig/screen.lsp    Mon Apr 15 16:30:34 1996
  1959. --- src/screen.lsp    Tue Jul 23 09:38:56 1996
  1960. ***************
  1961. *** 41,45 ****
  1962.   
  1963.   ;;;; SCREEN-Package for Amiga
  1964. ! ;;;; Jörg Höhle, 17.1.1995
  1965.   
  1966.   #+AMIGA (use-package "CLOS")
  1967. --- 41,45 ----
  1968.   
  1969.   ;;;; SCREEN-Package for Amiga
  1970. ! ;;;; Jörg Höhle, 23.7.1996
  1971.   
  1972.   #+AMIGA (use-package "CLOS")
  1973. ***************
  1974. *** 62,69 ****
  1975.   
  1976.   ;; The class of all data present in SCREEN's generic streams.
  1977. ! (defclass screen-controller (generic-stream-controller) ())
  1978. ! ; Most stream functions are aliased to the following stream:
  1979. ! (defgeneric controller-stream (controller))
  1980.   
  1981.   ; The screen's mode: either T (raw) or NIL (line editing enabled)
  1982. --- 62,69 ----
  1983.   
  1984.   ;; The class of all data present in SCREEN's generic streams.
  1985. ! (defclass screen-controller (generic-stream-controller)
  1986. !   ((stream :reader controller-stream
  1987. !            :type stream
  1988. ! ) ))
  1989.   
  1990.   ; The screen's mode: either T (raw) or NIL (line editing enabled)
  1991. ***************
  1992. *** 75,90 ****
  1993.   
  1994.   ; terminal-controller generic streams refer to *terminal-io*.
  1995. ! (defclass terminal-controller (screen-controller) ())
  1996. ! (defmethod controller-stream ((controller terminal-controller))
  1997. !   *terminal-io*
  1998. ! )
  1999. ! ; The terminal's mode is cached in stream.d, no need to cache it here.
  2000.   
  2001.   ; window-controller generic streams refer to a special device stream.
  2002.   (defclass window-controller (screen-controller)
  2003. !   ((stream :reader controller-stream
  2004. !            :type stream
  2005. !            :initarg :stream
  2006. !    )
  2007.      (mode :accessor controller-mode
  2008.            :initform 'unknown ; the initial mode is unknown
  2009. --- 75,86 ----
  2010.   
  2011.   ; terminal-controller generic streams refer to *terminal-io*.
  2012. ! (defclass terminal-controller (screen-controller)
  2013. !   ((stream :initform *terminal-io*) ; cache so that *terminal-io* can be rebound
  2014. !    ; The terminal's mode is cached in stream.d, no need to cache it here.
  2015. ! ) )
  2016.   
  2017.   ; window-controller generic streams refer to a special device stream.
  2018.   (defclass window-controller (screen-controller)
  2019. !   ((stream :initarg :stream)
  2020.      (mode :accessor controller-mode
  2021.            :initform 'unknown ; the initial mode is unknown
  2022. ***************
  2023. *** 136,140 ****
  2024.   
  2025.   (defmethod generic-stream-read-char ((controller screen-controller))
  2026. !   (generic-raw-mode controller nil) ;; need to switch to cooked mode
  2027.     (read-char (controller-stream controller))
  2028.   )
  2029. --- 132,136 ----
  2030.   
  2031.   (defmethod generic-stream-read-char ((controller screen-controller))
  2032. !   (generic-raw-mode controller nil) ;; want to switch to cooked mode
  2033.     (read-char (controller-stream controller))
  2034.   )
  2035. ***************
  2036. *** 141,145 ****
  2037.   
  2038.   (defmethod generic-stream-listen ((controller screen-controller))
  2039. !   (generic-raw-mode controller nil) ;; need to switch to cooked mode
  2040.     (if (listen (controller-stream controller))
  2041.       0 ; something available
  2042. --- 137,141 ----
  2043.   
  2044.   (defmethod generic-stream-listen ((controller screen-controller))
  2045. !   (generic-raw-mode controller nil) ;; want to switch to cooked mode
  2046.     (if (listen (controller-stream controller))
  2047.       0 ; something available
  2048. ***************
  2049. *** 148,154 ****
  2050.   
  2051.   (defmethod generic-stream-clear-input ((controller screen-controller))
  2052. !   (generic-raw-mode controller nil) ;; need to switch to cooked mode
  2053.     (clear-input (controller-stream controller))
  2054. !   t
  2055.   )
  2056.   
  2057. --- 144,150 ----
  2058.   
  2059.   (defmethod generic-stream-clear-input ((controller screen-controller))
  2060. !   (generic-raw-mode controller nil) ;; want to switch to cooked mode
  2061.     (clear-input (controller-stream controller))
  2062. !   T
  2063.   )
  2064.   
  2065. ***************
  2066. *** 184,188 ****
  2067.   )
  2068.   
  2069. ! ; returns a list of all characters immediately available on stream
  2070.   (defun stream-chars (stream)
  2071.     (let ((res '()))
  2072. --- 180,184 ----
  2073.   )
  2074.   
  2075. ! ; Return a list of all characters immediately available on stream
  2076.   (defun stream-chars (stream)
  2077.     (let ((res '()))
  2078. ***************
  2079. *** 332,345 ****
  2080.   
  2081.   
  2082. - ;; Read characters in raw mode
  2083. - (defun read-raw-char (stream)
  2084. -   (raw-mode stream t)
  2085. -   (setq stream (controller-stream (generic-stream-controller stream)))
  2086. -   (read-char stream)
  2087. - )
  2088.   ;; This function does a simple mapping from CSI-sequences as reported
  2089.   ;; by the Amiga keyboard to characters with HYPER (even SUPER or CONTROL) bit
  2090. ! ;; set.
  2091.   ;; key   codes  shift   character
  2092.   ;; f1    CSI0~  CSI10~  #\f1, #\s-f1
  2093. --- 328,334 ----
  2094.   
  2095.   
  2096.   ;; This function does a simple mapping from CSI-sequences as reported
  2097.   ;; by the Amiga keyboard to characters with HYPER (even SUPER or CONTROL) bit
  2098. ! ;; set. Furthermore, most codes between 1 and 26 get the CONTROL bit set.
  2099.   ;; key   codes  shift   character
  2100.   ;; f1    CSI0~  CSI10~  #\f1, #\s-f1
  2101. ***************
  2102. *** 351,359 ****
  2103.   ;; Right CSIC   CSI @   #\Right, #\S-Right
  2104.   (defun read-keyboard-char (stream)
  2105. !   (let ((c (read-raw-char stream)))
  2106.       (if (char= c '#\CSI)
  2107.         (let ((chars '()) c)
  2108.           (loop
  2109. !           (setq c (read-raw-char stream))
  2110.             (unless (char<= #\Space c #\?) (return))
  2111.             (push c chars)
  2112. --- 340,352 ----
  2113.   ;; Right CSIC   CSI @   #\Right, #\S-Right
  2114.   (defun read-keyboard-char (stream)
  2115. !   ; In order to minimize mode switches, switch once then read from low-level stream
  2116. !   (raw-mode stream t)
  2117. !   (when (generic-stream-p stream)
  2118. !     (setq stream (controller-stream (generic-stream-controller stream))))
  2119. !   (let ((c (read-char stream)))
  2120.       (if (char= c '#\CSI)
  2121.         (let ((chars '()) c)
  2122.           (loop
  2123. !           (setq c (read-char stream))
  2124.             (unless (char<= #\Space c #\?) (return))
  2125.             (push c chars)
  2126. ***************
  2127. *** 394,476 ****
  2128.   
  2129.   
  2130. ! ;; This is another class of generic streams. A KEYBOARD stream is just
  2131. ! ;; a wrapper around another stream, just like the ALIAS streams in gstream.lsp,
  2132. ! ;; except that the read-char method calls the read-keyboard-char function.
  2133.   ;; The mode is switched to raw when the stream is created and switched back
  2134.   ;; when the stream is closed.
  2135. ! (defclass keyboard-controller (generic-stream-controller)
  2136. !   ((orig-stream :initarg :orig-stream)
  2137. !    (orig-mode :initarg :orig-mode)
  2138. ! ) )
  2139. ! (defun make-keyboard-stream (orig-stream)
  2140. !   (make-generic-stream
  2141. !     (make-instance 'keyboard-controller :orig-stream orig-stream
  2142. !                                         :orig-mode (raw-mode orig-stream t)
  2143. ! ) ) )
  2144. ! (defmethod generic-stream-read-char ((controller keyboard-controller))
  2145. !   (with-slots (orig-stream) controller
  2146. !     (read-keyboard-char orig-stream)
  2147. ! ) )
  2148. ! (defmethod generic-stream-listen ((controller keyboard-controller))
  2149. !   (with-slots (orig-stream) controller
  2150. !     (raw-mode orig-stream t)
  2151. !     (if (listen orig-stream)
  2152. !       0 ; something available
  2153. !       (let ((ch (read-char-no-hang orig-stream nil t)))
  2154. !         (cond ((eql ch t) -1) ; eof
  2155. !               ((null ch) +1) ; nothing available, not EOF
  2156. !               (t (unread-char ch orig-stream) 0) ; something available
  2157. ! ) ) ) ) )
  2158. ! (defmethod generic-stream-clear-input ((controller keyboard-controller))
  2159. !   (with-slots (orig-stream) controller
  2160. !     (raw-mode orig-stream t)
  2161. !     (clear-input orig-stream)
  2162. !     t
  2163. ! ) )
  2164. ! (defmethod generic-stream-write-char ((controller keyboard-controller) ch)
  2165. !   (with-slots (orig-stream) controller
  2166. !     (write-char ch orig-stream)
  2167. ! ) )
  2168. ! (defmethod generic-stream-finish-output ((controller keyboard-controller))
  2169. !   (with-slots (orig-stream) controller
  2170. !     (finish-output orig-stream)
  2171. ! ) )
  2172. ! (defmethod generic-stream-force-output ((controller keyboard-controller))
  2173. !   (with-slots (orig-stream) controller
  2174. !     (force-output orig-stream)
  2175. ! ) )
  2176. ! (defmethod generic-stream-clear-output ((controller keyboard-controller))
  2177. !   (with-slots (orig-stream) controller
  2178. !     (clear-output orig-stream)
  2179. ! ) )
  2180. ! (defmethod generic-stream-read-byte ((controller keyboard-controller))
  2181. !   (with-slots (orig-stream) controller
  2182. !     (raw-mode orig-stream t)
  2183. !     (read-byte orig-stream nil nil)
  2184. ! ) )
  2185. ! (defmethod generic-stream-write-byte (i (controller keyboard-controller))
  2186. !   (with-slots (orig-stream) controller
  2187. !     (write-byte i orig-stream)
  2188.   ) )
  2189. ! (defmethod generic-stream-close ((controller keyboard-controller))
  2190. !   (with-slots (orig-stream orig-mode) controller
  2191. !     (raw-mode orig-stream orig-mode)
  2192. !   )
  2193. !   ; don't close orig-stream
  2194.   )
  2195.   
  2196. ! (defmethod generic-raw-mode ((controller keyboard-controller) mode)
  2197. !   (with-slots (orig-stream) controller
  2198. !     (raw-mode orig-stream mode)
  2199.   ) )
  2200.   
  2201.   
  2202. ! #|
  2203. ! ;; Now we have all pieces that make up the stream *keyboard-input* :
  2204. ! ;; The (make-window nil) stream switches modes automatically, and
  2205. ! ;; (make-keyboard-stream ...) adds the read-keyboard-char translation.
  2206. ! (defparameter *keyboard-input* (make-keyboard-stream (make-window nil)))
  2207. ! ;; Beware! (make-keyboard-stream ...) switches the mode at stream creation time!
  2208. ! |#
  2209.   
  2210.   ) ; #+AMIGA
  2211. --- 387,431 ----
  2212.   
  2213.   
  2214. ! ;; Support for WITH-KEYBOARD and *KEYBOARD-INPUT*
  2215.   ;; The mode is switched to raw when the stream is created and switched back
  2216.   ;; when the stream is closed.
  2217. ! (defclass keyboard-controller (terminal-controller)
  2218. !   ((orig-mode :initform (raw-mode *terminal-io* t))
  2219. !    ; *terminal-io* is cached by terminal-controller
  2220.   ) )
  2221. ! (defmethod generic-stream-read-char ((controller keyboard-controller))
  2222. !   ; make some cursor and function keys mappings, see above
  2223. !   (read-keyboard-char (controller-stream controller))
  2224.   )
  2225.   
  2226. ! (defmethod generic-stream-listen ((controller screen-controller))
  2227. !   (generic-raw-mode controller t) ;; need to switch to raw mode
  2228. !   (if (listen (controller-stream controller))
  2229. !     0 ; something available
  2230. !     +1 ; nothing available, not EOF
  2231.   ) )
  2232.   
  2233. + (defmethod generic-stream-clear-input ((controller screen-controller))
  2234. +   (generic-raw-mode controller t) ;; need to switch to raw mode
  2235. +   (clear-input (controller-stream controller))
  2236. +   T
  2237. + )
  2238.   
  2239. ! (defmethod generic-stream-close ((controller keyboard-controller))
  2240. !   (with-slots (stream orig-mode) controller
  2241. !     (raw-mode stream orig-mode)
  2242. ! ) )
  2243. ! ; refine WITH-KEYBOARD expansion from USER1.LSP
  2244. ! (defun system::do-with-keyboard (fn)
  2245. !   (let ((*keyboard-input* (make-generic-stream
  2246. !                            (make-instance 'keyboard-controller))))
  2247. !     (unwind-protect
  2248. !       (funcall fn)
  2249. !       (close *keyboard-input*)
  2250. ! ) ) )
  2251.   
  2252.   ) ; #+AMIGA
  2253. Only in src/: screen0.lsp
  2254. Only in src/: screen1.lsp
  2255. Only in src/: screen2.fas
  2256. Only in src/: screen2.lib
  2257. Only in src/: screen2.lsp
  2258. Only in src/: sequence.d
  2259. Only in src/: sfloat.d
  2260. Only in src/: socket.d
  2261. Only in src/: sort.d
  2262. Only in src/: sp68000.mit.d
  2263. Only in src/: sp68000.mot.d
  2264. diff -c2 src.orig/spvw.d src/spvw.d
  2265. *** src.orig/spvw.d    Thu May 30 10:22:34 1996
  2266. --- src/spvw.d    Tue Aug 13 19:41:53 1996
  2267. ***************
  2268. *** 8061,8065 ****
  2269.   
  2270.     # Sprache, in der mit dem Benutzer kommuniziert wird:
  2271. !     global uintL language;
  2272.   
  2273.     # Initialisiert die Sprache, gegeben die Sprachbezeichnung.
  2274. --- 8061,8065 ----
  2275.   
  2276.     # Sprache, in der mit dem Benutzer kommuniziert wird:
  2277. !     global uintC language;
  2278.   
  2279.     # Initialisiert die Sprache, gegeben die Sprachbezeichnung.
  2280. ***************
  2281. *** 8099,8102 ****
  2282. --- 8099,8106 ----
  2283.             if (langname)
  2284.               { if (init_language_from(langname)) return; }
  2285. +           #ifdef AMIGAOS
  2286. +           langname = getenv("Language"); # since OS 3.0
  2287. +             { if (init_language_from(langname)) return; }
  2288. +           #endif
  2289.           }
  2290.           { var reg1 const char* lang = getenv("LANG");
  2291. ***************
  2292. *** 8902,8906 ****
  2293.               var reg2 uintC count;
  2294.               dotimesC(count,*module->stab_size,
  2295. !               { ptr->name = NIL; ptr->keywords = NIL; }
  2296.                 );
  2297.               # Die Pointer in der Objekt-Tabelle hat init_object_tab_1() schon vorinitialisiert.
  2298. --- 8906,8910 ----
  2299.               var reg2 uintC count;
  2300.               dotimesC(count,*module->stab_size,
  2301. !               { ptr->name = NIL; ptr->keywords = NIL; ptr++; }
  2302.                 );
  2303.               # Die Pointer in der Objekt-Tabelle hat init_object_tab_1() schon vorinitialisiert.
  2304. ***************
  2305. *** 9453,9456 ****
  2306. --- 9457,9462 ----
  2307.             { exit(RETURN_FAIL); }
  2308.           #endif
  2309. +         # Wir wollen uns nicht mehr mit OS Version 1.x beschäftigen
  2310. +     if (SysBase->LibNode.lib_Version < 36) { exit(RETURN_FAIL); }
  2311.           if (Input_handle==Handle_NULL) { Input_handle = Input(); }
  2312.           if (Output_handle==Handle_NULL) { Output_handle = Output(); }
  2313. ***************
  2314. *** 9478,9484 ****
  2315.             (CPU_IS_68000              # der 68000 hat nur 24 Bit Adreßbereich,
  2316.              ? MEMF_ANY                # nie ein zweiter Versuch nötig
  2317. !            : SysBase->LibNode.lib_Version > 35 # Betriebssystem-Version >= 2.0 ?
  2318. !              ? MEMF_24BITDMA                   # ja -> hat Flag MEMF_24BITDMA
  2319. !              : MEMF_CHIP                       # nein -> muß MEMF_CHIP verwenden
  2320.             );
  2321.           #endif
  2322. --- 9484,9488 ----
  2323.             (CPU_IS_68000              # der 68000 hat nur 24 Bit Adreßbereich,
  2324.              ? MEMF_ANY                # nie ein zweiter Versuch nötig
  2325. !            : MEMF_24BITDMA           # sonst Flag MEMF_24BITDMA
  2326.             );
  2327.           #endif
  2328. ***************
  2329. *** 10886,10890 ****
  2330.                 { stream_close(&STACK_0);                               \
  2331.                   if (ergebnis<0) { OS_error(); } # Fehler aufgetreten? \
  2332. !                 fehler_device_possibily_full(STACK_0);                \
  2333.                 }                                                       \
  2334.               end_system_call();                                        \
  2335. --- 10890,10894 ----
  2336.                 { stream_close(&STACK_0);                               \
  2337.                   if (ergebnis<0) { OS_error(); } # Fehler aufgetreten? \
  2338. !                 fehler_device_possibly_full(STACK_0);                 \
  2339.                 }                                                       \
  2340.               end_system_call();                                        \
  2341. ***************
  2342. *** 11241,11245 ****
  2343.                   && (ptr1->key_anz == ptr2->key_anz)
  2344.                ) )
  2345. !            {    
  2346.                PRINT_VALS(req_anz);
  2347.                PRINT_VALS(opt_anz);
  2348. --- 11245,11249 ----
  2349.                   && (ptr1->key_anz == ptr2->key_anz)
  2350.                ) )
  2351. !            {
  2352.                PRINT_VALS(req_anz);
  2353.                PRINT_VALS(opt_anz);
  2354. ***************
  2355. *** 11519,11523 ****
  2356.              if (offset == -1) goto abbruch1;
  2357.              elif (offset == -2) goto abbruch2;
  2358. !            elif (offset < 0) abort();
  2359.              else inc_file_offset(offset);
  2360.            }
  2361. --- 11523,11527 ----
  2362.              if (offset == -1) goto abbruch1;
  2363.              elif (offset == -2) goto abbruch2;
  2364. !            elif (offset < 0) { abort(); }
  2365.              else inc_file_offset(offset);
  2366.            }
  2367. ***************
  2368. *** 11722,11727 ****
  2369.            #undef READ
  2370.            begin_system_call();
  2371. !          #if defined(UNIX) || defined(DJUNIX) || defined(EMUNIX) || defined(WATCOM) || defined(AMIGAOS) || defined(RISCOS) || defined(WIN32_DOS) || defined(WIN32_UNIX)
  2372.            if ( CLOSE(handle) <0) goto abbruch1;
  2373.            #endif
  2374.            end_system_call();
  2375. --- 11726,11734 ----
  2376.            #undef READ
  2377.            begin_system_call();
  2378. !          #if defined(UNIX) || defined(DJUNIX) || defined(EMUNIX) || defined(WATCOM) || defined(RISCOS) || defined(WIN32_DOS) || defined(WIN32_UNIX)
  2379.            if ( CLOSE(handle) <0) goto abbruch1;
  2380. +          #elif defined(AMIGAOS)
  2381. +          # Never close handles twice
  2382. +          if ( CLOSE(handle) <0) { handle = Handle_NULL; goto abbruch1; }
  2383.            #endif
  2384.            end_system_call();
  2385. ***************
  2386. *** 11857,11869 ****
  2387.   # Es gibt eine Utility, die ein Executable nach einem Versionsstring absucht.
  2388.     global const char version_string[] =
  2389. !     "$VER: CLISP " VERSION
  2390.       #if defined(WIDE)
  2391. !       " (wide)"
  2392.       #elif defined(AMIGA3000)
  2393. !       " (high)"
  2394.       #else
  2395. !       " (low)"
  2396.       #endif
  2397. !     "\r\n";
  2398.   #endif
  2399.   
  2400. --- 11864,11879 ----
  2401.   # Es gibt eine Utility, die ein Executable nach einem Versionsstring absucht.
  2402.     global const char version_string[] =
  2403. !     "$VER: CLISP"
  2404.       #if defined(WIDE)
  2405. !       "-wide"
  2406.       #elif defined(AMIGA3000)
  2407. !       "-high"
  2408. !     #elif defined(MC68000)
  2409. !       "-68000"
  2410.       #else
  2411. !       "-low"
  2412.       #endif
  2413. !     " "STRINGIFY(VERSION_YYYY)"."STRINGIFY(VERSION_MM) # version.revision
  2414. !     " (" VERSION ")\r\n"; # Datum in Klammern
  2415.   #endif
  2416.   
  2417. Only in src/: spvwtabf.d
  2418. Only in src/: spvwtabo.d
  2419. Only in src/: spvwtabs.d
  2420. Only in src/: stdwin.d
  2421. diff -c2 src.orig/stream.d src/stream.d
  2422. *** src.orig/stream.d    Wed May 22 16:09:58 1996
  2423. --- src/stream.d    Thu Jun 13 23:18:21 1996
  2424. ***************
  2425. *** 1096,1100 ****
  2426.         if (!nullp(TheStream(stream)->strm_isatty))
  2427.           # interaktiv
  2428. !         { if (WaitForChar(handle,1000L)) # 1/1000 sec auf ein Zeichen warten
  2429.               { end_system_call(); return signean_null; } # eins da
  2430.               else
  2431. --- 1096,1100 ----
  2432.         if (!nullp(TheStream(stream)->strm_isatty))
  2433.           # interaktiv
  2434. !         { if (WaitForChar(handle,0L)) # 0 usec auf ein Zeichen warten
  2435.               { end_system_call(); return signean_null; } # eins da
  2436.               else
  2437. ***************
  2438. *** 1146,1150 ****
  2439.         { begin_system_call();
  2440.           loop
  2441. !           { if (!WaitForChar(handle,1000L)) # 1/1000 sec auf ein Zeichen warten
  2442.                 break; # keins mehr da -> fertig
  2443.              {var uintB c;
  2444. --- 1146,1150 ----
  2445.         { begin_system_call();
  2446.           loop
  2447. !           { if (!WaitForChar(handle,0L)) # 0 usec auf ein Zeichen warten
  2448.                 break; # keins mehr da -> fertig
  2449.              {var uintB c;
  2450. ***************
  2451. *** 3783,3819 ****
  2452.   #ifdef AMIGAOS
  2453.   
  2454. - # include <exec/types.h>
  2455. - # include <dos/dosextens.h>
  2456. - # include <inline/exec.h>
  2457. - # include <inline/dos.h>
  2458. - # From Ralph Babel, The Amiga GURU book, p. 278
  2459. - # SetMode() for pre-2.0 systems
  2460. - local LONG setmode (BPTR fh, LONG mode);
  2461. - local LONG setmode(fh,mode)
  2462. -   var BPTR fh;
  2463. -   var LONG mode;
  2464. -   { if (DOSBase->dl_lib.lib_Version > 35)
  2465. -       { return SetMode(fh,mode); }
  2466. -       else
  2467. -       # pre-2.0, no SetMode in the library
  2468. -       { register struct MsgPort *fh_type = ((struct FileHandle *)BADDR(fh))->fh_Type;
  2469. -         if (fh_type==NULL)
  2470. -           return DOSFALSE; /* NIL: has no message port */
  2471. -        {var LONGALIGNTYPE(struct StandardPacket) spb;
  2472. -         var struct StandardPacket * sp = LONGALIGN(&spb);
  2473. -         var struct MsgPort * mp = &((struct Process *)FindTask(NULL))->pr_MsgPort;
  2474. -         sp->sp_Msg.mn_Node.ln_Name = (char *)&sp->sp_Pkt;
  2475. -         sp->sp_Pkt.dp_Link         = &sp->sp_Msg;
  2476. -         sp->sp_Pkt.dp_Port         = mp;
  2477. -         sp->sp_Pkt.dp_Type         = ACTION_SCREEN_MODE;
  2478. -         sp->sp_Pkt.dp_Arg1         = mode; /* 0 for CON */
  2479. -         PutMsg(fh_type, &sp->sp_Msg);
  2480. -         WaitPort(mp);
  2481. -         GetMsg(mp);         /* assumes that no other packets are pending */
  2482. -         return sp->sp_Pkt.dp_Res1;
  2483. -   }   }}
  2484.   # Genauso wie den Terminal-Stream können wir auch beliebige interaktive
  2485.   # Handle-Streams (andere Text-Fenster) in den Raw-Modus schalten.
  2486. --- 3783,3786 ----
  2487. ***************
  2488. *** 3827,3831 ****
  2489.   global void terminal_sane()
  2490.     { if (!(terminal_mode == 0))
  2491. !       { begin_system_call(); setmode(Input_handle,0); end_system_call();
  2492.           terminal_mode = 0;
  2493.     }   }
  2494. --- 3794,3798 ----
  2495.   global void terminal_sane()
  2496.     { if (!(terminal_mode == 0))
  2497. !       { begin_system_call(); SetMode(Input_handle,0); end_system_call();
  2498.           terminal_mode = 0;
  2499.     }   }
  2500. ***************
  2501. *** 3857,3861 ****
  2502.                     else
  2503.                     { begin_system_call();
  2504. !                     success = setmode(Input_handle,new_mode);
  2505.                       end_system_call();
  2506.                       terminal_mode = new_mode;
  2507. --- 3824,3828 ----
  2508.                     else
  2509.                     { begin_system_call();
  2510. !                     success = SetMode(Input_handle,new_mode);
  2511.                       end_system_call();
  2512.                       terminal_mode = new_mode;
  2513. ***************
  2514. *** 3868,3872 ****
  2515.                     else
  2516.                     { begin_system_call();
  2517. !                     success = setmode(TheHandle(TheStream(stream)->strm_ihandle),new_mode);
  2518.                       end_system_call();
  2519.                       if (new_mode)
  2520. --- 3835,3839 ----
  2521.                     else
  2522.                     { begin_system_call();
  2523. !                     success = SetMode(TheHandle(TheStream(stream)->strm_ihandle),new_mode);
  2524.                       end_system_call();
  2525.                       if (new_mode)
  2526. Only in src/: subr.d
  2527. Only in src/: subrkw.d
  2528. Only in src/: symbol.d
  2529. Only in src/: testd.d
  2530. Only in src/: time.d
  2531. Only in src/: timezone.fas
  2532. Only in src/: timezone.lib
  2533. Only in src/: timezone.lsp
  2534. Only in src/: TODO
  2535. Only in src/: trace.fas
  2536. Only in src/: trace.lib
  2537. Only in src/: trace.lsp
  2538. Only in src/: type.fas
  2539. Only in src/: type.lib
  2540. Only in src/: type.lsp
  2541. Only in src/: user1.fas
  2542. Only in src/: user1.lib
  2543. diff -c2 src.orig/user1.lsp src/user1.lsp
  2544. *** src.orig/user1.lsp    Mon Apr 15 16:30:42 1996
  2545. --- src/user1.lsp    Wed Aug 07 00:59:40 1996
  2546. ***************
  2547. *** 149,153 ****
  2548.   (defun debug-return ()
  2549.     (return-from-eval-frame *debug-frame*
  2550. !     (read-form 
  2551.        #L{
  2552.        DEUTSCH "Werte: "
  2553. --- 149,153 ----
  2554.   (defun debug-return ()
  2555.     (return-from-eval-frame *debug-frame*
  2556. !     (read-form
  2557.        #L{
  2558.        DEUTSCH "Werte: "
  2559. ***************
  2560. *** 162,166 ****
  2561.   (defun commands0 ()
  2562.                (list
  2563. !                 #L{
  2564.                   DEUTSCH "
  2565.   Help = diese Liste
  2566. --- 162,166 ----
  2567.   (defun commands0 ()
  2568.                (list
  2569. !                #L{
  2570.                   DEUTSCH "
  2571.   Help = diese Liste
  2572. ***************
  2573. *** 176,182 ****
  2574.   )            )
  2575.   (defun commands1 ()
  2576. !   (let ((part1 
  2577. !          #L{
  2578. !           DEUTSCH "
  2579.   Help   = dieses Menü
  2580.   Abort  = Abbruch, Rücksprung zur nächsthöheren Eingabeschleife
  2581. --- 176,182 ----
  2582.   )            )
  2583.   (defun commands1 ()
  2584. !   (list
  2585. !     #L{
  2586. !        DEUTSCH "
  2587.   Help   = dieses Menü
  2588.   Abort  = Abbruch, Rücksprung zur nächsthöheren Eingabeschleife
  2589. ***************
  2590. *** 190,224 ****
  2591.   Up     = nächsthöheren Frame inspizieren
  2592.   Top    = obersten Frame inspizieren
  2593. ! Down   = nächstneueren Frame inspizieren"
  2594. !           ENGLISH "
  2595. ! Help   = this command list
  2596. ! Abort  = abort to the next recent input loop
  2597. ! Unwind = abort to the next recent input loop
  2598. ! Mode-1 = inspect all the stack elements
  2599. ! Mode-2 = inspect all the frames
  2600. ! Mode-3 = inspect only lexical frames
  2601. ! Mode-4 = inspect only EVAL and APPLY frames (default)
  2602. ! Mode-5 = inspect only APPLY frames
  2603. ! Where  = inspect this frame
  2604. ! Up     = go up one frame, inspect it
  2605. ! Top    = go to top frame, inspect it
  2606. ! Down   = go down one frame, inspect it"
  2607. !           FRANCAIS "
  2608. ! Help   = ce menu-ci
  2609. ! Abort  = arrêt, retour au niveau supérieur
  2610. ! Unwind = arrêt, retour au niveau supérieur
  2611. ! Mode-1 = examiner tous les éléments de la pile
  2612. ! Mode-2 = examiner tous les «frames»
  2613. ! Mode-3 = examiner uniquement les «frames» lexicaux
  2614. ! Mode-4 = examiner uniquement les «frames» EVAL et APPLY (par défaut)
  2615. ! Mode-5 = examiner uniquement les «frames» APPLY
  2616. ! Where  = examiner ce «frame»
  2617. ! Up     = examiner un «frame» supérieur
  2618. ! Top    = examiner le «frame» le plus élevé
  2619. ! Down   = examiner un prochain «frame» plus récent (inférieur)"
  2620. !           })
  2621. !         (part2
  2622. !          #L{
  2623. !           DEUTSCH "
  2624.   Bottom = neuesten Frame inspizieren
  2625.   Backtrace-1 = alle Stack-Elemente auflisten
  2626. --- 190,194 ----
  2627.   Up     = nächsthöheren Frame inspizieren
  2628.   Top    = obersten Frame inspizieren
  2629. ! Down   = nächstneueren Frame inspizieren
  2630.   Bottom = neuesten Frame inspizieren
  2631.   Backtrace-1 = alle Stack-Elemente auflisten
  2632. ***************
  2633. *** 232,236 ****
  2634.   Redo   = Form im EVAL-Frame erneut auswerten
  2635.   Return = EVAL-Frame mit gegebenen Werten verlassen"
  2636. !           ENGLISH "
  2637.   Down   = go down one frame, inspect it
  2638.   Bottom = go to bottom (most recent) frame, inspect it
  2639. --- 202,217 ----
  2640.   Redo   = Form im EVAL-Frame erneut auswerten
  2641.   Return = EVAL-Frame mit gegebenen Werten verlassen"
  2642. !        ENGLISH "
  2643. ! Help   = this command list
  2644. ! Abort  = abort to the next recent input loop
  2645. ! Unwind = abort to the next recent input loop
  2646. ! Mode-1 = inspect all the stack elements
  2647. ! Mode-2 = inspect all the frames
  2648. ! Mode-3 = inspect only lexical frames
  2649. ! Mode-4 = inspect only EVAL and APPLY frames (default)
  2650. ! Mode-5 = inspect only APPLY frames
  2651. ! Where  = inspect this frame
  2652. ! Up     = go up one frame, inspect it
  2653. ! Top    = go to top frame, inspect it
  2654.   Down   = go down one frame, inspect it
  2655.   Bottom = go to bottom (most recent) frame, inspect it
  2656. ***************
  2657. *** 245,249 ****
  2658.   Redo   = re-evaluate form in EVAL frame
  2659.   Return = leave EVAL frame, prescribing the return values"
  2660. !           FRANCAIS "
  2661.   Bottom = examiner le «frame» le plus récent (le plus bas)
  2662.   Backtrace-1 = montrer tous les éléments de la pile
  2663. --- 226,242 ----
  2664.   Redo   = re-evaluate form in EVAL frame
  2665.   Return = leave EVAL frame, prescribing the return values"
  2666. !        FRANCAIS "
  2667. ! Help   = ce menu-ci
  2668. ! Abort  = arrêt, retour au niveau supérieur
  2669. ! Unwind = arrêt, retour au niveau supérieur
  2670. ! Mode-1 = examiner tous les éléments de la pile
  2671. ! Mode-2 = examiner tous les «frames»
  2672. ! Mode-3 = examiner uniquement les «frames» lexicaux
  2673. ! Mode-4 = examiner uniquement les «frames» EVAL et APPLY (par défaut)
  2674. ! Mode-5 = examiner uniquement les «frames» APPLY
  2675. ! Where  = examiner ce «frame»
  2676. ! Up     = examiner un «frame» supérieur
  2677. ! Top    = examiner le «frame» le plus élevé
  2678. ! Down   = examiner un prochain «frame» plus récent (inférieur)
  2679.   Bottom = examiner le «frame» le plus récent (le plus bas)
  2680.   Backtrace-1 = montrer tous les éléments de la pile
  2681. ***************
  2682. *** 257,287 ****
  2683.   Redo   = réévaluer la forme dans le «frame» EVAL
  2684.   Return = quitter le «frame» EVAL avec certaines valeurs"
  2685. !           })
  2686. !         )
  2687. !     (list
  2688. !      (concatenate 'string part1 part2)
  2689. !      (cons "Help"   #'debug-help  )
  2690. !      (cons "?"      #'debug-help  )
  2691. !      (cons "Abort"  #'debug-unwind)
  2692. !      (cons "Unwind" #'debug-unwind)
  2693. !      (cons "Mode-1" #'debug-mode-1)
  2694. !      (cons "Mode-2" #'debug-mode-2)
  2695. !      (cons "Mode-3" #'debug-mode-3)
  2696. !      (cons "Mode-4" #'debug-mode-4)
  2697. !      (cons "Mode-5" #'debug-mode-5)
  2698. !      (cons "Where"  #'debug-where )
  2699. !      (cons "Up"     #'debug-up    )
  2700. !      (cons "Top"    #'debug-top   )
  2701. !      (cons "Down"   #'debug-down  )
  2702. !      (cons "Bottom" #'debug-bottom)
  2703. !      (cons "Backtrace-1" #'debug-backtrace-1)
  2704. !      (cons "Backtrace-2" #'debug-backtrace-2)
  2705. !      (cons "Backtrace-3" #'debug-backtrace-3)
  2706. !      (cons "Backtrace-4" #'debug-backtrace-4)
  2707. !      (cons "Backtrace-5" #'debug-backtrace-5)
  2708. !      (cons "Backtrace"   #'debug-backtrace  )
  2709. ! ) ) )
  2710. !     
  2711. !   (defun commands2 ()
  2712.                (list
  2713.                  (cons "Break+" #'debug-trap-on )
  2714. --- 250,276 ----
  2715.   Redo   = réévaluer la forme dans le «frame» EVAL
  2716.   Return = quitter le «frame» EVAL avec certaines valeurs"
  2717. !       }
  2718. !     (cons "Help"   #'debug-help  )
  2719. !     (cons "?"      #'debug-help  )
  2720. !     (cons "Abort"  #'debug-unwind)
  2721. !     (cons "Unwind" #'debug-unwind)
  2722. !     (cons "Mode-1" #'debug-mode-1)
  2723. !     (cons "Mode-2" #'debug-mode-2)
  2724. !     (cons "Mode-3" #'debug-mode-3)
  2725. !     (cons "Mode-4" #'debug-mode-4)
  2726. !     (cons "Mode-5" #'debug-mode-5)
  2727. !     (cons "Where"  #'debug-where )
  2728. !     (cons "Up"     #'debug-up    )
  2729. !     (cons "Top"    #'debug-top   )
  2730. !     (cons "Down"   #'debug-down  )
  2731. !     (cons "Bottom" #'debug-bottom)
  2732. !     (cons "Backtrace-1" #'debug-backtrace-1)
  2733. !     (cons "Backtrace-2" #'debug-backtrace-2)
  2734. !     (cons "Backtrace-3" #'debug-backtrace-3)
  2735. !     (cons "Backtrace-4" #'debug-backtrace-4)
  2736. !     (cons "Backtrace-5" #'debug-backtrace-5)
  2737. !     (cons "Backtrace"   #'debug-backtrace  )
  2738. ! ) )
  2739. ! (defun commands2 ()
  2740.                (list
  2741.                  (cons "Break+" #'debug-trap-on )
  2742. ***************
  2743. *** 363,367 ****
  2744.           (when interactive-p
  2745.             (terpri *debug-io*)
  2746. !           (write-string 
  2747.                      #L{
  2748.                      DEUTSCH "Sie können (mit Continue) fortfahren."
  2749. --- 352,356 ----
  2750.           (when interactive-p
  2751.             (terpri *debug-io*)
  2752. !           (write-string
  2753.                      #L{
  2754.                      DEUTSCH "Sie können (mit Continue) fortfahren."
  2755. ***************
  2756. *** 375,379 ****
  2757.             (terpri *debug-io*)
  2758.             (when interactive-p
  2759. !              (write-string 
  2760.                        #L{
  2761.                        DEUTSCH "Wenn Sie (mit Continue) fortfahren: "
  2762. --- 364,368 ----
  2763.             (terpri *debug-io*)
  2764.             (when interactive-p
  2765. !              (write-string
  2766.                        #L{
  2767.                        DEUTSCH "Wenn Sie (mit Continue) fortfahren: "
  2768. ***************
  2769. *** 528,532 ****
  2770.     (let ((*standard-output* *debug-io*))
  2771.       (terpri #|*debug-io*|#)
  2772. !     (write-string 
  2773.        #L{
  2774.        DEUTSCH "Step "
  2775. --- 517,521 ----
  2776.     (let ((*standard-output* *debug-io*))
  2777.       (terpri #|*debug-io*|#)
  2778. !     (write-string
  2779.        #L{
  2780.        DEUTSCH "Step "
  2781. ***************
  2782. *** 539,543 ****
  2783.       (write-string " ==> " #|*debug-io*|#)
  2784.       (case (length values)
  2785. !       (0 (write-string 
  2786.             #L{
  2787.             DEUTSCH "Keine Werte"
  2788. --- 528,532 ----
  2789.       (write-string " ==> " #|*debug-io*|#)
  2790.       (case (length values)
  2791. !       (0 (write-string
  2792.             #L{
  2793.             DEUTSCH "Keine Werte"
  2794. ***************
  2795. *** 547,551 ****
  2796.             #|*debug-io*|#
  2797.         )  )
  2798. !       (1 (write-string 
  2799.             #L{
  2800.             DEUTSCH "Wert: "
  2801. --- 536,540 ----
  2802.             #|*debug-io*|#
  2803.         )  )
  2804. !       (1 (write-string
  2805.             #L{
  2806.             DEUTSCH "Wert: "
  2807. ***************
  2808. *** 558,562 ****
  2809.         )
  2810.         (t (write (length values) #|:stream *debug-io*|#)
  2811. !          (write-string 
  2812.             #L{
  2813.             DEUTSCH " Werte: "
  2814. --- 547,551 ----
  2815.         )
  2816.         (t (write (length values) #|:stream *debug-io*|#)
  2817. !          (write-string
  2818.             #L{
  2819.             DEUTSCH " Werte: "
  2820. ***************
  2821. *** 600,604 ****
  2822.               )
  2823.           (fresh-line #|*debug-io*|#)
  2824. !         (write-string 
  2825.            #L{
  2826.            DEUTSCH "Step "
  2827. --- 589,593 ----
  2828.               )
  2829.           (fresh-line #|*debug-io*|#)
  2830. !         (write-string
  2831.            #L{
  2832.            DEUTSCH "Step "
  2833. ***************
  2834. *** 635,639 ****
  2835.               ) )   ) )
  2836.               (when watchp
  2837. !               (let ((form (read-form 
  2838.                              #L{
  2839.                              DEUTSCH "Abbruchbedingung: "
  2840. --- 624,628 ----
  2841.               ) )   ) )
  2842.               (when watchp
  2843. !               (let ((form (read-form
  2844.                              #L{
  2845.                              DEUTSCH "Abbruchbedingung: "
  2846. ***************
  2847. *** 695,699 ****
  2848.         (if (interactive-stream-p *debug-io*)
  2849.           (progn
  2850. !           (write-string 
  2851.                      #L{
  2852.                      DEUTSCH "Wenn Sie (mit Continue) fortfahren: "
  2853. --- 684,688 ----
  2854.         (if (interactive-stream-p *debug-io*)
  2855.           (progn
  2856. !           (write-string
  2857.                      #L{
  2858.                      DEUTSCH "Wenn Sie (mit Continue) fortfahren: "
  2859. ***************
  2860. *** 715,719 ****
  2861.   (defun warn (format-string &rest args)
  2862.     (terpri *error-output*)
  2863. !   (write-string 
  2864.      #L{
  2865.      DEUTSCH "WARNUNG:"
  2866. --- 704,708 ----
  2867.   (defun warn (format-string &rest args)
  2868.     (terpri *error-output*)
  2869. !   (write-string
  2870.      #L{
  2871.      DEUTSCH "WARNUNG:"
  2872. ***************
  2873. *** 765,769 ****
  2874.       (fresh-line *query-io*)
  2875.       (apply #'format *query-io* format-string args)
  2876. !     (write-string 
  2877.        #L{
  2878.        DEUTSCH " (j/n) "
  2879. --- 754,758 ----
  2880.       (fresh-line *query-io*)
  2881.       (apply #'format *query-io* format-string args)
  2882. !     (write-string
  2883.        #L{
  2884.        DEUTSCH " (j/n) "
  2885. ***************
  2886. *** 781,785 ****
  2887.       ) ) )
  2888.       (terpri *query-io*)
  2889. !     (write-string 
  2890.        #L{
  2891.        DEUTSCH "Bitte mit j oder n antworten: "
  2892. --- 770,774 ----
  2893.       ) ) )
  2894.       (terpri *query-io*)
  2895. !     (write-string
  2896.        #L{
  2897.        DEUTSCH "Bitte mit j oder n antworten: "
  2898. ***************
  2899. *** 795,799 ****
  2900.       (fresh-line *query-io*)
  2901.       (apply #'format *query-io* format-string args)
  2902. !     (write-string 
  2903.        #L{
  2904.        DEUTSCH " (ja/nein) "
  2905. --- 784,788 ----
  2906.       (fresh-line *query-io*)
  2907.       (apply #'format *query-io* format-string args)
  2908. !     (write-string
  2909.        #L{
  2910.        DEUTSCH " (ja/nein) "
  2911. ***************
  2912. *** 815,819 ****
  2913.       )
  2914.       (terpri *query-io*)
  2915. !     (write-string 
  2916.        #L{
  2917.        DEUTSCH "Bitte mit ja oder nein antworten: "
  2918. --- 804,808 ----
  2919.       )
  2920.       (terpri *query-io*)
  2921. !     (write-string
  2922.        #L{
  2923.        DEUTSCH "Bitte mit ja oder nein antworten: "
  2924. ***************
  2925. *** 825,828 ****
  2926. --- 814,825 ----
  2927.   
  2928.   (defvar *keyboard-input*)
  2929. + #+AMIGA
  2930. + (defun do-with-keyboard (fn)
  2931. +   ;; Funktion wird umdefiniert falls SCREEN geladen ist
  2932. +   (unwind-protect
  2933. +     (progn
  2934. +       (sys::terminal-raw *terminal-io* t)
  2935. +       (funcall fn))
  2936. +     (sys::terminal-raw *terminal-io* nil)))
  2937.   (defmacro with-keyboard (&body body)
  2938.     #+(or DOS OS/2 WIN32-DOS) ; *keyboard-input* existiert schon
  2939. ***************
  2940. *** 837,846 ****
  2941.       )
  2942.     #+AMIGA
  2943. !     `(LET ((*KEYBOARD-INPUT* (SCREEN::MAKE-KEYBOARD-STREAM *TERMINAL-IO*)))
  2944. !        (UNWIND-PROTECT
  2945. !          (PROGN ,@body)
  2946. !          (CLOSE *KEYBOARD-INPUT*)
  2947. !      ) )
  2948.   )
  2949.   
  2950. --- 834,838 ----
  2951.       )
  2952.     #+AMIGA
  2953. !     `(DO-WITH-KEYBOARD (FUNCTION (LAMBDA () ,@body)))
  2954.   )
  2955.   
  2956. Only in src/: user2.fas
  2957. Only in src/: user2.lib
  2958. diff -c2 src.orig/user2.lsp src/user2.lsp
  2959. *** src.orig/user2.lsp    Mon Apr 15 16:30:44 1996
  2960. --- src/user2.lsp    Fri Jul 05 00:46:37 1996
  2961. ***************
  2962. *** 525,528 ****
  2963. --- 525,537 ----
  2964.                       }
  2965.           ) ) )
  2966. +     #+(or AMIGA FFI)
  2967. +     (FOREIGN-POINTER
  2968. +           (format s 
  2969. +                   #L{
  2970. +                   DEUTSCH "ein Foreign-Pointer."
  2971. +                   ENGLISH "a foreign pointer"
  2972. +                   FRANCAIS "un pointeur étranger."
  2973. +                   }
  2974. +         ) )
  2975.           #+FFI
  2976.           (FOREIGN-ADDRESS
  2977. Only in src/: vcode.d
  2978. Only in src/: vcode.lsp
  2979. Only in src/: version.h
  2980.