home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Transactor
/
Transactor_07_1985_Transactor_Publishing.d64
/
remote.pal
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2023-02-26
|
3KB
|
194 lines
0 rem the transactor volume 6 issue 02 page 42
100 sys700
110 .opt oo
120 *=$c000
130 jmp setup
140 ;
150 ;kernal entries:
160 chkin =$ffc6
170 chkout =$ffc9
180 clall =$ffe7
200 getin =$ffe4
210 open =$ffc0
220 setlfs =$ffba
230 setnam =$ffbd
240 vector =$ff8d
250 ;
260 scrnout =$e716 ;chrout for screen
270 normout =$f1ca ;chrout vector
280 ;
290 asave =$fb ;temp storage for a
300 bufptr =$c6 ;# chrs in kbd buffr
320 outvec =$0326 ;output vector
330 stopvec =$0328 ;check stop vector
340 loadvec =$0330 ;load vector
350 savevec =$0332 ;save vector
370 ioabort =$032c
380 filenum =100 ;rs232 file #
390 ;
400 fn .byte 6,16 ;rs232 ctrl/command
420 ;
430 setup =*
440 ;
450 ;save old vectors
460 ldx #<vecsave
470 ldy #>vecsave
480 sec
490 jsr vector
500 ;
510 jsr clall ;close all files
550 jsr rsopen ;open rs232 file
560 ;
580 sei
600 ;change stop vector
610 lda #<newstop
620 sta stopvec
630 lda #>newstop
640 sta stopvec+1
650 ;
660 ;change load vector
670 lda #<newload
680 sta loadvec
690 lda #>newload
700 sta loadvec+1
710 ;
720 ;change save vector
730 lda #<newsave
740 sta savevec
750 lda #>newsave
760 sta savevec+1
770 ;
780 ;change "abort i/o" vector
790 lda #<newio
800 sta ioabort
810 lda #>newio
820 sta ioabort+1
830 ;
831 aftersav =*
832 sei
840 ;change output vector
850 lda #<newout: sta outvec
860 lda #>newout: sta outvec+1
870 ;
880 ;change irq vector
890 lda #<intrtn: sta $0314
900 lda #>intrtn: sta $0315
920 cli
930 rts
940 ;
950 ;
960 newout =*
970 ;this is the new output routine
980 ;which sends to rs232 and screen
990 ;the vector at $0326 points here
1000 ;
1005 sei
1010 sta asave
1020 txa: pha: tya: pha ;save x & y!!
1030 lda asave
1040 jsr scrnout ;screen
1050 ldx #filenum
1060 jsr chkout
1070 lda asave
1080 jsr normout ;rs232
1090 pla: tay: pla: tax
1100 lda asave ;restore a
1105 cli
1110 rts
1120 ;
1130 ;
1140 intrtn =*
1150 ;puts char from rs232 into
1160 ;keyboard buffer
1170 ;
1180 ldx #filenum
1190 jsr chkin ;connect rs232 channel
1200 jsr getin ;get character
1210 cmp #0 ;null
1220 beq out ;ignore nulls
1230 cmp #3 ;ctrl-c (break)
1240 bne nobrk
1250 lda #$7f ;indicate break
1260 sta brkflg ;..to new stop rtn
1270 jmp out
1280 nobrk =*
1290 ldx #0 ;clear stop
1300 stx brkflg ;..flag
1310 ldx bufptr ;# chars in buffer
1320 sta $0277,x ;keyboard buffer
1330 inc bufptr ;point to next char
1340 out =*
1350 ldx #0 ;switch back to
1360 jsr chkin ;..keyboard
1370 jmp (vecsave) ;system irq routine
1380 ;
1390 ;
1400 rsopen =*
1410 ;open rs232 file
1420 ldx #<fn ;point to
1430 ldy #>fn ;...filename
1440 lda #2 ;filename length
1450 jsr setnam ;set filename
1460 lda #filenum
1470 ldx #2
1480 ldy #2
1490 jsr setlfs
1500 jsr open ;open file#,2,2,fn
1510 ldx #filenum
1520 jsr chkout ;connect channel
1530 rts
1540 brkflg .byte 0
1550 ;
1560 newstop =*
1570 ;check stop key routine
1580 lda brkflg
1590 beq nostop
1600 sta $91
1610 lda #0
1620 sta brkflg
1630 nostop =*
1640 jmp (vecsave+20)
1650 ;
1660 ;
1670 newload =*
1680 ;load vector points here
1690 ;must disable stuff before load
1700 php: pha: txa: pha
1710 ldx #0 ;0=load
1730 jmp ld
1740 ;
1750 newsave =*
1760 php: pha: txa: pha
1770 ldx #2 ;2=save
1790 ;
1800 ld =*
1830 tya
1840 pha
1850 ;
1860 lda vecsave
1870 sta $0314 ;irq vector
1880 lda vecsave+1
1890 sta $0315
1900 ;
1910 lda vecsave+18
1920 sta outvec ;output vector
1930 lda vecsave+19
1940 sta outvec+1
1950 ;
1970 lda vecsave+28,x ;load/save adr lo
1980 sta ldsv+1
1990 lda vecsave+29,x ;load/save adr hi
2000 sta ldsv+2
2010 pla:tay:pla:tax:pla:plp
2020 ldsv jsr *-* ;load or save routine
2030 php:pha:txa:pha:tya:pha
2040 jsr aftersav
2050 pla:tay:pla:tax:pla:plp
2060 rts
2070 ;
2080 newio =*
2085 lda #1 ;always keep 1 file open
2090 jmp $f331
2100 ;
2110 vecsave *=*+26