1;---------------------------------------------------------------------- 2; Vectors, Memory 3;---------------------------------------------------------------------- 4; (C)1983 Commodore Business Machines (CBM) 5; additions: (C)2020 Michael Steil, License: 2-clause BSD 6 7.feature labels_without_colons 8 9.include "io.inc" 10 11.import nsave, nload, nclall, ngetin, nstop, nbsout, nbasin, nclrch, nckout, nchkin, nclose, nopen, nnmi, timb, key, cinv 12.importzp tmp2 13.export iobase, membot, memtop, restor, vector 14 15.segment "KVAR" 16 17memstr .res 2 ; start of memory 18memsiz .res 2 ; top of memory 19rambks .res 1 ; X16: number of ram banks (0 means 256) 20 21.segment "MEMORY" 22 23; restor - set kernal indirects and vectors (system) 24; 25restor ldx #<vectss 26 ldy #>vectss 27 clc 28; 29; vector - set kernal indirect and vectors (user) 30; 31vector stx tmp2 32 sty tmp2+1 33 ldy #vectse-vectss-1 34movos1 lda cinv,y ;get from storage 35 bcs movos2 ;c...want storage to user 36 lda (tmp2),y ;...want user to storage 37movos2 sta (tmp2),y ;put in user 38 sta cinv,y ;put in storage 39 dey 40 bpl movos1 41 rts 42; 43vectss .word key,timb,nnmi 44 .word nopen,nclose,nchkin 45 .word nckout,nclrch,nbasin 46 .word nbsout,nstop,ngetin 47 .word nclall,timb ;goto break on a usrcmd jmp 48 .word nload,nsave 49vectse 50 51 52memtop bcc settop 53; 54;carry set--read top of memory 55; 56gettop ldx memsiz 57 ldy memsiz+1 58 lda rambks 59; 60;carry clear--set top of memory 61; 62settop sta rambks 63 stx memsiz 64 sty memsiz+1 65 rts 66 67;manage bottom of memory 68; 69membot bcc setbot 70; 71;carry set--read bottom of memory 72; 73 ldx memstr 74 ldy memstr+1 75; 76;carry clear--set bottom of memory 77; 78setbot stx memstr 79 sty memstr+1 80 rts 81 82; 83;return address of first 6522 84; 85iobase 86 ldx #<via1 87 ldy #>via1 88 rts 89