7bca5fab5b
git-svn-id: svn://svn.compuextreme.de/Viitor/V962/Viitor_cc65@4352 504e572c-2e33-0410-9681-be2bf7408885
50 lines
1.8 KiB
HTML
50 lines
1.8 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<META NAME="GENERATOR" CONTENT="LinuxDoc-Tools 0.9.20">
|
|
<TITLE>Commodore 610 specific information for cc65: Limitations</TITLE>
|
|
<LINK HREF="cbm610-7.html" REL=next>
|
|
<LINK HREF="cbm610-5.html" REL=previous>
|
|
<LINK HREF="cbm610.html#toc6" REL=contents>
|
|
</HEAD>
|
|
<BODY>
|
|
<A HREF="cbm610-7.html">Next</A>
|
|
<A HREF="cbm610-5.html">Previous</A>
|
|
<A HREF="cbm610.html#toc6">Contents</A>
|
|
<HR>
|
|
<H2><A NAME="limitations"></A> <A NAME="s6">6.</A> <A HREF="cbm610.html#toc6">Limitations</A></H2>
|
|
|
|
|
|
|
|
|
|
<H2><A NAME="ss6.1">6.1</A> <A HREF="cbm610.html#toc6.1">Kernal and hardware access</A>
|
|
</H2>
|
|
|
|
|
|
<P>Since the program runs in bank 1, and the kernal and all I/O chips are located
|
|
in bank 15, calling ROM routines or accessing hardware needs special code. The
|
|
cc65 runtime implements wrappers for all functions in the kernal jump table.
|
|
While this simplifies things, it should be noted that the wrappers do have
|
|
quite an impact on performance: A cross bank call has an extra 300µs
|
|
penalty added by the wrapper.</P>
|
|
|
|
<H2><A NAME="ss6.2">6.2</A> <A HREF="cbm610.html#toc6.2">Interrupts</A>
|
|
</H2>
|
|
|
|
|
|
<P>Compiled programs contain an interrupt handler that runs in the program bank.
|
|
This has several advantages, one of them being performance (see cross bank
|
|
call overhead mentioned above). However, this introduces one problem:
|
|
Interrupts are lost while the CPU executes code in the kernal bank. As a
|
|
result, the clock may go wrong and (worse) serial interrupts may get lost.</P>
|
|
<P>Since the cc65 runtime does only call the kernal for disk I/O, this means that
|
|
a program should not do file I/O while it depends on interrupts.</P>
|
|
|
|
|
|
<HR>
|
|
<A HREF="cbm610-7.html">Next</A>
|
|
<A HREF="cbm610-5.html">Previous</A>
|
|
<A HREF="cbm610.html#toc6">Contents</A>
|
|
</BODY>
|
|
</HTML>
|