- Update documentation.
- Update atari.h and apple2.h header files.
- Adapt Atari test/target programs.
- Fix a typo in "div" entry in funcref.sgml.
<tag/Declaration/<tt/unsigned char _is_cmdline_dos (void);/
<tag/Description/The function returns 0 if the DOS doesn't support command line arguments.
It returns 1 if it does.
-<tag/Notes/<itemize>
-<item>Many Atari DOSes which don't support command line arguments immediately clear the screen
-and display their menu after a program exits. Therefore it might be difficult to read
-the last messages printed by the program prior to its exit. This function can be used
-to decide if a delay or wait for a key press should be executed when then program
-exits.
-</itemize>
<tag/Availability/cc65 (<tt/atari/ and <tt/atarixl/ platforms)
-<tag/Example/<verb>
-/* Hello World for Atari */
-#include <stdio.h>
-#include <unistd.h>
-#include <atari.h>
-int main(void)
-{
- printf("Hello World\n");
- if (! _is_cmdline_dos())
- sleep(5);
- return 0;
-}
-</verb>
</descrip>
</quote>
<descrip>
<tag/Function/Divide two ints and return quotient and remainder.
<tag/Header/<tt/<ref id="stdlib.h" name="stdlib.h">/
-<tag/Declaration/<tt/div_t __fastcall__ div (int numer, int denom);/
-<tag/Description/<tt/div/ divides <tt/numer/ by <tt/denom/ and returns the
+<tag/Declaration/<tt/div_t __fastcall__ div (int number, int denom);/
+<tag/Description/<tt/div/ divides <tt/number/ by <tt/denom/ and returns the
quotient and remainder in a <tt/div_t/ structure.
<tag/Notes/<itemize>
<item>The function is only available as fastcall function, so it may only
</quote>
+<sect1>doesclrscrafterexit<label id="doesclrscrafterexit"><p>
+
+<quote>
+<descrip>
+<tag/Function/Determines whether the screen is going to be cleared after program exit.
+<tag/Header/<tt/<ref id="atari.h" name="atari.h">, <ref id="apple2.h" name="apple2.h">/
+<tag/Declaration/<tt/unsigned char doesclrscrafterexit (void);/
+<tag/Description/The function returns 0 if the screen won't be cleared immediately after
+program termination. It returns 1 if it will.
+<tag/Notes/<itemize>
+<item>Some systems, maybe depending on configuration, immediately clear the screen
+after a program exits. Therefore it might be difficult to read
+the last messages printed by the program prior to its exit. This function can be used
+to decide if a delay or wait for a key press should be executed when then program
+exits.
+</itemize>
+<tag/Availability/cc65 (<tt/atari/, <tt/atarixl/, <tt/apple2/, and <tt/apple2enh/ platforms)
+<tag/Example/<verb>
+/* Hello World */
+#include <stdio.h>
+#include <unistd.h>
+#include <atari.h>
+int main(void)
+{
+ printf("Hello World\n");
+ if (doesclrscrafterexit())
+ sleep(5);
+ return 0;
+}
+</verb>
+</descrip>
+</quote>
+
+
<sect1>em_commit<label id="em_commit"><p>
<quote>
void rebootafterexit (void);
/* Reboot machine after program termination has completed. */
+unsigned char doesclrscrafterexit (void);
+/* Will the screen automatically be cleared after program termination. */
+
#define ser_apple2_slot(num) ser_ioctl (0, (void*) (num))
/* Select a slot number from 1 to 7 prior to ser_open.
** The default slot number is 2.
/* numlines < 0 scrolls down */
/* misc. functions */
-extern unsigned char get_ostype(void); /* get ROM version */
-extern unsigned char get_tv(void); /* get TV system */
-extern void _save_vecs(void); /* save system vectors */
-extern void _rest_vecs(void); /* restore system vectors */
-extern char *_getdefdev(void); /* get default floppy device */
-extern unsigned char _is_cmdline_dos(void); /* does DOS support command lines */
+extern unsigned char get_ostype(void); /* get ROM version */
+extern unsigned char get_tv(void); /* get TV system */
+extern void _save_vecs(void); /* save system vectors */
+extern void _rest_vecs(void); /* restore system vectors */
+extern char *_getdefdev(void); /* get default floppy device */
+extern unsigned char _is_cmdline_dos(void); /* does DOS support command lines */
+extern unsigned char doesclrscrafterexit (void); /* will DOS clear the screen after program termination */
/* global variables */
extern unsigned char _dos_type; /* the DOS flavour */
--- /dev/null
+;
+; Christian Groessler, June-2016
+;
+; unsigned char doesclrscr(void);
+;
+; returns 0/1 if after program termination the screen isn't/is cleared
+;
+
+ .export _doesclrscrafterexit
+ .import __dos_type
+ .include "atari.inc"
+
+_doesclrscrafterexit:
+ ldx #0
+ lda __dos_type
+ cmp #MAX_DOS_WITH_CMDLINE + 1
+ txa
+ rol a
+ rts
;
.export __is_cmdline_dos
- .import __dos_type
- .include "atari.inc"
+ .import _doesclrscrafterexit
__is_cmdline_dos:
- ldx #0
- lda __dos_type
- cmp #MAX_DOS_WITH_CMDLINE + 1
- txa
- rol a
- eor #$01
+ jsr _doesclrscrafterexit ; currently (unless a DOS behaving differently is popping up)
+ eor #$01 ; we can get by with the inverse of _doesclrscrafterexit
rts
static void exitfn(void)
{
/* if DOS will automatically clear the screen, after the program exits, wait for a keypress... */
- if (! _is_cmdline_dos())
+ if (doesclrscrafterexit())
cgetc();
}
int main(void)
{
printf("default device: %s\n", _defdev);
- if (! _is_cmdline_dos()) cgetc();
+ if (doesclrscrafterexit()) cgetc();
return 0;
}
printf(" sp: $%04X (stack ptr)\n", getsp());
if (allocmem) free(allocmem);
- if (! _is_cmdline_dos()) cgetc();
+ if (doesclrscrafterexit()) cgetc();
return(0);
}