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