1; GEOS KERNAL by Berkeley Softworks
2; reverse engineered by Maciej Witkowiak, Michael Steil
3;
4; System call jump table
5
6.include "const.inc"
7.include "geossym.inc"
8.include "geosmac.inc"
9.include "config.inc"
10.include "gkernal.inc"
11.include "diskdrv.inc"
12
13; init.s
14.import _FirstInit
15
16; icons.s
17.import _DoIcons
18
19; graph.s
20.import _i_ImprintRectangle
21.import _i_BitmapUp
22.import _i_GraphicsString
23.import _i_RecoverRectangle
24.import _i_FrameRectangle
25.import _i_Rectangle
26.import _SetPattern
27.import _GraphicsString
28
29; keyboard.s
30.import _GetNextChar
31
32; process.s
33.import _Sleep
34.import _UnfreezeProcess
35.import _FreezeProcess
36.import _UnblockProcess
37.import _BlockProcess
38.import _EnableProcess
39.import _RestartProcess
40.import _InitProcesses
41
42; mouse.s
43.import _ClearMouseMode
44.import _MouseOff
45.import _MouseUp
46.import _StartMouseMode
47
48; conio.s
49.import _SmallPutChar
50.import _i_PutString
51.import _PutDecimal
52.import _PutString
53.import _PutChar
54
55; reu.s
56.import _DoRAMOp
57.import _VerifyRAM
58.import _SwapRAM
59.import _FetchRAM
60.import _StashRAM
61
62; dlgbox.s
63.import _RstrFrmDialogue
64.import _DoDlgBox
65
66; load.s
67.import _GetFile
68.import _LdApplic
69.import _LdDeskAcc
70.import _LdFile
71.import _RstrAppl
72
73; filesys.s
74.import _AppendRecord
75.import _CloseRecordFile
76.import _DeleteFile
77.import _DeleteRecord
78.import _FastDelFile
79.import _FindFTypes
80.import _FindFile
81.import _FollowChain
82.import _FreeFile
83.import _GetFHdrInfo
84.import _GetPtrCurDkNm
85.import _InsertRecord
86.import _NextRecord
87.import _OpenRecordFile
88.import _PointRecord
89.import _PreviousRecord
90.import _ReadByte
91.import _ReadFile
92.import _ReadRecord
93.import _RenameFile
94.import _SaveFile
95.import _SetDevice
96.import _SetGDirEntry
97.import _UpdateRecordFile
98.import _WriteFile
99.import _WriteRecord
100
101; memory.s
102.import _CmpFString
103.import _CmpString
104.import _CopyFString
105.import _CopyString
106.import _i_MoveData
107.import _i_FillRam
108.import _InitRam
109.import _MoveData
110.import _FillRam
111.import _ClearRam
112
113; math.s
114.import _DShiftRight
115.import _Ddec
116.import _Dnegate
117.import _Dabs
118.import _DShiftLeft
119
120; sprites.s
121.import _DisablSprite
122.import _EnablSprite
123.import _PosSprite
124.import _DrawSprite
125
126; menu.s
127.import _GotoFirstMenu
128.import _ReDoMenu
129.import _DoPreviousMenu
130.import _RecoverAllMenus
131.import _RecoverMenu
132.import _DoMenu
133
134; fonts.s
135
136; tobasic.s
137.import _ToBASIC
138
139; main.s
140.import _StartAppl
141.import _EnterDeskTop
142.import _MainLoop
143.import _InterruptMain
144
145; misc.s
146.import _CallRoutine
147.import _DoInlineReturn
148
149; panic.s
150.import _Panic
151
152; serial.s
153.import _GetSerialNumber
154
155; ...
156.import __IsMseInRegion
157.import __CRC
158.import __GetRandom
159.import __DSdiv
160.import __Ddiv
161.import __DMult
162.import __BMult
163.import __BBMult
164.import __MainLoop
165
166.import _BitOtherClip
167.import _BitmapClip
168.import _ImprintRectangle
169.import _BitmapUp
170.import _TestPoint
171.import _GetScanLine
172.import _DrawPoint
173.import _DrawLine
174.import _RecoverRectangle
175.import _InvertRectangle
176.import _FrameRectangle
177.import _Rectangle
178.import _VerticalLine
179.import _RecoverLine
180.import _InvertLine
181.import _HorizontalLine
182.import _PromptOff
183.import _PromptOn
184.import _LoadCharSet
185.import _GetCharWidth
186.import _InitTextPrompt
187.import _GetString
188.import _UseSystemFont
189.import _BldGDirEntry
190.import _GetRealSize
191.import _ColorRectangle
192.import _ColorCard
193.import _SetColorMode
194.import _HideOnlyMouse
195.import _AccessCache
196.import _DoBOp
197.import _VerifyBData
198.import _SwapBData
199.import _MoveBData
200.import _SetMsePic
201.import _TempHideMouse
202.import _NormalizeX
203
204
205.global InterruptMain
206.global InitProcesses
207.global RestartProcess
208.global EnableProcess
209.global BlockProcess
210.global UnblockProcess
211.global FreezeProcess
212.global UnfreezeProcess
213;.global HorizontalLine
214.global InvertLine
215;.global RecoverLine
216;.global VerticalLine
217.global Rectangle
218.global FrameRectangle
219.global InvertRectangle
220;.global RecoverRectangle
221.global DrawLine
222;.global DrawPoint
223.global GraphicsString
224.global SetPattern
225.global GetScanLine
226.global TestPoint
227.global BitmapUp
228.global PutChar
229.global PutString
230.global UseSystemFont
231.global StartMouseMode
232.global DoMenu
233.global RecoverMenu
234.global RecoverAllMenus
235.global DoIcons
236.global DShiftLeft
237.global BBMult
238.global BMult
239.global DMult
240.global Ddiv
241.global DSdiv
242.global Dabs
243.global Dnegate
244.global Ddec
245.global ClearRam
246.global FillRam
247.global MoveData
248.global InitRam
249.global PutDecimal
250.global GetRandom
251.global MouseUp
252.global MouseOff
253.global DoPreviousMenu
254.global ReDoMenu
255.global GetSerialNumber
256.global Sleep
257.global ClearMouseMode
258.global i_Rectangle
259.global i_FrameRectangle
260.global i_RecoverRectangle
261.global i_GraphicsString
262.global i_BitmapUp
263.global i_PutString
264.global GetRealSize
265.global i_FillRam
266.global i_MoveData
267.global GetString
268.global GotoFirstMenu
269.global InitTextPrompt
270.global MainLoop
271.global DrawSprite
272.global GetCharWidth
273.global LoadCharSet
274.global PosSprite
275.global EnablSprite
276.global DisablSprite
277.global CallRoutine
278.global CalcBlksFree
279.global ChkDkGEOS
280.global NewDisk
281.global GetBlock
282.global PutBlock
283.global SetGEOSDisk
284.global SaveFile
285.global SetGDirEntry
286.global BldGDirEntry
287.global GetFreeDirBlk
288.global WriteFile
289.global BlkAlloc
290.global ReadFile
291.global SmallPutChar
292.global FollowChain
293.global GetFile
294.global FindFile
295.global CRC
296.global LdFile
297.global EnterTurbo
298.global LdDeskAcc
299.global ReadBlock
300.global LdApplic
301.global WriteBlock
302.global VerWriteBlock
303.global FreeFile
304.global GetFHdrInfo
305.global EnterDeskTop
306.global StartAppl
307.global ExitTurbo
308.global PurgeTurbo
309.global DeleteFile
310.global FindFTypes
311.global RstrAppl
312.global ToBASIC
313.global FastDelFile
314.global GetDirHead
315.global PutDirHead
316.global NxtBlkAlloc
317;.global ImprintRectangle
318.global i_ImprintRectangle
319.global DoDlgBox
320.global RenameFile
321.global InitForIO
322.global DoneWithIO
323.global DShiftRight
324.global CopyString
325.global CopyFString
326.global CmpString
327.global CmpFString
328.global FirstInit
329.global OpenRecordFile
330.global CloseRecordFile
331.global NextRecord
332.global PreviousRecord
333.global PointRecord
334.global DeleteRecord
335.global InsertRecord
336.global AppendRecord
337.global ReadRecord
338.global WriteRecord
339.global SetNextFree
340.global UpdateRecordFile
341.global GetPtrCurDkNm
342.global PromptOn
343.global PromptOff
344.global OpenDisk
345.global DoInlineReturn
346.global GetNextChar
347.global BitmapClip
348.global FindBAMBit
349.global SetDevice
350.global IsMseInRegion
351.global ReadByte
352.global FreeBlock
353.global ChangeDiskDevice
354.global RstrFrmDialogue
355.global Panic
356.global BitOtherClip
357.global StashRAM
358.global FetchRAM
359.global SwapRAM
360.global VerifyRAM
361.global DoRAMOp
362.global StashRAM
363.global FetchRAM
364.global SwapRAM
365.global VerifyRAM
366.global DoRAMOp
367
368.ifdef bsw128
369.global TempHideMouse
370.global SetMsePic
371.global SetNewMode
372.global NormalizeX
373.global MoveBData
374.global SwapBData
375.global VerifyBData
376.global DoBOp
377.global AccessCache
378.global HideOnlyMouse
379.global SetColorMode
380.global ColorCard
381.global ColorRectangle
382.endif
383
384.ifdef wheels
385.global InitMachine
386.global GEOSOptimize
387.global DEFOptimize
388.global DoOptimize
389.global NFindFTypes
390.global ReadXYPot
391.global MainIRQ
392.global ColorRectangle_W
393.global i_ColorRectangle
394.global SaveColor
395.global RstrColor
396.global ConvToCards
397.endif
398
399.segment "jumptab"
400
401.assert * = $C100, error, "Jump table not at $C100"
402
403InterruptMain:
404	jmp _InterruptMain
405InitProcesses:
406	jmp _InitProcesses
407RestartProcess:
408	jmp _RestartProcess
409EnableProcess:
410	jmp _EnableProcess
411BlockProcess:
412	jmp _BlockProcess
413UnblockProcess:
414	jmp _UnblockProcess
415FreezeProcess:
416	jmp _FreezeProcess
417UnfreezeProcess:
418	jmp _UnfreezeProcess
419HorizontalLine:
420	jmp _HorizontalLine
421InvertLine:
422	jmp _InvertLine
423RecoverLine:
424	jmp _RecoverLine
425VerticalLine:
426	jmp _VerticalLine
427Rectangle:
428	jmp _Rectangle
429FrameRectangle:
430	jmp _FrameRectangle
431InvertRectangle:
432	jmp _InvertRectangle
433RecoverRectangle:
434	jmp _RecoverRectangle
435DrawLine:
436	jmp _DrawLine
437DrawPoint:
438	jmp _DrawPoint
439GraphicsString:
440	jmp _GraphicsString
441SetPattern:
442	jmp _SetPattern
443GetScanLine:
444	jmp _GetScanLine
445TestPoint:
446	jmp _TestPoint
447BitmapUp:
448	jmp _BitmapUp
449PutChar:
450	jmp _PutChar
451PutString:
452	jmp _PutString
453UseSystemFont:
454	jmp _UseSystemFont
455StartMouseMode:
456	jmp _StartMouseMode
457DoMenu:
458	jmp _DoMenu
459RecoverMenu:
460	jmp _RecoverMenu
461RecoverAllMenus:
462	jmp _RecoverAllMenus
463DoIcons:
464	jmp _DoIcons
465DShiftLeft:
466	jmp _DShiftLeft
467BBMult:
468	jmp __BBMult
469BMult:
470	jmp __BMult
471DMult:
472	jmp __DMult
473Ddiv:
474	jmp __Ddiv
475DSdiv:
476	jmp __DSdiv
477Dabs:
478	jmp _Dabs
479Dnegate:
480	jmp _Dnegate
481Ddec:
482	jmp _Ddec
483ClearRam:
484	jmp _ClearRam
485FillRam:
486	jmp _FillRam
487MoveData:
488	jmp _MoveData
489InitRam:
490	jmp _InitRam
491PutDecimal:
492	jmp _PutDecimal
493GetRandom:
494	jmp __GetRandom
495MouseUp:
496	jmp _MouseUp
497MouseOff:
498	jmp _MouseOff
499DoPreviousMenu:
500	jmp _DoPreviousMenu
501ReDoMenu:
502	jmp _ReDoMenu
503GetSerialNumber:
504	jmp _GetSerialNumber
505Sleep:
506	jmp _Sleep
507ClearMouseMode:
508	jmp _ClearMouseMode
509i_Rectangle:
510	jmp _i_Rectangle
511i_FrameRectangle:
512	jmp _i_FrameRectangle
513i_RecoverRectangle:
514	jmp _i_RecoverRectangle
515i_GraphicsString:
516	jmp _i_GraphicsString
517i_BitmapUp:
518	jmp _i_BitmapUp
519i_PutString:
520	jmp _i_PutString
521GetRealSize:
522	jmp _GetRealSize
523i_FillRam:
524	jmp _i_FillRam
525i_MoveData:
526	jmp _i_MoveData
527GetString:
528	jmp _GetString
529GotoFirstMenu:
530	jmp _GotoFirstMenu
531InitTextPrompt:
532	jmp _InitTextPrompt
533MainLoop:
534.ifdef bsw128
535	jmp __MainLoop
536.else
537	jmp _MainLoop
538.endif
539DrawSprite:
540	jmp _DrawSprite
541GetCharWidth:
542	jmp _GetCharWidth
543LoadCharSet:
544	jmp _LoadCharSet
545PosSprite:
546	jmp _PosSprite
547EnablSprite:
548	jmp _EnablSprite
549DisablSprite:
550	jmp _DisablSprite
551CallRoutine:
552	jmp _CallRoutine
553CalcBlksFree:
554	jmp (_CalcBlksFree)
555ChkDkGEOS:
556	jmp (_ChkDkGEOS)
557NewDisk:
558	jmp (_NewDisk)
559GetBlock:
560	jmp (_GetBlock)
561PutBlock:
562	jmp (_PutBlock)
563SetGEOSDisk:
564	jmp (_SetGEOSDisk)
565SaveFile:
566	jmp _SaveFile
567SetGDirEntry:
568	jmp _SetGDirEntry
569BldGDirEntry:
570	jmp _BldGDirEntry
571GetFreeDirBlk:
572	jmp (_GetFreeDirBlk)
573WriteFile:
574	jmp _WriteFile
575BlkAlloc:
576	jmp (_BlkAlloc)
577ReadFile:
578	jmp _ReadFile
579SmallPutChar:
580	jmp _SmallPutChar
581FollowChain:
582	jmp _FollowChain
583GetFile:
584	jmp _GetFile
585FindFile:
586	jmp _FindFile
587CRC:
588	jmp __CRC
589LdFile:
590	jmp _LdFile
591EnterTurbo:
592	jmp (_EnterTurbo)
593LdDeskAcc:
594	jmp _LdDeskAcc
595ReadBlock:
596	jmp (_ReadBlock)
597LdApplic:
598	jmp _LdApplic
599WriteBlock:
600	jmp (_WriteBlock)
601VerWriteBlock:
602	jmp (_VerWriteBlock)
603FreeFile:
604	jmp _FreeFile
605GetFHdrInfo:
606	jmp _GetFHdrInfo
607EnterDeskTop:
608	jmp _EnterDeskTop
609StartAppl:
610	jmp _StartAppl
611ExitTurbo:
612	jmp (_ExitTurbo)
613PurgeTurbo:
614	jmp (_PurgeTurbo)
615DeleteFile:
616	jmp _DeleteFile
617FindFTypes:
618	jmp _FindFTypes
619RstrAppl:
620	jmp _RstrAppl
621ToBASIC:
622	jmp _ToBASIC
623FastDelFile:
624	jmp _FastDelFile
625GetDirHead:
626	jmp (_GetDirHead)
627PutDirHead:
628	jmp (_PutDirHead)
629NxtBlkAlloc:
630	jmp (_NxtBlkAlloc)
631ImprintRectangle:
632	jmp _ImprintRectangle
633i_ImprintRectangle:
634	jmp _i_ImprintRectangle
635DoDlgBox:
636	jmp _DoDlgBox
637RenameFile:
638	jmp _RenameFile
639InitForIO:
640	jmp (_InitForIO)
641DoneWithIO:
642	jmp (_DoneWithIO)
643DShiftRight:
644	jmp _DShiftRight
645CopyString:
646	jmp _CopyString
647CopyFString:
648	jmp _CopyFString
649CmpString:
650	jmp _CmpString
651CmpFString:
652	jmp _CmpFString
653FirstInit:
654	jmp _FirstInit
655OpenRecordFile:
656	jmp _OpenRecordFile
657CloseRecordFile:
658	jmp _CloseRecordFile
659NextRecord:
660	jmp _NextRecord
661PreviousRecord:
662	jmp _PreviousRecord
663PointRecord:
664	jmp _PointRecord
665DeleteRecord:
666	jmp _DeleteRecord
667InsertRecord:
668	jmp _InsertRecord
669AppendRecord:
670	jmp _AppendRecord
671ReadRecord:
672	jmp _ReadRecord
673WriteRecord:
674	jmp _WriteRecord
675SetNextFree:
676	jmp (_SetNextFree)
677UpdateRecordFile:
678	jmp _UpdateRecordFile
679GetPtrCurDkNm:
680	jmp _GetPtrCurDkNm
681PromptOn:
682	jmp _PromptOn
683PromptOff:
684	jmp _PromptOff
685OpenDisk:
686	jmp (_OpenDisk)
687DoInlineReturn:
688	jmp _DoInlineReturn
689GetNextChar:
690	jmp _GetNextChar
691BitmapClip:
692	jmp _BitmapClip
693FindBAMBit:
694	jmp (_FindBAMBit)
695SetDevice:
696	jmp _SetDevice
697IsMseInRegion:
698	jmp __IsMseInRegion
699ReadByte:
700	jmp _ReadByte
701FreeBlock:
702	jmp (_FreeBlock)
703ChangeDiskDevice:
704	jmp (_ChangeDiskDevice)
705RstrFrmDialogue:
706	jmp _RstrFrmDialogue
707Panic:
708.ifdef gateway
709	jmp _EnterDeskTop
710.else
711	jmp _Panic
712.endif
713BitOtherClip:
714	jmp _BitOtherClip
715.ifdef REUPresent
716StashRAM:
717	jmp _StashRAM
718FetchRAM:
719	jmp _FetchRAM
720SwapRAM:
721	jmp _SwapRAM
722VerifyRAM:
723	jmp _VerifyRAM
724DoRAMOp:
725	jmp _DoRAMOp
726.else
727StashRAM:
728	ldx #DEV_NOT_FOUND
729	rts
730FetchRAM:
731	ldx #DEV_NOT_FOUND
732	rts
733SwapRAM:
734	ldx #DEV_NOT_FOUND
735	rts
736VerifyRAM:
737	ldx #DEV_NOT_FOUND
738	rts
739DoRAMOp:
740	ldx #DEV_NOT_FOUND
741	rts
742.endif
743
744.ifdef bsw128
745TempHideMouse:
746	jmp _TempHideMouse
747
748SetMsePic:
749	jmp _SetMsePic
750
751SetNewMode:
752.import _SetNewMode
753	jmp _SetNewMode
754
755NormalizeX:
756	jmp _NormalizeX
757
758MoveBData:
759	jmp _MoveBData
760
761SwapBData:
762	jmp _SwapBData
763
764VerifyBData:
765	jmp _VerifyBData
766
767DoBOp:
768	jmp _DoBOp
769
770AccessCache:
771	jmp _AccessCache
772
773HideOnlyMouse:
774	jmp _HideOnlyMouse
775
776SetColorMode:
777	jmp _SetColorMode
778
779ColorCard:
780	jmp _ColorCard
781
782ColorRectangle:
783	jmp _ColorRectangle
784
785.elseif .defined(wheels)
786
787.macro UNIMPLEMENTED
788	rts
789	nop
790	nop
791.endmacro
792
793; C128 syscalls
794TempHideMouse:
795	UNIMPLEMENTED
796SetMsePic:
797	UNIMPLEMENTED
798SetNewMode:
799	UNIMPLEMENTED
800NormalizeX:
801	UNIMPLEMENTED
802MoveBData:
803	UNIMPLEMENTED
804SwapBData:
805	UNIMPLEMENTED
806VerifyBData:
807	UNIMPLEMENTED
808DoBOp:
809	UNIMPLEMENTED
810AccessCache:
811	UNIMPLEMENTED
812HideOnlyMouse:
813	UNIMPLEMENTED
814SetColorMode:
815	UNIMPLEMENTED
816ColorCard:
817	UNIMPLEMENTED
818ColorRectangle:
819	UNIMPLEMENTED
820
821; new Wheels syscalls
822.global InitMachine, _i_ColorRectangle
823.import _InitMachine, _GEOSOptimize, _DEFOptimize, _DoOptimize, _FindFTypes, _ReadXYPot, _IRQHandler, _ColorRectangle_W, _i_ColorRectangle, _SaveColor, _RstrColor, _ConvToCards
824InitMachine: ; $C2FE
825	jmp _InitMachine
826GEOSOptimize: ; $C301
827	jmp _GEOSOptimize
828DEFOptimize: ; $C304
829	jmp _DEFOptimize
830DoOptimize: ; $C307
831	jmp _DoOptimize
832NFindFTypes: ; $C30A
833	jmp _FindFTypes
834ReadXYPot: ; $C30D
835	jmp _ReadXYPot
836MainIRQ: ; $C310
837	jmp _IRQHandler
838ColorRectangle_W: ; $C313
839	jmp _ColorRectangle_W
840i_ColorRectangle: ; $C316
841	jmp _i_ColorRectangle
842SaveColor: ; $C319
843	jmp _SaveColor
844RstrColor: ; $C31C
845	jmp _RstrColor
846ConvToCards: ; $C31F
847	jmp _ConvToCards
848
849	.byte 0, 0, 0 ; ???
850.endif
851
852.ifdef wheels_size
853.global WheelsTemp
854WheelsTemp: ; xxx
855	.byte 0
856.endif
857