mirror of https://github.com/mist64/cbmsrc.git
Michael Steil
4 years ago
12 changed files with 6280 additions and 3 deletions
@ -0,0 +1,80 @@
|
||||
; |
||||
; THIS MODULE SIMULATES ROM COLD-START PROCEDURES FOR THE C=128 DOS SHELL |
||||
; |
||||
; Ram / Rom Labels Used for Shell Auto-Boot from Disk |
||||
; |
||||
txptr = $002d ; Basic Text-Pointer Used to Re-program F-key # 1 |
||||
mode = $00d7 ; Screen-Editor 40 / 80 Column Mode ($80 = 80-Col) |
||||
txtop = $1210 ; Pointer to Top of Basic Text (txptr + 2) |
||||
nubas = $5b00 ; New Start-of-Basic Address After Shell is Loaded |
||||
setkey = $c021 ; Screen Editor Entry to Program a Function-Key |
||||
primm = $ff7d ; Kernal Entry to Print an Immediate String |
||||
chrout = $ffd2 ; Kernal Entry to Output one Character |
||||
plot = $fff0 ; Kernal Entry to Read / Set Screen Cursor Position |
||||
; |
||||
; |
||||
*= $0b00 ; Set Origin for Disk Auto-Boot Block # 1 |
||||
; |
||||
; Data Constants for Disk Auto-boot Definition & Cold-Start |
||||
; |
||||
key .byt 'CBM' ; Key Pattern to Identify an Auto-boot Diskette |
||||
; |
||||
.byt 0,0,0,0 ; To Show No Additional Boot-blocks to Load |
||||
; |
||||
disk .byt 'C128 DOS SHELL',0 ; Display this Disk-Name While Loading |
||||
; |
||||
file .byt 'DOS SHELL',0 ; This File-name is the Shell Application |
||||
; |
||||
; |
||||
; Shell Cold-Start Code Called by Kernal 'Phoenix' From Basic 'Hard-Reset' |
||||
; |
||||
; Program F-Key # 1 for Shell Entry, Set-up a Null Basic Program-Link |
||||
; Set-up New Start-of-Basic Text-Pointer, Display Cold-Start Message |
||||
; |
||||
cold lda #<fkey ; |
||||
sta txptr ; lo-byte of pointer to new F-key string |
||||
lda #>fkey ; |
||||
sta txptr+1 ; hi-byte of pointer to new F-key string |
||||
lda #15 ; |
||||
sta txptr+2 ; Ram Bank # where new F-key string resides |
||||
lda #txptr ; |
||||
ldx #1 ; set addr of F-key pointer, Nr. of F-key to change |
||||
ldy #fend-fkey ; |
||||
jsr setkey ; set length of new F-key string, call Screen Editor |
||||
; |
||||
ldy #3 ; set-up to store four null-bytes |
||||
lda #0 ; |
||||
colda sta nubas,y ; to build a null Basic program-link |
||||
dey ; |
||||
bpl colda ; so Basic will work when System shows 'Ready' msg |
||||
lda #1 ; |
||||
sta txptr ; set-up a new Basic Start-of-Text pointer value |
||||
lda #>nubas ; |
||||
sta txptr+1 ; so that Basic programs will Load above the Shell |
||||
ldx #3 ; |
||||
stx txtop ; set-up a new Basic Top-of-Text pointer value |
||||
sta txtop+1 ; |
||||
lda #147 ; clear the screen in case Boot command was used |
||||
jsr chrout ; |
||||
clc ; position cursor to display Shell cold-start message |
||||
ldx #1 ; |
||||
ldy #29 ; centered on second line of the screen (80-Col Y-Pos) |
||||
bit mode ; |
||||
bmi coldb ; branch if 80-Col video-display mode |
||||
ldy #9 ; |
||||
coldb jsr plot ; else set 40-Col Y-Pos, then move the cursor |
||||
; |
||||
jsr primm ; print the immediately following string |
||||
; |
||||
.byt 'D.O.S. SHELL ON F-1 KEY',13,0 |
||||
; |
||||
rts ; All Setup! Return to Basic Cold-Start Sequence |
||||
; |
||||
; |
||||
; Define Data to Set-up F1-key for Entry to Shell After Auto-Boot |
||||
; |
||||
fkey .byt 'BANK 12: SYS 6656',13 ; Press F1-Key to Enter C=128 Shell |
||||
; |
||||
fend = * ; Marks End of Shell Cold-Start Module |
||||
; |
||||
.end |
@ -0,0 +1,28 @@
|
||||
; C=128 VERSION OF D.O.S. UTILITY SHELL |
||||
; |
||||
.page |
||||
.subttl ** C=128 ** LABEL DEFINITIONS |
||||
.include shelleq |
||||
.page |
||||
.subttl ** C=128 ** SHELL COLD START-UP |
||||
.include shellam |
||||
.page |
||||
.subttl ** C=128 ** SHELL CONTROL MODULE |
||||
.include shellct |
||||
.page |
||||
.subttl ** C=128 ** FUNCTION CONTROL MODULE I |
||||
.include shellfa |
||||
.page |
||||
.subttl ** C=128 ** FUNCTION CONTROL MODULE II |
||||
.include shellfb |
||||
.page |
||||
.subttl ** C=128 ** GENERAL UTILITY SUBROUTINES |
||||
.include shellsa |
||||
.page |
||||
.subttl ** C=128 ** FILE-LIST BROWSE-SELECT / PRINT |
||||
.include shellsb |
||||
.page |
||||
.subttl ** C=128 ** DOS COMMAND / SHELL MESSAGE TABLES |
||||
.include shelltb |
||||
; |
||||
.end |
@ -0,0 +1,76 @@
|
||||
; SET-UP SHELL COLD-START VARIABLE VALUES & RAM-LINKS TO ROM SUBROUTINES |
||||
; |
||||
; Define Start-up Values for Shell Variables Later Moved to Zero-Page |
||||
; |
||||
*= zpsav ; Start of F-key App. Ram Used to Save Basic Z-Page |
||||
; |
||||
.byt -1 ; Default Language for Shell Messages (-1 = Un-selected) |
||||
.byt 4 ; Default Printer Device # (0 = None, 4 - 6 Supported) |
||||
.byt 0 ; Default Disk Configuration (0 = Single-Drive) |
||||
.byt 'A' ; Logical Drive-Name For Single-Drive Config. |
||||
.byt 8, 8 ; Default Device # for Logical Drives A & B |
||||
.byt '00' ; Physical Drive # for Logical Drives A & B |
||||
.byt 1 ; Default Source Device/Drive/LFN # Index (1= Drive A) |
||||
.byt 0 ; Temp Logical File Nr. Used to Open Channels |
||||
.byt 4, 8 ; Data-Channel Logical File Nr. for Drives A & B |
||||
; |
||||
; |
||||
; Define Shell F-Key Data to Replace System Function-Key Definitions |
||||
; |
||||
*= pfdef ; Data for F1, F3, F5, F7: Run/Stop & Help Disabled |
||||
; |
||||
.byt 1,0,1,0,1,0,1,0,0,0 ; Shell F-Key Length Bytes |
||||
; |
||||
.byt 133,134,135,136,0,0 ; Shell F-Key String Values |
||||
; |
||||
; |
||||
*= ramlnk ; Code-Origin for Ram-Linkage Subroutines |
||||
; |
||||
; Shell RAM-code Link Needed for Direct-Calls to Run a Basic Program |
||||
; Because Runc Trashes System-Stack & Return-Address for Kernal JSRFAR |
||||
; |
||||
runjmp lda #0 ; Set System Configuration (Std. Bank # 15) |
||||
sta mmucr ; |
||||
jsr setexc ; set-up various Basic Run-modes & flags |
||||
; |
||||
jsr runc ; set-up Basic Text & Variable Pointers & Stacks |
||||
; |
||||
jsr lnkprg ; re-build Basic-text Line-link pointers |
||||
; |
||||
jmp newstt ; check Stop-key & start executing Basic text |
||||
; |
||||
; |
||||
; Shell RAM-Code Link to Kernal JSRFAR for Calling Basic Subroutines |
||||
; Enter With: pchi, pclo, .S, .A, .X, .Y Pseudo-Regs Set by Caller |
||||
; |
||||
rajsrf lda #15 ; Set System Default Configuration Bank # |
||||
sta bank ; |
||||
jsr kjsrfr ; Call the Long-Call Subroutine in Shared RAM |
||||
lda #6 ; |
||||
sta mmucr ; Set Shell ROM Configuration (Std. Bank # 12) |
||||
rts ; |
||||
; |
||||
; |
||||
; Shell Ram-Links to Long-Fetch, Long-Store, Long-Compare Subroutines |
||||
; |
||||
kndfet sei ; |
||||
jsr lngfet ; call long-fetch with irq's disabled |
||||
cli ; |
||||
rts ; return with irq's enabled |
||||
; |
||||
kndsta sei ; |
||||
jsr lngsta ; call long-store with irq's disabled |
||||
cli ; |
||||
rts ; return with irq's enabled |
||||
; |
||||
kndcmp sei ; |
||||
jsr lngcmp ; call long-compare with irq's disabled |
||||
cli ; |
||||
rts ; return with irq's enabled |
||||
; |
||||
*= bama ; origin for dos shell version message |
||||
; |
||||
.byt ' c128 dos shell ' ; |
||||
.byt 'version # 1.0 by' ; current shell version # |
||||
.byt ' dave middleton ' ; |
||||
; |
@ -0,0 +1,284 @@
|
||||
; D.O.S. SHELL - PRIMARY CONTROL MODULE (Entry on F-Key # 1) |
||||
; |
||||
; |
||||
*= shell ; RAM origin for shell entry point = decimal 6656 |
||||
; |
||||
; |
||||
; SET-UP SHELL OPERATING ENVIRONMENT & SELECT USER LANGUAGE |
||||
; |
||||
; init screen editor & I/O, save system z-page & F-key defs |
||||
; |
||||
jsr bcmsgj ; close all files - precautionary |
||||
jsr restor ; restore Basic and Kernal system vectors |
||||
jsr pcint ; initialize video chip & screen editor |
||||
jsr pagot ; move system zero-page & F-keys to save-area |
||||
jsr color ; un-set window, set bg/fg colors, clear screen |
||||
; |
||||
; check language flag for first-time entry to shell |
||||
; |
||||
lda lang ; set to -1 by Cold-Start |
||||
bmi shellb ; |
||||
jmp shomu ; go display menu if laguage already selected |
||||
; |
||||
shellb inc lang ; bump flag to next language |
||||
lda lang ; |
||||
and #3 ; clear bits for modulo 4 values |
||||
sta lang ; |
||||
; |
||||
; clear screen and print the messages for language selection |
||||
; |
||||
lda #clear ; clear the screen |
||||
jsr chrout ; |
||||
lda #10 ; |
||||
jsr fndmsb ; msg = cbm disk utility system |
||||
lda #11 ; |
||||
jsr fndmsb ; msg = press space to select your language |
||||
lda #12 ; |
||||
jsr fndmsb ; msg = name of current language |
||||
; |
||||
; set-up count-down timer for 6-second wait |
||||
; |
||||
lda #<wtsix ; low-byte of delay time |
||||
sta work ; |
||||
lda #>wtsix ; high-byte of delay time |
||||
sta work+1 ; |
||||
; |
||||
; get a keystroke and look for crsr-down or space |
||||
; |
||||
shelld jsr getin ; try for a keystroke |
||||
cmp #space ; |
||||
beq shomu ; done when key = space, goto main menu |
||||
cmp #crsrd ; |
||||
beq shellb ; if key = cursor-down, cycle to next language |
||||
; |
||||
; check for six-second timer expired |
||||
; |
||||
lda work ; delay-counter value |
||||
ora work+1 ; |
||||
beq shellb ; if timer is expired |
||||
dec work ; |
||||
bne shellg ; timer not expired, decrement timer |
||||
dec work+1 ; |
||||
; |
||||
; wait for one jiffy then try keyboard again |
||||
; |
||||
shellg lda jiflo ; jiffy-clock low-byte |
||||
shellj cmp jiflo ; |
||||
beq shellj ; delay until jiffy clock ticks once |
||||
bne shelld ; |
||||
; |
||||
; DISPLAY THE PRIMARY SHELL MENU SCREEN |
||||
; |
||||
; clear the screen, display headings, rvs-fill menu-area, display menu |
||||
; |
||||
shomu lda #0 ; |
||||
sta rptflg ; set auto-repeat for space + cursor + inst/del keys |
||||
jsr setmsg ; |
||||
jsr bcmsgj ; disable Kernal messages, close all files & DOS chans |
||||
jsr color ; un-set window, set bg/fg colors, clear the screen |
||||
lda #60 ; msg = move cursor then press space to select |
||||
ldx #0 ; |
||||
ldy #0 ; absolute X-Y position same for 40-80 col. video |
||||
jsr fndmsa ; print first heading-message in rvs-video |
||||
bit mode ; |
||||
bpl shomua ; on 40-col video |
||||
lda #13 ; msg = press f5 to un-select / stop to cancel |
||||
jsr fndmsa ; locate the message and print in reverse-video |
||||
; |
||||
shomua lda #1 ; X-position for start of fill |
||||
sta msgxy ; |
||||
ldx #4 ; pre-set nr of rows to fill for 80-col video |
||||
bit mode ; |
||||
bmi shomub ; on 80-col video |
||||
inx ; nr of rows to fill for 40-col |
||||
shomub jsr fill ; fill the menu-area with rvs-video spaces |
||||
; |
||||
; display primary menu items, showing function = 0 as selected |
||||
; |
||||
lda #0 ; show func = 0 as selected function |
||||
sta func ; |
||||
jsr fndmsb ; print first menu-item message in normal-video |
||||
; |
||||
shomuc inc msgnr ; print menu-item messages 1 - 9 |
||||
lda msgnr ; |
||||
jsr fndmsa ; locate the message and print rvs-video |
||||
lda msgnr ; |
||||
cmp #9 ; check for last menu message |
||||
bne shomuc ; if more messages to print |
||||
; |
||||
ldx #lynml8-1 ; preset X-position for 80-col video |
||||
bit mode ; |
||||
bmi shomud ; on 80-col video |
||||
inx ; |
||||
shomud stx msgxy ; set the X-position |
||||
ldx #1 ; nr of rows to fill |
||||
jsr filla ; fill one line below the menu with rvs-chr$(162) |
||||
; |
||||
; initialize the 40-80 Col. Drive/Disk-ID line |
||||
; |
||||
ldx #lyndl8-1 ; pre-set X-position for 80-col video |
||||
bit mode ; |
||||
bmi shomue ; on 80-column video |
||||
inx ; |
||||
shomue stx msgxy ; set 40-80 Col. X-position = 1 above drive-line |
||||
ldx #1 ; |
||||
jsr fillb ; fill one line with rvs-video chr$(162) |
||||
inc msgxy ; |
||||
ldx #1 ; |
||||
jsr fill ; fill the drive-ID line with rvs-video spaces |
||||
; |
||||
; |
||||
; SELECT A FUNCTION, GET THE DRIVE ID, EXECUTE THE FUNCTION |
||||
; |
||||
; set-up drive-ID line & DOS-buffer for hard-copy, clear error status |
||||
; |
||||
lda #14 ; msg = drive: x diskette-name-xx nnn free |
||||
jsr fndmsa ; |
||||
ldy #39 ; begin building file-list hard-copy heading |
||||
; |
||||
selfna lda (curmsg),y ; |
||||
sta dosbf,y ; by storing msg # 14 into DOS msg-buffer |
||||
dey ; |
||||
bpl selfna ; if more message bytes to store |
||||
; |
||||
iny ; |
||||
sty stsav ; clear any previous ST / DOS error status |
||||
sty doserr ; |
||||
sty laskey ; clear any previous keyboard controls |
||||
; |
||||
; check for mode-swap / shell-exit, then select function code (0 - 9) |
||||
; |
||||
selfnb jsr getin ; |
||||
beq selfnb ; wait for any keystroke |
||||
cmp #escap ; |
||||
beq selfnc ; if key = ESCape (ESC-X Sequence to Swap Mode) |
||||
cmp #swap ; |
||||
beq selfnd ; if key = 'X' go check for previous ESC |
||||
; |
||||
sta laskey ; to prevent any keys between ESC and X |
||||
cmp #f1 ; |
||||
beq selfne ; if key = f1, then go exit from shell |
||||
cmp #space ; |
||||
beq selfnf ; if key = space-bar, a function has been selected |
||||
jsr updmen ; |
||||
jmp selfnb ; update menu area to show new func, get another key |
||||
; |
||||
selfnc sta laskey ; show ESC as last keystroke to set-up Mode Swap |
||||
jmp selfnb ; |
||||
selfnd lda laskey ; pick-up last keystroke value |
||||
cmp #escap ; |
||||
bne selfnb ; if not an ESC-X sequence, then don't swap |
||||
jsr kswap ; |
||||
jmp shomu ; Swap 40 / 80 column video, re-display shell menu |
||||
; |
||||
selfne lda #clear ; quitting time - clear the screen first |
||||
jsr chrout ; |
||||
jsr pagin ; restore Basic / Kernal operating environment |
||||
lda #128 ; |
||||
jsr setmsg ; enable Kernal control-messages only |
||||
; |
||||
jsr stdclr ; clear both screens and restore default colors |
||||
lda #15 ; |
||||
sta bank ; key = F1, set System Bank # for Long-jump |
||||
lda #<warm ; |
||||
sta pclo ; set-up address for the Long-jump |
||||
lda #>warm ; |
||||
sta pchi ; bail-out to Basic Warm-Start on key = F1 |
||||
jmp kjmpfr ; |
||||
; |
||||
selfnf bit mode ; |
||||
bmi seldr ; skip this message on 80-column video |
||||
lda #13 ; |
||||
jsr fndmsa ; msg = press f5 to un-select / stop to cancel |
||||
; |
||||
; select logical drive-ID to use, check for abort, set drive-index |
||||
; |
||||
seldr lda func ; branch if func = Disk/Printer Setup (Drive = A) |
||||
beq seldrd ; |
||||
lda config ; branch if single-drive configuration (Drive = A) |
||||
beq seldrd ; |
||||
lda #44 ; pre-set msg = from which drive |
||||
ldx func ; |
||||
cpx #2 ; branch if func = 2 (format) |
||||
beq seldra ; |
||||
cpx #3 ; branch if not func = 3 (cleanup) |
||||
bne seldrb ; |
||||
seldra lda #45 ; msg = using which drive |
||||
; |
||||
seldrb jsr fndmsb ; display drive-selection message in normal-video |
||||
lda #1 ; |
||||
jsr pick ; display suffix ' A B ' and get user's choice |
||||
; |
||||
cmp #space ; branch if exit keystroke = Space-bar |
||||
beq seldrc ; |
||||
jmp shomu ; bail out to menu, Stop or F5 key was pressed |
||||
seldrc lda tempa ; |
||||
; |
||||
seldrd clc ; pick-up drive-selection index (user's choice) |
||||
adc #'A' ; |
||||
sta drivid ; set-up selected logical drive-name |
||||
and #3 ; |
||||
sta drivx ; set-up index to active unit/drive |
||||
; |
||||
; update drive/disk id-line, call browse & select as required |
||||
; |
||||
jsr wdlyn ; |
||||
lda func ; erase message-line, pick-up shell function code |
||||
cmp #5 ; |
||||
bcs exfuna ; for file / directory oriented functions 5 - 9 |
||||
lsr a ; |
||||
bcc exfunc ; for functions = 0, 2, 4 don't update drive-line yet |
||||
; |
||||
exfuna jsr opndos ; open DOS command channel for the selected drive |
||||
bne exfung ; |
||||
jsr updrl ; init BAM & update ID-line: disk-name & blocks free |
||||
lda drivx ; |
||||
jsr close ; close the DOS command channel |
||||
lda stsav ; |
||||
ora doserr ; branch if ST / DOS status error |
||||
bne exfung ; |
||||
lda func ; else pick-up shell function-code |
||||
cmp #1 ; |
||||
beq exfunb ; if function = Run a Program |
||||
cmp #5 ; |
||||
bcc exfunc ; if not a file-oriented function, don't browse |
||||
; |
||||
exfunb jsr brows ; |
||||
bne exfung ; branch if ST / DOS error during browse & select |
||||
lda worka ; |
||||
cmp #-1 ; branch if there were no files on the disk |
||||
beq exfunj ; |
||||
lda laskey ; pick-up last keystroke from browse & select |
||||
cmp #stpky ; |
||||
beq exfunj ; branch if Stop key pressed while browsing |
||||
; |
||||
; execute the selected function via dispatch table |
||||
; |
||||
exfunc lda sxfun+1 ; set-up a return-addr on the stack |
||||
pha ; |
||||
lda sxfun ; so functions can RTS to 'exfund' label |
||||
pha ; |
||||
lda func ; dispatch control to selected function |
||||
asl a ; |
||||
tax ; index to dispatch table |
||||
lda funtbl+1,x ; high-byte of function exec addr |
||||
pha ; |
||||
lda funtbl,x ; low-byte of function exec addr |
||||
pha ; |
||||
rts ; to the function |
||||
; |
||||
; control returns here from all shell functions for error-check |
||||
; |
||||
exfund jsr bcmsgj ; close all files on return from functions |
||||
lda laskey ; pick-up last keystroke from the function |
||||
cmp #stpky ; |
||||
beq exfunj ; if Stop key was pressed, re-display menu |
||||
; |
||||
lda stsav ; pick-up ST / DOS error status from function |
||||
ora doserr ; |
||||
beq exfunj ; if ST and DOS status both OK |
||||
; |
||||
exfung jsr errms ; find and print error an message |
||||
; |
||||
exfunj jmp shomu ; on any key, go re-display shell menu |
||||
; |
@ -0,0 +1,223 @@
|
||||
; ******** C = 1 2 8 D. O. S. U T I L I T Y S H E L L ******** |
||||
; |
||||
; |
||||
; STANDARD I/O LABELS USED IN C=128 D.O.S. SHELL |
||||
; |
||||
vic = $d000 ; 6567 video controller (40-col) |
||||
mmucr = $d500 ; system MMU memory configuration register |
||||
ramcr = $d506 ; system RAM configuration register |
||||
vic80 = $d600 ; 8563 video controller (80-col) |
||||
v8clrg = 26 ; offset to bkgnd color reg of 8563 |
||||
random = $dc06 ; jiffy-clock hardware timer (CIA # 1, Timer B) |
||||
; |
||||
; |
||||
; VIDEO COLOR CONSTANTS FOR SHELL MESSAGES |
||||
; |
||||
clrbdr = 14 ; light blue border (40-col) |
||||
clrbkg = 15 ; grey3 background (40-col & 80-col) |
||||
clrhl = 151 ; grey1 used for heading line |
||||
clrmu = 31 ; dark blue used for menu area |
||||
clrml = 28 ; red used for query/message line |
||||
clrdl = 151 ; grey1 used for drive/disk id line |
||||
clrwh = 154 ; light blue used for window heading |
||||
clrfl = 31 ; dark blue used for file-list window |
||||
stdbdr = 13 ; system default border color (40-col) |
||||
stdbkg = 48 ; system default background color (40-col & 80-col) |
||||
; |
||||
; |
||||
; MESSAGE X-COORDINATES FOR COLOR CONTROL |
||||
; |
||||
lynml8 = 6 ; 80-col message line |
||||
lyndl8 = 8 ; 80-col drive/disk id line |
||||
lynwh8 = 9 ; 80-col window heading line |
||||
lynfl4 = 11 ; 40-col file-list window starts here |
||||
lynfl8 = 10 ; 80-col file-list window starts here |
||||
; |
||||
; |
||||
; C=128 KERNAL ROM SUBROUTINES CALLED |
||||
; |
||||
chkin = $ffc6 ; serial talk |
||||
chkout = $ffc9 ; serial listen |
||||
chrin = $ffcf ; input to <cr> |
||||
chrout = $ffd2 ; put character |
||||
close = $ffc3 ; close a file |
||||
clrchn = $ffcc ; untalk/unlisten |
||||
getin = $ffe4 ; get character |
||||
load = $ffd5 ; load ram from device |
||||
open = $ffc0 ; open a file |
||||
pcint = $ff81 ; set up screen |
||||
plot = $fff0 ; read (.C=1) or set (.C=0) cursor position |
||||
restor = $ff8a ; restore default i/o vectors |
||||
setlfs = $ffba ; set file parameters |
||||
setmsg = $ff90 ; allow/suppress kernal messages |
||||
setnam = $ffbd ; set file-name parameters |
||||
stop = $ffe1 ; check for stop key |
||||
; |
||||
kswap = $ff5f ; swap 40 / 80 column screen display mode |
||||
setbnk = $ff68 ; set bank # for open / load / save / verify |
||||
kjsrfr = $ff6e ; JSR to another bank with RTS to calling bank |
||||
kjmpfr = $ff71 ; JMP to another bank (no return) |
||||
lngfet = $ff74 ; Long-Fetch: LDA (fetvec),y from another bank |
||||
lngsta = $ff77 ; Long-Store: STA (stavec),y to another bank |
||||
lngcmp = $ff7a ; Long-Compare: CMP (cmpvec),y to another bank |
||||
; |
||||
; |
||||
; C=128 BASIC / EDITOR ROM ROUTINES CALLED |
||||
; |
||||
warm = $4003 ; Basic Warm-Start Entry Point used for Shell Exit |
||||
runc = $af7e ; setup basic program text/variable pointers |
||||
lnkprg = $af87 ; re-build Basic program text link-pointers |
||||
newstt = $af90 ; check stop key then execute basic stmnt |
||||
setexc = $af9c ; setup for Basic program execution |
||||
runprg = $af99 ; Basic jump-entry to run a program (Beta-7 ROMs) |
||||
wndset = $c02d ; Editor jump-table entry to set-up a window |
||||
; |
||||
; |
||||
; SYSTEM RAM-BASED BANKING ROUTINE PSEUDO-REGISTERS USED |
||||
; |
||||
*= $0002 ; Pseudo-Registers used by Long-Call / Long-Jump |
||||
; |
||||
bank *= *+1 ; Standard Bank # used by 'getcfg' (required) |
||||
pchi *= *+1 ; High-byte of Destination addr (required) |
||||
pclo *= *+1 ; Low-byte of Destination addr (required) |
||||
sreg *= *+1 ; Status Register sent / returned (opt) |
||||
areg *= *+1 ; .A register sent / returned (opt) |
||||
xreg *= *+1 ; .X register sent / returned (opt) |
||||
yreg *= *+1 ; .Y register sent / returned (opt) |
||||
; |
||||
stavec = $02b9 ; Addr of Z-page indirect pointer for Long-Store |
||||
; |
||||
cmpvec = $02c8 ; Addr of Z-page indirect pointer for Long-Compare |
||||
; |
||||
; |
||||
; SHELL USAGE OF FUNCTION-KEY APPLICATION RAM AREA & RAM BANKS 0 & 1 |
||||
; |
||||
*= $1800 ; Space Reserved For F-key Applications Use |
||||
; |
||||
zpsav *= *+64 ; Save-Area for Basic Zero-Page Swap-out |
||||
pfsav *= *+16 ; Save-area for System Function-key Definitions |
||||
pfdef *= *+16 ; Shell Function-key Definitions Set by Cold-Start |
||||
lstbf *= *+32 ; Temp-Hold Buffer for File-List Management |
||||
bfnam = lstbf+5 ; Relative Offset to File-name for File-list Entry |
||||
fdriv *= *+2 ; Physical Drive # for Opening / Loading Files |
||||
fnam1 *= *+20 ; Temp Buffer for File-name-1 |
||||
*= *+2 ; |
||||
fnam2 *= *+16 ; Temp Buffer for File-name-2 |
||||
dosbf *= *+40 ; Temp Buffer for Disk Header-Name & Blocks Free |
||||
dsnam = dosbf+12 ; Relative Offset to Header-name Field |
||||
bfree = dosbf+29 ; Relative Offset to Blocks-free Field |
||||
ramlnk *= *+48 ; Ram-Code Links to ROM Calls & Inter-Bank Transfers |
||||
; |
||||
lista = $0400 ; Primary File-List Buffer-A in Ram Bank # 1 |
||||
listb = $1600 ; Secondary File-List Buffer-B in Ram Bank # 1 |
||||
bama = $1900 ; BAM Image Buffer for Restore / Backup (Both Sides) |
||||
shell = $1a00 ; Warm-Start Entry-Point to DOS Shell on F-key # 1 |
||||
bufra = $5b00 ; Start of I/O Buffer for Backup / Copy in Bank # 0 |
||||
bufrb = listb ; Start of I/O Buffer for Backup / Copy in Bank # 1 |
||||
bufnd = $ff00 ; End of I/O Buffer for Backup / Copy in Both Banks |
||||
; |
||||
; |
||||
; BASIC, EDITOR & KERNAL VARIABLES & MEMORY LOCATIONS REFERENCED |
||||
; |
||||
zpbas = $0020 ; Start of Basic Z-page used for Shell variables |
||||
stat = $0090 ; system status word ST for input / output |
||||
jiflo = $00a2 ; low-byte of system jiffy-clock counter |
||||
mode = $00d7 ; screen editor 40 / 80 column mode ($80 = 80-col) |
||||
qtsw = $00f4 ; screen editor quote-mode switch ($01 = quote-mode) |
||||
insrt = $00f5 ; screen editor insert-mode switch ($01 = insert-mode) |
||||
scroll = $00f8 ; screen editor scrolling/line-link flag |
||||
rptflg = $0a22 ; screen editor key-repeat flag ($80 = all, $60 = none) |
||||
pkybuf = $1000 ; System Prog. Function-key Buffer (length = 256 bytes) |
||||
txtop = $1210 ; Pointer to Basic Top-of-Text (+1) |
||||
; |
||||
; |
||||
; SEMI-PERMANENT VARIABLES STORED IN BASIC ZERO-PAGE |
||||
; |
||||
*= zpbas ; Origin for Shell Variables in Basic Zero-Page |
||||
; |
||||
lang *= *+1 ; current language for shell messages |
||||
prdev *= *+1 ; current device # for printer (0 = none) |
||||
config *= *+1 ; current system disk configuration type |
||||
drivid *= *+1 ; selected shell logical drive id |
||||
unita *= *+1 ; device nr for drive: A |
||||
unitb *= *+1 ; device nr for drive: B |
||||
driva *= *+1 ; physical drive # for drive: A |
||||
drivb *= *+1 ; physical drive # for drive: B |
||||
drivx *= *+1 ; current active unit/drive/lfn index |
||||
lfnr *= *+1 ; current active data-file LFN |
||||
lfna *= *+1 ; data-channel logical file nr. for drive: A |
||||
lfnb *= *+1 ; data-channel logical file nr. for drive: B |
||||
stsav *= *+1 ; temp save cell for STatus |
||||
doserr *= *+1 ; last D.O.S. error code returned |
||||
laskey *= *+1 ; holds last keystroke for controls |
||||
; |
||||
; TEMPORARY VARIABLES STORED IN BASIC ZERO-PAGE |
||||
; |
||||
func *= *+1 ; current shell function in progress |
||||
msgnr *= *+1 ; current message nr to print |
||||
curmsg *= *+2 ; pointer to current message group |
||||
msglen *= *+1 ; length of current message |
||||
msgxy *= *+2 ; screen coordinates for current message |
||||
work *= *+2 ; misc. temp work area |
||||
worka *= *+2 ; misc. temp work area |
||||
workb *= *+2 ; misc. temp work area |
||||
workc *= *+2 ; misc. temp work area |
||||
workd *= *+2 ; misc. temp work area |
||||
worke *= *+2 ; misc. temp work area |
||||
diska *= *+2 ; diskette-id code for drive: A |
||||
diskb *= *+2 ; diskette-id code for drive: B |
||||
pntra *= *+2 ; pointers used |
||||
pntrb *= *+2 ; for file- |
||||
pntrc *= *+2 ; list browse |
||||
pntrd *= *+2 ; and select |
||||
pntre *= *+2 ; disk I/O and |
||||
pntrf *= *+2 ; screen display |
||||
flen1 *= *+1 ; length of file-name-1 |
||||
fadr1 *= *+2 ; file-name-1 address for Open / DOS command |
||||
fpbuf *= *+4 ; Work-area for Binary-Ascii Number Conversions |
||||
tempa *= *+1 ; temp work area |
||||
tempb *= *+1 ; temp work area |
||||
tempc *= *+1 ; temp work area |
||||
tempd *= *+1 ; temp work area |
||||
*= *+3 ; |
||||
; |
||||
zplen = *-zpbas-1 ; length of Basic zero-page to save before using |
||||
; |
||||
; |
||||
; CHARACTER VALUES USED FOR CONTROLS |
||||
; |
||||
stpky = 3 ; value to flag stop key pressed |
||||
caret = 13 ; carriage-return character |
||||
crsrd = 17 ; cursor-down character |
||||
rvson = 18 ; reverse-video ON char |
||||
home = 19 ; cursor-home character |
||||
delt = 20 ; screen delete character |
||||
crsrr = 29 ; cursor-right character |
||||
space = 32 ; blank space character |
||||
quote = 34 ; double-quote character |
||||
acent = 39 ; accent-mark used in messages |
||||
f1 = 133 ; function key # 1 |
||||
f3 = 134 ; function key # 3 |
||||
f5 = 135 ; function key # 5 |
||||
f7 = 136 ; function key # 7 |
||||
graph = 141 ; start of shifted screen-cntl chars |
||||
crsru = 145 ; cursor-up character |
||||
rvsoff = 146 ; reverse-video OFF char |
||||
clear = 147 ; clear-screen character |
||||
crsrl = 157 ; cursor-left character |
||||
shpac = 160 ; shifted space character |
||||
; |
||||
; |
||||
; SCREEN EDITOR WINDOW-CONTROL CHARACTERS & MISC. LABEL VALUES |
||||
; |
||||
escap = 27 ; Screen-Editor ESCape character |
||||
erase = '@' ; Erase to End-of-Screen |
||||
erlyn = 'Q' ; Erase to End of Current Line |
||||
scrup = 'V' ; Scroll the Screen Upwards |
||||
scrdn = 'W' ; Scroll the Screen Downwards |
||||
swap = 'X' ; Swap 40 / 80 Column Display Mode |
||||
; |
||||
cent = 128 ; bit 7 set in Y-position = center the message |
||||
blink = 15 ; nr of jiffies for flashing options |
||||
wtsix = 640 ; nr of jiffies for language selection |
||||
; |
@ -0,0 +1,758 @@
|
||||
; |
||||
; SHELL FUNCTION CODES 0 - 3 ARE FOUND IN THIS MODULE. THEY ARE |
||||
; CALLED BY SHELL-CONTROL, AND IN TURN CALL SUBROUTINES WITHIN |
||||
; THE SHELLSA AND SHELLSB MODULES TO PERFORM STANDARDIZED TASKS. |
||||
;____________________________________________________________________________ |
||||
; |
||||
; FUNCTION CODE = 0: CHANGE DISK / PRINTER SETUP |
||||
; |
||||
; display page-1 messages, save X-Y positions and sub-strings needed |
||||
; |
||||
confg lda #64 ; disable auto-repeat on all keys for this function |
||||
sta rptflg ; |
||||
jsr crmsg ; print msg = move cursor then press space to select |
||||
; |
||||
lda #61 ; msg = drive X: device # = |
||||
ldx #lynfl8 ; |
||||
ldy #11 ; X-Y positions for 80-col video |
||||
bit mode ; |
||||
bmi confgb ; on 80-col video |
||||
ldy #2 ; X-Y positions for 40-col video |
||||
inx ; |
||||
confgb stx diskb ; save message X-position for later |
||||
jsr fndmsb ; find and print the message in normal-video |
||||
lda #'A' ; |
||||
jsr confg2 ; plot cursor to the drive name and print it |
||||
lda #3 ; |
||||
jsr prcon ; display suffix ' 8 9 10 11' |
||||
lda msgxy+1 ; |
||||
sta diskb+1 ; save Y-position of suffix sub-string |
||||
lda curmsg ; |
||||
sta worka ; save address of suffix sub-string |
||||
lda curmsg+1 ; |
||||
sta worka+1 ; suffix address hi-byte |
||||
; |
||||
lda #62 ; msg = drive # = |
||||
ldx #lynfl8 ; |
||||
ldy #54 ; X-Y positions for 80-col video |
||||
bit mode ; |
||||
bmi confgc ; on 80-col video |
||||
ldy #12 ; X-Y positions for 40-col video |
||||
ldx #lynfl4+2 ; |
||||
confgc stx pntra ; save message X-position for later |
||||
jsr fndmsb ; find and print the message in normal-video |
||||
lda #2 ; |
||||
jsr prcon ; display suffix ' 0 1 ' |
||||
lda msgxy+1 ; |
||||
sta pntra+1 ; save Y-position of suffix sub-string |
||||
lda curmsg ; |
||||
sta workb ; save address of suffix sub-string |
||||
lda curmsg+1 ; |
||||
sta workb+1 ; suffix address hi-byte |
||||
; |
||||
lda #61 ; msg = drive X: device # = |
||||
ldx #lynfl8+2 ; |
||||
ldy #11 ; X-Y positions for 80-col video |
||||
bit mode ; |
||||
bmi confgd ; on 80-col video |
||||
ldy #2 ; X-Y positions for 40-col video |
||||
ldx #lynfl4+4 ; |
||||
confgd stx pntrb ; save message X-position for later |
||||
jsr fndmsb ; find and print the message in normal-video |
||||
lda #'B' ; |
||||
jsr confg2 ; plot the cursor to the drive name and print it |
||||
lda #3 ; |
||||
jsr prcon ; display suffix ' 8 9 10 11' |
||||
lda msgxy+1 ; |
||||
sta pntrb+1 ; save msg Y-position of suffix sub-string |
||||
; |
||||
lda #62 ; msg = drive # = |
||||
ldx #lynfl8+2 ; |
||||
ldy #54 ; X-Y positions for 80-col video |
||||
bit mode ; |
||||
bmi confge ; on 80-col video |
||||
ldy #12 ; X-Y positions for 40-col video |
||||
ldx #lynfl4+6 ; |
||||
confge stx pntrc ; save message X-position for later |
||||
jsr fndmsb ; find and print the message |
||||
lda #2 ; |
||||
jsr prcon ; display suffix ' 0 1 ' |
||||
lda msgxy+1 ; |
||||
sta pntrc+1 ; msg Y-position of sub-string |
||||
; |
||||
lda #15 ; msg = printer device # = 4 5 6 none |
||||
jsr fndmsb ; find and print the message in normal-video |
||||
ldx msgxy ; |
||||
stx pntrd ; save message X-position for later |
||||
ldy #8 ; |
||||
confgf lda (curmsg),y ; search for start of the sub-string |
||||
iny ; |
||||
cmp #'=' ; this char is two before the sub-string |
||||
bne confgf ; |
||||
iny ; so bump the string-index before using it |
||||
tya ; |
||||
clc ; message Y-position plus offset to sub-string |
||||
adc msgxy+1 ; |
||||
sta pntrd+1 ; give Y-position for first sub-string character |
||||
tya ; |
||||
adc curmsg ; message table-addr plus offset to sub-string |
||||
sta workc ; |
||||
lda #0 ; |
||||
adc curmsg+1 ; sub-string = ' 4 5 6 none' |
||||
sta workc+1 ; |
||||
jsr confg0 ; print msg # 63 = change disk device # |
||||
; |
||||
; set-up indexes to current default units/drives within sub-strings |
||||
; |
||||
lda #0 ; |
||||
sta msgnr ; used as index to current message-line |
||||
lda unita ; |
||||
and #7 ; |
||||
sta workd ; used as index to device # for drive: A |
||||
lda unitb ; |
||||
and #7 ; |
||||
sta worke ; used as index to device # for drive: B |
||||
lda driva ; |
||||
and #1 ; |
||||
sta workd+1 ; used as index to physical drive for drive: A |
||||
lda drivb ; |
||||
and #1 ; |
||||
sta worke+1 ; used as index to physical drive for drive: B |
||||
lda prdev ; |
||||
and #3 ; used as index to device # for printer |
||||
sta diska ; |
||||
lda #rvsoff ; initial pre-set for message flasher |
||||
; |
||||
; control routine for default device / drive set-up changes |
||||
; |
||||
confgg sta work ; store pre-set value for message-flasher |
||||
ldy msgnr ; |
||||
cpy #5 ; branch if not msg-line # 5 (device # change) |
||||
bne confgh ; |
||||
jsr confg0 ; special setup on msg-line = #5 |
||||
bne confgn ; |
||||
confgh lda #3 ; |
||||
sta msglen ; length to print for all other default selections |
||||
tya ; |
||||
asl a ; forms index to screen X-Y pairs |
||||
tax ; |
||||
lda diskb,x ; X-position for curr msg line |
||||
sta msgxy ; |
||||
lda diskb+1,x ; Y-position of first line-item |
||||
ldx workd,y ; index-value for current line-item |
||||
beq confgj ; if line-item index = zero |
||||
clc ; |
||||
confgi adc msglen ; add Y-offset for each line-item |
||||
dex ; |
||||
bne confgi ; if more to add |
||||
; |
||||
confgj sta msgxy+1 ; set Y-position for line-item |
||||
ldx #2 ; |
||||
tya ; current msg line to update |
||||
ror a ; |
||||
bcs confgk ; if current line = 1 or 3 |
||||
ldx #4 ; |
||||
ror a ; test for current line = 4 |
||||
ror a ; |
||||
bcs confgk ; on current line index = 4 |
||||
ldx #0 ; current line = 0 or 2 |
||||
confgk lda worka,x ; |
||||
sta curmsg ; set base addres of sub-string |
||||
lda worka+1,x ; |
||||
sta curmsg+1 ; but it still needs line-item offset |
||||
; |
||||
ldx workd,y ; index to current line-item |
||||
beq confgn ; if line-item index = zero |
||||
confgl clc ; |
||||
lda curmsg ; base address of sub-string |
||||
adc msglen ; |
||||
sta curmsg ; plus offset for each line-item |
||||
bcc confgm ; |
||||
inc curmsg+1 ; bump sub-string addr on carry |
||||
confgm dex ; |
||||
bne confgl ; if more to add |
||||
; |
||||
; flash current line-item, get a key, decide what to do with it |
||||
; |
||||
confgn lda work ; pick-up rvs/norm video pre-set |
||||
jsr flasha ; blinks a message and gets a keystroke |
||||
lda laskey ; |
||||
cmp #stpky ; check values of key returned from flasher |
||||
beq confgp ; exit to function-menu, Stop key was pressed |
||||
cmp #f7 ; |
||||
bne confgr ; if key not = F7 |
||||
jsr dpset ; quitting time, save new defaults, re-calc config |
||||
confgp jsr wdlyn ; |
||||
jmp wders ; clear msg-line, file-list window, then return |
||||
; |
||||
confgr cmp #f5 ; |
||||
beq confgn ; ignore the f5 key here |
||||
ldy msgnr ; pick-up index to current msg-line |
||||
ldx workd,y ; pick-up line-item value |
||||
cmp #space ; |
||||
bne confgs ; if key not = space |
||||
lda #crsrd ; key = space, check current message line # |
||||
cpy #5 ; |
||||
bne confgs ; for lines < #5, treat space like cursor-down |
||||
jmp dvchg ; for line #5, change disk device # was selected |
||||
; |
||||
confgs sta laskey ; save key value in case it changed |
||||
cmp #crsrd ; |
||||
beq confgx ; on key = cursor-down (or Space) |
||||
cmp #crsru ; |
||||
beq confgw ; on key = cursor-up |
||||
cpy #5 ; |
||||
beq confgn ; on msg-line #5, ignore cursor left / right key |
||||
; |
||||
; change message line-nr / line-item values according to key values |
||||
; |
||||
tya ; curr msg line-nr (key = cursor left / right) |
||||
ror a ; |
||||
bcc confgt ; message line-nr = 0, 2, or 4 |
||||
txa ; |
||||
eor #1 ; toggle the physical drive # |
||||
tax ; |
||||
bcs confgv ; on msg-line = 1 or 3 |
||||
confgt lda laskey ; |
||||
bmi confgu ; key must be = cursor-left |
||||
inx ; |
||||
txa ; on cursor-right bump line-item index |
||||
and #3 ; |
||||
tax ; make the index wrap-around 0 - 3 values |
||||
jmp confgv ; |
||||
confgu dex ; on cursor-left decrement line-item index |
||||
bpl confgv ; |
||||
ldx #3 ; make the index wrap-around 0 - 3 values |
||||
; |
||||
confgv stx workd,y ; set new line-item index value |
||||
jsr prtmsk ; clear old default value to normal-video |
||||
lda #rvson ; to pre-set message flasher for rvs-video |
||||
jmp confgg ; go setup to flash new line-item default |
||||
; |
||||
confgw tya ; save old message line-nr (key = cursor-up) |
||||
dey ; |
||||
bpl confgy ; on key = cursor-up decrement line-nr |
||||
ldy #5 ; |
||||
bne confgy ; make line-nr wrap around 0 - 5 values |
||||
; |
||||
confgx tya ; save old message line-nr (key = cursor-down) |
||||
iny ; |
||||
cpy #6 ; on key = cursor-down bump line-nr |
||||
bne confgy ; |
||||
ldy #0 ; make line-nr wrap around 0 - 5 values |
||||
; |
||||
confgy sty msgnr ; set new message line-nr |
||||
cmp #5 ; |
||||
bne confgz ; if old msg-line not #5, leave item in rvs-video |
||||
jsr prtmsk ; clear msg-line #5 to normal-video |
||||
confgz lda #rvsoff ; |
||||
jmp confgg ;pick-up flasher pre-set, go flash new msg-line |
||||
; |
||||
confg0 lda #63 ; msg = change disk device # |
||||
ldx #lynfl8+5 ; |
||||
ldy #52 ; X-Y positions for 80-col video |
||||
bit mode ; |
||||
bmi confg1 ; on 80-col video |
||||
ldy #cent ; X-Y positions for 40-col video |
||||
ldx #lynfl4+12 ; |
||||
confg1 jsr fndmsb ; find and print the message in normal-video |
||||
ldy #5 ; |
||||
sty msgnr ; used as index to current message-line |
||||
lda #rvsoff ; |
||||
sta work ; pre-set flasher for normal-video |
||||
rts ; |
||||
; |
||||
confg2 pha ; save the drive name for later |
||||
ldy #3 ; |
||||
confg3 iny ; search for position of drive name in message |
||||
lda (curmsg),y ; |
||||
cmp #':' ; this char is one byte beyond drive name |
||||
bne confg3 ; |
||||
dey ; so back-up one char position |
||||
clc ; |
||||
tya ; |
||||
adc msgxy+1 ; start of message plus offset to drive name |
||||
ldx msgxy ; |
||||
tay ; |
||||
jsr plot ; move the cursor to the drive name |
||||
pla ; |
||||
jmp chrout ; print the drive name |
||||
; |
||||
; on F7 key, lock in new defaults, re-calc config, return to menu |
||||
; |
||||
dpset lda workd ; convert line-item indexes to shell defaults |
||||
ora #8 ; |
||||
sta unita ; new default device # for drive: A |
||||
lda worke ; |
||||
ora #8 ; |
||||
sta unitb ; new default device # for drive: B |
||||
lda workd+1 ; |
||||
ora #48 ; |
||||
sta driva ; new physical drive # for drive: A |
||||
lda worke+1 ; |
||||
ora #48 ; |
||||
sta drivb ; new physical drive # for drive: A |
||||
lda diska ; |
||||
ora #4 ; |
||||
sta prdev ; new default printer device # (0 = None) |
||||
; |
||||
ldx #0 ; pre-set for single-drive configuration |
||||
lda unita ; |
||||
cmp unitb ; check for differing device nrs. |
||||
beq dpsetb ; |
||||
ldx #2 ; set dual-unit configuration |
||||
bne dpsetc ; |
||||
dpsetb lda driva ; check for differing drive nrs. |
||||
cmp drivb ; |
||||
beq dpsetc ; set single-drive configuration |
||||
inx ; |
||||
dpsetc stx config ; set new configuration value |
||||
rts ; |
||||
; |
||||
; DISK / PRINTER SETUP (PAGE 2) CHANGE DISK DEVICE # WAS SELECTED |
||||
; |
||||
; print the messages to start changing the device # |
||||
; |
||||
dvchg jsr dpset ; set-up the new default configuration |
||||
jsr wdlyn ; erase the query-message line |
||||
bit mode ; |
||||
bmi dvchgb ; on 80-col video |
||||
jsr wders ; erase the 40-col file-list window |
||||
ldx #lynfl4 ; |
||||
ldy #cent ; set-up X-Y position for 40-cols |
||||
lda #63 ; |
||||
jsr fndmsb ; msg = change disk device # |
||||
; |
||||
dvchgb lda #16 ; msg = turn on the drive to be changed |
||||
jsr fndmsb ; |
||||
lda #17 ; msg = turn off the other drive |
||||
jsr fndmsb ; |
||||
ldx #lynfl8+9 ; pre-set X-position for 80-column video |
||||
bit mode ; |
||||
bmi dvchgd ; |
||||
ldx #lynfl4+4 ; set X-position for 40-column video |
||||
dvchgd ldy #cent ; |
||||
lda #64 ; msg = then press space |
||||
jsr fndmsb ; |
||||
; |
||||
dvchgf jsr getky ; fetch a keystroke |
||||
lda laskey ; |
||||
cmp #space ; |
||||
beq dvchgj ; proceed on key = space |
||||
cmp #stpky ; |
||||
bne dvchgg ; if not Stop key, go check for F5 |
||||
rts ; |
||||
dvchgg cmp #f5 ; |
||||
bne dvchgf ; ignore all keys except space, Stop, or F5 |
||||
jsr confgp ; |
||||
jmp confg ; on key = F5, go start over at the top |
||||
; |
||||
; hunt for any disk device # present on the buss |
||||
; |
||||
dvchgj lda unita ; |
||||
sta worka ; save current device # for drive A |
||||
lda #8 ; |
||||
sta unita ; set-up first device # to hunt for |
||||
; |
||||
dvchgk jsr opndos ; open DOS command channel, branch if device is present |
||||
beq dvchgm ; |
||||
inc unita ; else, bump the device nr, check for last device # |
||||
lda unita ; |
||||
cmp #12 ; branch if no device found yet, to try the next one |
||||
bne dvchgk ; |
||||
lda #8 ; when all possible devices are dead |
||||
sta unita ; |
||||
jsr errms ; tell the user nobody is home (device # 8 not present) |
||||
lda worka ; |
||||
sta unita ; restore the original device # for drive A |
||||
; |
||||
lda laskey ; pick-up the keystroke from the error-message |
||||
cmp #space ; |
||||
beq dvchgj ; if key = space, try the device hunt again |
||||
cmp #stpky ; |
||||
beq dvchgl ; if Stop key pressed, bail out to function menu |
||||
jsr confgp ; |
||||
jmp confg ; on key = F5, start over again at the top |
||||
dvchgl rts ; |
||||
; |
||||
; reset the live unit, then ask the user to select the new device # |
||||
; |
||||
dvchgm lda #14 ; send 'UI' command (soft-reset) to the live unit |
||||
jsr sendos ; |
||||
jsr crmsg ; print msg = move cursor then press space to select |
||||
lda #18 ; |
||||
jsr fndmsb ; msg = 'new device # = ' |
||||
lda #3 ; |
||||
jsr prcon ; display suffix ' 8 9 10 11 ' |
||||
lda msgxy+1 ; |
||||
sta workb+1 ; save Y-position of suffix sub-string |
||||
; |
||||
lda unita ; pick-up the device # that responded |
||||
and #7 ; |
||||
sta workb ; set index into the sub-string |
||||
lda #3 ; |
||||
sta msglen ; set length for each device in sub-string |
||||
; |
||||
dvchgp lda #<constd ; set base address of sub-string |
||||
sta curmsg ; |
||||
lda #>constd ; but it still needs line-item offset |
||||
sta curmsg+1 ; |
||||
lda workb+1 ; Y-position of first device # |
||||
ldx workb ; current line-item index into the sub-string |
||||
beq dvchgr ; if line-item index = zero |
||||
clc ; |
||||
dvchgq adc msglen ; add offset for each line-item |
||||
dex ; |
||||
bne dvchgq ; if more to add |
||||
; |
||||
dvchgr sta msgxy+1 ; set Y-position for current line-item |
||||
ldx workb ; |
||||
beq dvchgu ; if line-item index = zero |
||||
dvchgs clc ; |
||||
lda curmsg ; base address of sub-string |
||||
adc msglen ; |
||||
sta curmsg ; plus offset for each line-item |
||||
bcc dvchgt ; |
||||
inc curmsg+1 ; bump sub-string addr on carry |
||||
dvchgt dex ; |
||||
bne dvchgs ; if more to add |
||||
; |
||||
; flash the current device as the default then select new device |
||||
; |
||||
dvchgu jsr flash ; blinks the current option and gets a keystroke |
||||
lda laskey ; |
||||
cmp #stpky ; check keystroke value returned from flasher |
||||
bne dvchgv ; |
||||
jmp dxchgv ; bail out, Stop key was pressed |
||||
; |
||||
dvchgv cmp #space ; |
||||
beq dxchgc ; on key = space, a new device # has been selected |
||||
cmp #f5 ; |
||||
bne dvchgx ; if key not = F5, go check for cursor right-left |
||||
jsr confgp ; |
||||
jmp confg ; key = F5, start over again at the top |
||||
; |
||||
dvchgx ldx workb ; pick-up current line-item index to new device # |
||||
cmp #crsrr ; |
||||
beq dxchga ; if key = cursor-right |
||||
cmp #crsrl ; |
||||
bne dvchgu ; if key not = cursor-left (ignore all others) |
||||
; |
||||
dex ; key = cursor-left, decrement line-item index |
||||
bpl dxchgb ; |
||||
ldx #3 ; make index wrap around values 0 - 3 |
||||
bne dxchgb ; |
||||
dxchga inx ; key = cursor-right, increment line-item index |
||||
txa ; |
||||
and #3 ; make index wrap around values 0 - 3 |
||||
tax ; |
||||
dxchgb stx workb ; set the new line-item index value |
||||
jsr prtmsk ; |
||||
beq dvchgp ; clear old option, go flash the new one |
||||
; |
||||
; change the device that responded to the selected new device # |
||||
; |
||||
dxchgc lda drivx ; close the command channel for the old device # |
||||
jsr close ; |
||||
lda #8 ; set-up to hunt for its device # after soft-reset |
||||
sta unita ; |
||||
dxchgd jsr opndos ; try to open command channel, branch when status OK |
||||
beq dxchge ; |
||||
inc unita ; else, bump the device #, continue the hunt |
||||
bne dxchgd ; |
||||
; |
||||
dxchge ldx drivx ; found it, set-up DOS cmnd chan as current input |
||||
jsr chkin ; |
||||
dxchgf jsr chrin ; fetch & waste status-bytes until the first |
||||
cmp #'V' ; |
||||
bne dxchgf ; char of the DOS version string is found |
||||
ldy #0 ; |
||||
dxchgg jsr chrin ; then save the next three bytes for reference |
||||
sta fnam2,y ; |
||||
iny ; |
||||
cpy #3 ; branch while more bytes to save |
||||
bne dxchgg ; |
||||
dxchgh jsr chrin ; then waste the rest until EOI recvd |
||||
lda stat ; |
||||
beq dxchgh ; if not end-of-message yet |
||||
jsr clrchn ; |
||||
; |
||||
lda fnam2 ; pick-up first byte of DOS-type identifier |
||||
cmp #'3' ; |
||||
beq dxchgj ; if unit-type is 1571 / 1572 DOS 3.0 |
||||
ldy #16 ; |
||||
lda fnam2+2 ; else, pre-set DOS cmnd # for 154x / 2031 unit-types |
||||
cmp #'6' ; |
||||
beq dxchgm ; if unit-type is 154x / 2031 DOS 2.6 |
||||
ldy #15 ; |
||||
bne dxchgm ; else, pre-set DOS cmnd # for 4040-type units |
||||
; |
||||
dxchgj ldx drivx ; set-up DOS cmnd chan as current output |
||||
jsr chkout ; |
||||
ldy #2 ; set-up index for 157x unit-type DOS cmnd |
||||
dxchgk lda dcmd17,y ; |
||||
jsr chrout ; send canned device # / mode change cmnd for 157x |
||||
dey ; |
||||
bpl dxchgk ; while more canned string to send |
||||
clc ; |
||||
lda workb ; pick-up index to user-selected new device # |
||||
adc #8 ; |
||||
jsr chrout ; index plus 8 = new device # |
||||
jsr clrchn ; |
||||
jmp dxchgn ; return to default i/o, go close DOS cmnd chan |
||||
; |
||||
dxchgm lda #2 ; |
||||
sta fnam1 ; nr of bytes for M-W cmnd |
||||
clc ; |
||||
lda workb ; line-item index for selected new device # |
||||
adc #40 ; |
||||
sta fnam1+1 ; plus 8 plus 32 yields new device # |
||||
adc #32 ; |
||||
sta fnam1+2 ; plus 32 again for last byte of M-R |
||||
lda #3 ; |
||||
sta flen1 ; set file-name length for M-R command |
||||
tya ; |
||||
jsr sendos ; send the M-W command to change the device # |
||||
; |
||||
dxchgn lda #19 ; msg = done... turn on the other drive |
||||
jsr fndmsb ; |
||||
ldx #lynfl8+14 ; pre-set X-position for 80-column video |
||||
bit mode ; |
||||
bmi dxchgp ; |
||||
ldx #lynfl4+9 ; set X-position for 40-column video |
||||
dxchgp ldy #cent ; |
||||
lda #64 ; msg = then press space |
||||
jsr fndmsb ; |
||||
; |
||||
dxchgt jsr getin ; wait for any keystroke |
||||
beq dxchgt ; |
||||
lda #stpky ; but don't care what it really was |
||||
sta laskey ; |
||||
dxchgv lda drivx ; close the DOS cmnd chan for the old device # |
||||
jsr close ; |
||||
lda worka ; restore original default device # for drive A |
||||
sta unita ; |
||||
rts ; go re-display function menu |
||||
; |
||||
; |
||||
; FUNCTION CODE = 1: LOAD & RUN A BASIC PROGRAM |
||||
; |
||||
runpg lda #22 ; |
||||
jsr fndmsb ; msg = loading program: file-name-xx |
||||
ldy #0 ; |
||||
runpga lda bfnam,y ; set-up the file-name for loading |
||||
sta fnam1,y ; |
||||
jsr namot ; and print the file-name being loaded |
||||
iny ; |
||||
cpy #16 ; branch if more file-name to move and print |
||||
bne runpga ; |
||||
; |
||||
; setup kernal and DOS, load the selected program, check for Stop-key |
||||
; |
||||
ldy drivx ; |
||||
lda driva-1,y ; set-up physical drive # to load from |
||||
sta fdriv ; |
||||
lda #':' ; set-up drive # and colon in front of file-name |
||||
sta fdriv+1 ; |
||||
lda lfnr,y ; set-up LFN and device # for the load |
||||
ldx unita-1,y ; |
||||
ldy #0 ; set-up Secondary-Addr for Basic program load |
||||
jsr setlfs ; |
||||
lda #18 ; set-up file-name length for the load |
||||
ldx #<fdriv ; |
||||
ldy #>fdriv ; set-up pointer to file-name |
||||
jsr setnam ; |
||||
lda #12 ; set-up the 'load' and 'file-name' bank #s |
||||
tax ; |
||||
jsr setbnk ; before calling Kernal Load routine |
||||
; |
||||
jsr pagin ; restore Basic zero-page before loading |
||||
; |
||||
lda #<load ; set-up address of Kernal Load routine |
||||
sta pclo ; |
||||
lda #>load ; for a Long-Call via Shell RAM code |
||||
sta pchi ; |
||||
lda #0 ; tell Kernal we want to load a program |
||||
sta areg ; |
||||
ldx #$01 ; pick-up Start-of-Basic address set by Cold-start |
||||
stx xreg ; |
||||
ldy #>bufra ; so the program loads above the Shell in Bank # 0 |
||||
sty yreg ; |
||||
jsr rajsrf ; to return here instead of somewhere inside Basic |
||||
bcc runpgc ; |
||||
jsr pagot ; Stop pressed while loading, restore Shell zero-page |
||||
; |
||||
lda #stpky ; show Stop key as the last keystroke |
||||
sta laskey ; |
||||
rts ; bail out to re-display function menu |
||||
; |
||||
; No stop-key during load, set-up Basic environment, then run the program |
||||
; |
||||
runpgc pla ; throw away normal return-addr to control module |
||||
pla ; |
||||
lda xreg ; pick-up saved end-of-load address from Long-call |
||||
sta txtop ; |
||||
lda yreg ; leave word for basic, where program-text ends |
||||
sta txtop+1 ; |
||||
lda #128 ; enable Kernal control-messages |
||||
jsr setmsg ; |
||||
jsr stdclr ; clear both screens and restore default colors |
||||
; |
||||
jmp runjmp ; go make direct-calls from Ram to Run Basic Program |
||||
; |
||||
; |
||||
; FUNCTION CODE = 2: FORMAT A DISKETTE |
||||
; |
||||
; ask user for blank disk - abort on key = f5 / Stop |
||||
; |
||||
formt jsr opndos ; |
||||
bne formte ; |
||||
formta lda #46 ; msg = insert a blank disk then press space |
||||
jsr fndmsb ; |
||||
formtb jsr getky ; try for a keystroke |
||||
cmp #space ; |
||||
beq formtc ; on key = space |
||||
cmp #f5 ; |
||||
beq formtc ; on key = F5 |
||||
cmp #stpky ; |
||||
bne formtb ; if key not = Stop |
||||
; |
||||
formtc jsr wdlyn ; erase the message-line |
||||
lda laskey ; |
||||
cmp #space ; branch if last keystroke = Space |
||||
beq formtf ; |
||||
formte sec ; |
||||
rts ; key = F5 / Stop, abort format with no action |
||||
; |
||||
; read the old disk-name, check for error, setup a default name |
||||
; |
||||
formtf jsr updrl ; try to update the drive/disk id-line |
||||
lda stsav ; |
||||
bne formtg ; on ST error, assume drive not ready |
||||
lda doserr ; |
||||
beq formtj ; no errors found, so proceed with format |
||||
cmp #22 ; |
||||
bcc formth ; unformatted disk, no disk, or drive door open |
||||
; |
||||
formtg jsr errms ; show an error-message, get response keystroke |
||||
cmp #stpky ; |
||||
beq formte ; on key = Stop, abort format with no action |
||||
cmp #space ; |
||||
beq formtf ; on key = space, just try to read the disk again |
||||
ldx func ; |
||||
cpx #2 ; branch on format func & key = f5, re-start from top |
||||
beq formta ; |
||||
bne formtf ; else, just try to read the disk again |
||||
; |
||||
formth lda drivx ; pick-up current active drive index |
||||
asl a ; |
||||
tay ; forms index to disk-id field for active drive |
||||
lda #shpac ; |
||||
sta diska-2,y ; set-up disk-id field with shifted spaces |
||||
sta diska-1,y ; |
||||
ldx #15 ; |
||||
formti sta dsnam,x ; set-up disk-name field with shifted spaces |
||||
dex ; |
||||
bpl formti ; if more shifted spaces to store |
||||
; |
||||
; prompt user for new disk-name, showing old-name & ID as default |
||||
; |
||||
formtj lda #27 ; msg = enter disk name: diskette-name-xx |
||||
jsr fndmsb ; |
||||
lda #rvson ; set reverse-video = On to display disk-name |
||||
jsr chrout ; |
||||
ldy #0 ; set-up index to disk-name |
||||
formtk lda dsnam,y ; |
||||
sta fnam1,y ; set-up current name as default if user hits Return |
||||
jsr namot ; |
||||
iny ; and display the current disk-name |
||||
cpy #16 ; |
||||
bne formtk ; while more disk-name to set-up & display |
||||
; |
||||
sty flen1 ; set-up length of file-name-1 for DOS command |
||||
lda #44 ; |
||||
jsr chrout ; comma separates disk-name & disk-id fields |
||||
lda drivx ; |
||||
asl a ; forms index to disk-id for current active drive |
||||
tay ; |
||||
lda diska-2,y ; display first disk-id char |
||||
jsr chrout ; |
||||
lda diska-1,y ; display second disk-id char |
||||
jsr chrout ; |
||||
; |
||||
; enter disk-name, start over on key = f5, abort on stop-key |
||||
; |
||||
clc ;message Y-position plus message length |
||||
lda msgxy+1 ; |
||||
adc msglen ; gives Y-position of disk-name field |
||||
sta msgxy+1 ; |
||||
jsr enter ; returns disk-name in fnam1, disk-id in diska(b) |
||||
jsr wdlyna ; |
||||
lda laskey ; pick-up exit-keystroke from data-entry |
||||
cmp #caret ; |
||||
beq formtn ; all ok, user likes current name & id-code |
||||
cmp #stpky ; |
||||
beq formte ; on key = Stop, user wants to kill function |
||||
; |
||||
ldx func ; pick-up shell function code |
||||
cpx #2 ; |
||||
beq formtl ; key = F5 & func not = Format, user don't want format |
||||
jmp formte ; |
||||
formtl jmp formta ; on func = Format & key = F5, start again from the top |
||||
; |
||||
formtn lda #28 ; |
||||
jsr fndmsb ; msg = disk format working on drive: X |
||||
clc ; |
||||
lda drivx ; current active drive-index plus 64 gives drive-name |
||||
adc #64 ; |
||||
jsr chrout ; print the active logical-drive name |
||||
; |
||||
; check for long/short format, generate ID for long format |
||||
; |
||||
lda #5 ; pre-set for long-format cmnd |
||||
ldx work+1 ; |
||||
cpx #2 ; branch if user entered a disk-id code |
||||
beq formts ; |
||||
lda #4 ; pre-set for short-format command |
||||
ldx doserr ; |
||||
beq formts ; no read-error on header, so do short format |
||||
lda drivx ; |
||||
asl a ; active drive times 2 = index for diskette ID variable |
||||
tay ; |
||||
lda random ; pick-up CIA # 1 hardware value for ID char |
||||
; |
||||
and #127 ; clear bit 7 off ID char |
||||
cmp #48 ; |
||||
bcs formtp ; if char already in range 48 - 127 |
||||
adc #48 ; |
||||
formtp sta diska-2,y ; set char to range (first ID char) |
||||
lda random+1 ; |
||||
and #127 ; clear bit 7 off ID char |
||||
cmp #48 ; |
||||
bcs formtq ; if char already in range 48 - 127 |
||||
adc #48 ; |
||||
formtq sta diska-1,y ; set char to range (second ID char) |
||||
lda #5 ; use long-format command with random id-code |
||||
; |
||||
formts jsr sendos ; send the format command, save status-flag |
||||
php ; |
||||
jsr wdlyna ; erase the 'format-working' message |
||||
plp ; |
||||
bcc formtv ; return flag .C clear = status OK to caller |
||||
jmp formtg ; else, go show error-message, maybe re-try |
||||
formtv rts ; |
||||
; |
||||
; |
||||
; FUNCTION CODE = 3: CLEANUP A DISK (VALIDATE BAM) |
||||
; |
||||
clean jsr opndos ; |
||||
bne cleanb ; open DOS command channel, branch if status bad |
||||
lda #29 ; |
||||
jsr fndmsb ; msg = disk cleanup working on drive: x |
||||
lda drivid ; |
||||
jsr chrout ; then print the active drive name |
||||
cleana lda #2 ; |
||||
jsr sendos ; send validate command to active drive |
||||
jsr wdlyna ; |
||||
cleanb rts ; clear the 'working' message & exit to menu |
||||
; |
@ -0,0 +1,789 @@
|
||||
; TABLES AND CONSTANTS USED BY SHELL FUNCTIONS AND SUBROUTINES |
||||
; |
||||
; |
||||
; DISPATCH TABLE FOR SHELL FUNCTION ENTRY POINTS |
||||
; |
||||
funtbl .word confg-1 ; change disk/printer setup |
||||
.word runpg-1 ; run a (basic) program |
||||
.word formt-1 ; format (header) a disk |
||||
.word clean-1 ; cleanup (validate BAM) a disk |
||||
.word bakup-1 ; copy (backup) a disk |
||||
.word copy-1 ; copy selected files |
||||
.word delet-1 ; delete (scratch) files |
||||
.word restr-1 ; restore (un-scratch) files |
||||
.word renam-1 ; rename selected files |
||||
.word reseq-1 ; re-order disk directory |
||||
; |
||||
sxfun .word exfund-1 ; Shell Functions return control to this label |
||||
; |
||||
; |
||||
; TABLE OF D.O.S. COMMAND STRING PATTERNS |
||||
; |
||||
dostbl = * ; start of DOS command table |
||||
; |
||||
dcmd00 .byt dcmd01-* ; command length byte |
||||
.byt 'I',1 ; initialize the active drive |
||||
dcmd01 .byt dcmd02-* ; |
||||
.byt 'I',2 ; initialize the other drive |
||||
dcmd02 .byt dcmd03-* ; |
||||
.byt 'V',1 ; validate bam on the active drive |
||||
dcmd03 .byt dcmd04-* ; |
||||
.byt 'V',2 ; validate bam on the other drive |
||||
dcmd04 .byt dcmd05-* ; |
||||
.byt 'N',1,':',3 ; format disk - without ID code |
||||
dcmd05 .byt dcmd06-* ; |
||||
.byt 'N',1,':',3,',',5 ; format disk - with ID code |
||||
dcmd06 .byt dcmd07-* ; |
||||
.byt 'D',2,'=',1 ; dual-drive backup |
||||
dcmd07 .byt dcmd08-* ; |
||||
.byt 'C',2,':',4,'=',1,':',3 ; dual-drive file copy |
||||
dcmd08 .byt dcmd09-* ; |
||||
.byt 'R',1,':',4,'=',1,':',3 ; rename a file |
||||
dcmd09 .byt dcmd10-* ; |
||||
.byt 'S',1,':',3 ; scratch a file |
||||
dcmd10 .byt dcmd11-* ; |
||||
.byt 'U1:',6 ; read a block |
||||
dcmd11 .byt dcmd12-* ; |
||||
.byt 'U2:',6 ; write a block |
||||
dcmd12 .byt dcmd13-* ; |
||||
.byt 'B-P:',6 ; set dos buffer pointer |
||||
dcmd13 .byt dcmd14-* ; |
||||
.byt 'P',3 ; position relative file pointer |
||||
dcmd14 .byt dcmd15-* ; |
||||
.byt 'UI' ; soft-reset disk-unit to device # 8 |
||||
dcmd15 .byt dcmd16-* ; |
||||
.byt 'M-W',12,0,3 ; write dos memory (for 4040 device # change) |
||||
dcmd16 .byt dcmd17-* ; |
||||
.byt 'M-W',119,0,3 ; write dos memory (154x / 2031 device # change) |
||||
; |
||||
dcmd17 .byt '>0U' ; device # / mode change for 157x unit-type |
||||
; |
||||
; special pattern for cmnd # 17, stored backwards |
||||
; |
||||
; |
||||
; FILE-TYPE CODES USED BY COPY-FILES FUNCTION FOR OPENING FILES |
||||
; |
||||
ftype .byt ' SPUL' ; Sequential, Program, User, Relative (L) Length |
||||
; |
||||
; |
||||
; BIT PATTERNS USED BY 'RESTORE FILES' AND 'BACKUP' FOR B.A.M. SEARCH |
||||
; |
||||
bits .byt 1, 2, 4, 8, 16, 32, 64, 128 ; to isolate allocated blocks |
||||
; |
||||
; |
||||
; TRACK / SECTOR LIMITS BY DISK-BAND FOR SINGLE-DRIVE / DUAL-UNIT BACKUP |
||||
; |
||||
band .byt 17, 20, 24, 18, 30, 17, 35, 16 ; Bands 0 - 3 for Side # 0 |
||||
.byt 52, 20, 59, 18, 65, 17, 70, 16 ; Bands 4 - 7 for Side # 1 |
||||
; |
||||
; |
||||
; CONSTANTS USED IN BINARY - ASCII CONV FOR SCREEN / PRINTER / DISK |
||||
; |
||||
mask .byt '0000' ; four ascii zeros to start the conversion |
||||
; |
||||
dval .byt 10, 100, 2, 5, 6 ; decimal values for conversion |
||||
; |
||||
; |
||||
; BROWSING-CURSOR IMAGE FOR SCREEN OUTPUT (Data is Backwards!) |
||||
; |
||||
bzcur .byt rvsoff, clrfl, 62, 192, 192, clrml, rvson |
||||
; |
||||
; |
||||
; TABLE OF USEABLE KEY-STROKE VALUES FOR 'Getky' SUBROUTINE |
||||
; |
||||
kytab .byt 0, f7, f5, f3, space ; |
||||
.byt crsru, crsrd, crsrl, crsrr ; |
||||
; |
||||
; |
||||
; SHELL MESSAGE COLOR TABLE: 80-Col., 40-Col. Within X-Position |
||||
; |
||||
msclr .byt clrhl, clrhl, clrmu, clrmu, clrmu, clrmu |
||||
.byt clrmu, clrmu, clrmu, clrmu, clrmu, clrmu |
||||
.byt clrml, clrmu, clrdl, clrml, clrdl, clrdl |
||||
.byt clrwh, clrdl, clrfl, clrwh |
||||
; |
||||
; |
||||
; SCREEN X-Y COORDINATES FOR TABLE-PLOTTED SHELL MESSAGES |
||||
; |
||||
; Format: 80-Col. X-Y, 40-Col. X-Y Within Message-Number (0 - 20) |
||||
; |
||||
xytbl .byt 1, 5, 1, 1 ; msg # 0 |
||||
.byt 2, 5, 2, 1 ; msg # 1 |
||||
.byt 3, 5, 3, 1 ; msg # 2 |
||||
.byt 4, 5, 4, 1 ; msg # 3 |
||||
.byt 2, 31, 5, 1 ; msg # 4 |
||||
.byt 3, 31, 1, 21 ; msg # 5 |
||||
.byt 4, 31, 2, 21 ; msg # 6 |
||||
.byt 2, 57, 3, 21 ; msg # 7 |
||||
.byt 3, 57, 4, 21 ; msg # 8 |
||||
.byt 4, 57, 5, 21 ; msg # 9 |
||||
.byt 1, cent, 1, cent ; msg # 10 |
||||
.byt 3, cent, 3, cent ; msg # 11 |
||||
.byt 5, cent, 5, cent ; msg # 12 |
||||
.byt 0, 40, 0, 0 ; msg # 13 |
||||
.byt 8, cent, 9, 0 ; msg # 14 |
||||
.byt 15, 9, 20, cent ; msg # 15 |
||||
.byt 17, cent, 13, cent ; msg # 16 |
||||
.byt 18, cent, 14, cent ; msg # 17 |
||||
.byt 21, 25, 17, 5 ; msg # 18 |
||||
.byt 23, cent, 19, cent ; msg # 19 |
||||
.byt 12, cent, 13, cent ; msg # 20 |
||||
.byt 6, 21, 7, 1 ; msg # 21 |
||||
.byt 6, 21, 7, 1 ; msg # 22 |
||||
.byt 6, 21, 7, 1 ; msg # 23 |
||||
.byt 6, 21, 7, 1 ; msg # 24 |
||||
.byt 6, 21, 7, 1 ; msg # 25 |
||||
.byt 9, 0, 10, 0 ; msg # 26 |
||||
.byt 10, 21, 11, 1 ; msg # 27 |
||||
; |
||||
; |
||||
; CONSTANTS USED AS SUFFIXES TO SHELL MESSAGES |
||||
; |
||||
contbl = * ; Base Address of Message-Suffix List |
||||
; |
||||
.byt constb-1-* ; length of constant |
||||
consta .byt ' N Y N O N J N S ' ; Abbreviations of No & Yes |
||||
; |
||||
.byt constc-1-* ; length of constant |
||||
constb .byt ' A B ' ; Choice of Logical Drive Name |
||||
; |
||||
.byt constd-1-* ; length of constant |
||||
constc .byt ' 0 1 ' ; Choice of Physical Drive Nr. |
||||
; |
||||
.byt conste-1-* ; length of constant |
||||
constd .byt ' 8 9 10 11' ; Choice of Default Device Nr. |
||||
; |
||||
.byt msgtbl-* ; length of constant |
||||
conste .byt ' SEQ PRG USR REL ' ; Choice of File-Type Code |
||||
; |
||||
; |
||||
; SHELL MESSAGE TABLE: Segmented By Message-Type Within Language |
||||
; |
||||
msgtbl = * ; Base Address Table for Shell Messages |
||||
; |
||||
.word msg00a ; English Language |
||||
.word msg00b ; French Language |
||||
.word msg00c ; German Language |
||||
.word msg00d ; Italian Language |
||||
; |
||||
; |
||||
; English Language Section - All Messages |
||||
; |
||||
; First Segment: Messages With Screen Positions Plotted From X-Y Table |
||||
; |
||||
msg00a .byt msg01a-* ; |
||||
.byt 'DISK/PRINTER SETUP' ; |
||||
msg01a .byt msg02a-* ; |
||||
.byt 'RUN A PROGRAM ' ; |
||||
msg02a .byt msg03a-* ; |
||||
.byt 'FORMAT A DISK ' ; |
||||
msg03a .byt msg04a-* ; |
||||
.byt 'CLEANUP A DISK ' ; |
||||
msg04a .byt msg05a-* ; |
||||
.byt 'COPY A DISK ' ; |
||||
msg05a .byt msg06a-* ; |
||||
.byt 'COPY FILES ' ; |
||||
msg06a .byt msg07a-* ; |
||||
.byt 'DELETE FILES ' ; |
||||
msg07a .byt msg08a-* ; |
||||
.byt 'RESTORE FILES ' ; |
||||
msg08a .byt msg09a-* ; |
||||
.byt 'RENAME FILES ' ; |
||||
msg09a .byt msg10a-* ; |
||||
.byt 'REORDER DIRECTORY ' ; |
||||
msg10a .byt msg11a-* ; |
||||
.byt 'COMMODORE DISK UTILITY SYSTEM' ; |
||||
msg11a .byt msg12a-* ; |
||||
.byt 'PRESS SPACE TO SELECT YOUR LANGUAGE' ; |
||||
msg12a .byt msg13a-* ; |
||||
.byt 'ENGLISH' ; |
||||
msg13a .byt msg14a-* ; |
||||
.byt ' PRESS ',rvsoff,'F5',rvson,' TO UN-SELECT / ' ; |
||||
.byt rvsoff,'STOP',rvson,' TO CANCEL ' ; |
||||
msg14a .byt msg15a-* ; |
||||
.byt ' DRIVE: FREE ' ; |
||||
msg15a .byt msg16a-* ; |
||||
.byt 'PRINTER DEVICE # = 4 5 6 NONE' ; |
||||
msg16a .byt msg17a-* ; |
||||
.byt 'TURN ON THE DRIVE TO BE CHANGED' ; |
||||
msg17a .byt msg18a-* ; |
||||
.byt 'TURN OFF THE OTHER DRIVE' ; |
||||
msg18a .byt msg19a-* ; |
||||
.byt 'NEW DEVICE # = ' ; |
||||
msg19a .byt msg20a-* ; |
||||
.byt 'DONE... TURN ON THE OTHER DRIVE' ; |
||||
msg20a .byt msg21a-* ; |
||||
.byt 'INSERT COPY DISK INTO DRIVE: ' ; |
||||
msg21a .byt msg22a-* ; |
||||
.byt 'FILE ALREADY EXISTS: ' ; |
||||
msg22a .byt msg23a-* ; |
||||
.byt 'LOADING PROGRAM: ' ; |
||||
msg23a .byt msg24a-* ; |
||||
.byt 'CHOOSE FILE TYPE: ' ; |
||||
msg24a .byt msg25a-* ; |
||||
.byt 'CANNOT RESTORE FILE: ' ; |
||||
msg25a .byt msg26a-* ; |
||||
.byt 'ENTER NEW NAME: ' ; |
||||
msg26a .byt msg27a-* ; |
||||
.byt ' SIZE FILE NAME TYPE ' ; |
||||
msg27a .byt msg28a-* ; |
||||
.byt 'ENTER DISK NAME: ' ; |
||||
; |
||||
; |
||||
; Second Segment: Messages Always Centered At Top Of File-List Window |
||||
; |
||||
msg28a .byt msg29a-* ; |
||||
.byt 'DISK FORMAT WORKING ON DRIVE: ' ; |
||||
msg29a .byt msg30a-* ; |
||||
.byt 'DISK CLEANUP WORKING ON DRIVE: ' ; |
||||
msg30a .byt msg31a-* ; |
||||
.byt 'PRESS SPACE TO CONTINUE' ; |
||||
msg31a .byt msg32a-* ; |
||||
.byt 'INSERT ORIGINAL DISK INTO DRIVE: ' ; |
||||
msg32a .byt msg33a-* ; |
||||
.byt 'DISK COPY WORKING FROM DRIVE: ' ; |
||||
msg33a .byt msg34a-* ; |
||||
.byt 'INSERT ORIGINAL DISK THEN PRESS SPACE' ; |
||||
msg34a .byt msg35a-* ; |
||||
.byt 'READING FROM ORIGINAL DISK' ; |
||||
msg35a .byt msg36a-* ; |
||||
.byt 'INSERT COPY DISK THEN PRESS SPACE' ; |
||||
msg36a .byt msg37a-* ; |
||||
.byt 'WRITING TO COPY DISK' ; |
||||
msg37a .byt msg38a-* ; |
||||
.byt 'FILE COPY WORKING FROM DRIVE: ' ; |
||||
msg38a .byt msg39a-* ; |
||||
.byt 'FILES RESTORED... CLEANUP WORKING' ; |
||||
; |
||||
; |
||||
; Third Segment: Messages Always Centered On Query/Message Line |
||||
; |
||||
msg39a .byt msg40a-* ; |
||||
.byt 'DRIVE NOT READY: ' ; |
||||
msg40a .byt msg41a-* ; |
||||
.byt 'BAD DISK IN DRIVE: ' ; |
||||
msg41a .byt msg42a-* ; |
||||
.byt 'READ ERROR ON DISK IN DRIVE: ' ; |
||||
msg42a .byt msg43a-* ; |
||||
.byt 'WRITE ERROR ON DISK IN DRIVE: ' ; |
||||
msg43a .byt msg44a-* ; |
||||
.byt 'DEVICE # NOT PRESENT' ; |
||||
msg44a .byt msg45a-* ; |
||||
.byt 'FROM WHICH DRIVE: ' ; |
||||
msg45a .byt msg46a-* ; |
||||
.byt 'USING WHICH DRIVE: ' ; |
||||
msg46a .byt msg47a-* ; |
||||
.byt 'INSERT A BLANK DISK THEN PRESS SPACE' ; |
||||
msg47a .byt msg48a-* ; |
||||
.byt 'PROGRAMS IN MEMORY WILL BE DESTROYED' ; |
||||
msg48a .byt msg49a-* ; |
||||
.byt 'COPY DISK CANNOT HOLD ALL FILES!' ; |
||||
msg49a .byt msg50a-* ; |
||||
.byt 'ERROR: WRONG DISK - TRY AGAIN' ; |
||||
msg50a .byt msg51a-* ; |
||||
.byt 'ERROR: FILE NAME NOT UNIQUE - RETRY' ; |
||||
msg51a .byt msg52a-* ; |
||||
.byt 'USE CURSOR TO MOVE FILE / PRESS SPACE ' ; |
||||
; |
||||
; |
||||
; Fourth Segment: Messages Centered (Minus 3) on Query/Message Line |
||||
; |
||||
msg52a .byt msg53a-* ; |
||||
.byt 'WANT TO FORMAT THE COPY DISK: ' ; |
||||
msg53a .byt msg54a-* ; |
||||
.byt 'COPY DISK FILL - ANOTHER DISK: ' ; |
||||
msg54a .byt msg55a-* ; |
||||
.byt 'WANT TO ALPHABETIZE DIRECTORY: ' ; |
||||
msg55a .byt msg56a-* ; |
||||
.byt 'OK TO COPY FILE-LIST: ' ; |
||||
msg56a .byt msg57a-* ; |
||||
.byt 'OK TO DELETE FILE-LIST: ' ; |
||||
msg57a .byt msg58a-* ; |
||||
.byt 'OK TO RESTORE FILE-LIST: ' ; |
||||
msg58a .byt msg59a-* ; |
||||
.byt 'OK TO CHANGE FILE-LIST: ' ; |
||||
msg59a .byt msg60a-* ; |
||||
.byt 'OK TO RE-WRITE DIRECTORY: ' ; |
||||
; |
||||
; |
||||
; Fifth Segment: Messages With X-Y Positions Passed By Caller |
||||
; |
||||
msg60a .byt msg61a-* ; |
||||
.byt ' MOVE CURSOR THEN PRESS SPACE TO SELECT ' ; |
||||
msg61a .byt msg62a-* ; |
||||
.byt 'DRIVE : DEVICE # = ' ; |
||||
msg62a .byt msg63a-* ; |
||||
.byt 'DRIVE # = ' ; |
||||
msg63a .byt msg64a-* ; |
||||
.byt 'CHANGE DISK DEVICE #' ; |
||||
msg64a .byt msg00b-* ; |
||||
.byt ' THEN PRESS SPACE' ; |
||||
; |
||||
; |
||||
; French Language Section - All Messages |
||||
; |
||||
; First Segment: Messages With Screen Positions Plotted From X-Y Table |
||||
; |
||||
msg00b .byt msg01b-* ; |
||||
.byt 'DISQUE/IMPRIMANTE ' ; |
||||
msg01b .byt msg02b-* ; |
||||
.byt 'EXECUTER PROGRAMME' ; |
||||
msg02b .byt msg03b-* ; |
||||
.byt 'FORMATER UN DISQUE' ; |
||||
msg03b .byt msg04b-* ; |
||||
.byt 'NETTOYER UN DISQUE' ; |
||||
msg04b .byt msg05b-* ; |
||||
.byt 'COPIER UN DISQUE ' ; |
||||
msg05b .byt msg06b-* ; |
||||
.byt 'COPIER FICHIERS ' ; |
||||
msg06b .byt msg07b-* ; |
||||
.byt 'EFFACER FICHIERS ' ; |
||||
msg07b .byt msg08b-* ; |
||||
.byt 'RESTAURER FICHIERS' ; |
||||
msg08b .byt msg09b-* ; |
||||
.byt 'RENOMMER FICHIERS ' ; |
||||
msg09b .byt msg10b-* ; |
||||
.byt 'REFAIRE REPERTOIRE' ; |
||||
msg10b .byt msg11b-* ; |
||||
.byt 'SYSTEME UTILITAIRE DE DISQUE COMMODORE' ; |
||||
msg11b .byt msg12b-* ; |
||||
.byt 'APPUYER ',rvson,'ESPACE',rvsoff ; |
||||
.byt ' POUR CHOIX DE LANGUE' ; |
||||
msg12b .byt msg13b-* ; |
||||
.byt 'FRANCAIS' ; |
||||
msg13b .byt msg14b-* ; |
||||
.byt ' ',rvsoff,'F5',rvson,' ANNULE CHOIX / ' ; |
||||
.byt rvsoff,'STOP',rvson,' ANNULE FONCTION ' ; |
||||
msg14b .byt msg15b-* ; |
||||
.byt ' UNITE: OCTETS' ; |
||||
msg15b .byt msg16b-* ; |
||||
.byt '# D',acent,'IMPRIMANTE = 4 5 6 AUCUN' ; |
||||
msg16b .byt msg17b-* ; |
||||
.byt 'ALLUMER L',acent,'UNITE DE DISQU A CHANGER' ; |
||||
msg17b .byt msg18b-* ; |
||||
.byt 'ETEINDRE L',acent,'AUTRE UNITE DE DISQUE' ; |
||||
msg18b .byt msg19b-* ; |
||||
.byt 'NOUVEAU DISPOSITIF = ' ; |
||||
msg19b .byt msg20b-* ; |
||||
.byt 'TERMINE... ALLUMER L',acent,'AUTRE UNITE' ; |
||||
msg20b .byt msg21b-* ; |
||||
.byt 'INSERER DISQUE-COPIE DANS UNITE: ' ; |
||||
msg21b .byt msg22b-* ; |
||||
.byt 'FICHIER DEJA EXISTANT: ' ; |
||||
msg22b .byt msg23b-* ; |
||||
.byt 'CHARGE PROGRAMME: ' ; |
||||
msg23b .byt msg24b-* ; |
||||
.byt 'TYPE DE FICHIER: ' ; |
||||
msg24b .byt msg25b-* ; |
||||
.byt 'NE PEUT RESTAURER: ' ; |
||||
msg25b .byt msg26b-* ; |
||||
.byt 'DONNER NOUVEAU NOM: ' ; |
||||
msg26b .byt msg27b-* ; |
||||
.byt ' TAILLE NOM DU FICHIER TYPE ' ; |
||||
msg27b .byt msg28b-* ; |
||||
.byt 'NOM DU DISQUE: ' ; |
||||
; |
||||
; |
||||
; Second Segment: Messages Always Centered At Top Of File-List Window |
||||
; |
||||
msg28b .byt msg29b-* ; |
||||
.byt 'FORMATE DISQUE SUR UNITE: ' ; |
||||
msg29b .byt msg30b-* ; |
||||
.byt 'NETTOIE DISQUE SUR UNITE: ' ; |
||||
msg30b .byt msg31b-* ; |
||||
.byt 'APPUYER ',rvson,'ESPACE',rvsoff ; |
||||
.byt ' POUR CONTINUER' ; |
||||
msg31b .byt msg32b-* ; |
||||
.byt 'INSERER DISQUE ORIGINAL DANS UNITE: ' ; |
||||
msg32b .byt msg33b-* ; |
||||
.byt 'COPIE DISQUE A PARTIR DE L',acent,'UNITE: ' ; |
||||
msg33b .byt msg34b-* ; |
||||
.byt 'INSERER DISQUE ORIGINAL PUIS ' ; |
||||
.byt rvson,'ESPACE',rvsoff ; |
||||
msg34b .byt msg35b-* ; |
||||
.byt 'LIT A PARTIR DU DISQUE ORIGINAL' ; |
||||
msg35b .byt msg36b-* ; |
||||
.byt 'INSERER DISQUE-COPIE, PUIS ' ; |
||||
.byt rvson,'ESPACE',rvsoff ; |
||||
msg36b .byt msg37b-* ; |
||||
.byt 'ECRIT SUR DISQUE-COPIE' ; |
||||
msg37b .byt msg38b-* ; |
||||
.byt 'COPIE FICHIER A PARTIR DE L',acent,'UNITE: ' ; |
||||
msg38b .byt msg39b-* ; |
||||
.byt 'FICHIERS RESTAURES... NETTOYAGE EN COURS' ; |
||||
; |
||||
; |
||||
; Third Segment: Messages Always Centered On Query/Message Line |
||||
; |
||||
msg39b .byt msg40b-* ; |
||||
.byt 'L',acent,'UNITE DE DISQUE N' ; |
||||
.byt acent,'EST PAS PRETE: ' ; |
||||
msg40b .byt msg41b-* ; |
||||
.byt 'MAUVAIS DISQUE DANS L',acent,'UNITE: ' ; |
||||
msg41b .byt msg42b-* ; |
||||
.byt 'ERREUR DE LECTURE - UNITE DE DISUE: ' ; |
||||
msg42b .byt msg43b-* ; |
||||
.byt 'ERREUR D',acent,'ECRITURE UNITE DE DISQUE: ' ; |
||||
msg43b .byt msg44b-* ; |
||||
.byt 'DE DISPOSITIF MANQUANT #' ; |
||||
msg44b .byt msg45b-* ; |
||||
.byt 'DE QUELLE UNITE DE DISQUE: ' ; |
||||
msg45b .byt msg46b-* ; |
||||
.byt 'AVEC QUELLE UNITE DE DISQUE: ' ; |
||||
msg46b .byt msg47b-* ; |
||||
.byt 'INSERER DISQ VIERGE PUIS ' ; |
||||
.byt rvson,'ESPACE',rvsoff ; |
||||
msg47b .byt msg48b-* ; |
||||
.byt 'PROGAMMES EN MEMOIRE SERONT DETRUITS' ; |
||||
msg48b .byt msg49b-* ; |
||||
.byt 'DISQUE-COPIE MANQUE D',acent,'ESPACE' ; |
||||
msg49b .byt msg50b-* ; |
||||
.byt 'ERREUR: MAUVAIS DISQUE; ESSAYER ENCORE' ; |
||||
msg50b .byt msg51b-* ; |
||||
.byt 'ERREUR: NOM FICHIER EN DOUBLE; RESSAYER' ; |
||||
msg51b .byt msg52b-* ; |
||||
.byt 'CURSEUR POUR DEPLACER FICHIER' ; |
||||
.byt '/ ',rvson,' ESPACE',rvsoff ; |
||||
; |
||||
; |
||||
; Fourth Segment: Messages Centered (Minus 3) on Query/Message Line |
||||
; |
||||
msg52b .byt msg53b-* ; |
||||
.byt 'FORMATER DISQUE-COPIE: ' ; |
||||
msg53b .byt msg54b-* ; |
||||
.byt 'DISQUE-COPIE PLEIN; AUTRE DISQUE: ' ; |
||||
msg54b .byt msg55b-* ; |
||||
.byt 'REPERTOIRE EN ORDRE ALPHABETIQUE: ' ; |
||||
msg55b .byt msg56b-* ; |
||||
.byt 'COPIER LISTE DES FICHIERS: ' ; |
||||
msg56b .byt msg57b-* ; |
||||
.byt 'EFFACER LISTE DES FICHIERS: ' ; |
||||
msg57b .byt msg58b-* ; |
||||
.byt 'RESTAURER LISTE DES FICHIERS: ' ; |
||||
msg58b .byt msg59b-* ; |
||||
.byt 'MODIFIER LISTE DES FICHIERS: ' ; |
||||
msg59b .byt msg60b-* ; |
||||
.byt 'REECRIRE REPERTOIRE: ' ; |
||||
; |
||||
; |
||||
; Fifth Segment: Messages With X-Y Positions Passed By Caller |
||||
; |
||||
msg60b .byt msg61b-* ; |
||||
.byt ' CURSEUR PUIS (ESPACE) POUR CHOISIR ' ; |
||||
msg61b .byt msg62b-* ; |
||||
.byt 'UNITE : DISPOSITIF = ' ; |
||||
msg62b .byt msg63b-* ; |
||||
.byt 'UNITE DE DISQUE = ' ; |
||||
msg63b .byt msg64b-* ; |
||||
.byt 'CHANGER # DISPOSITIF D',acent,'UNITE' ; |
||||
msg64b .byt msg00c-* ; |
||||
.byt ' PUIS APPUYER ',rvson,'ESPACE',rvsoff ; |
||||
; |
||||
; |
||||
; German Language Section - All Messages |
||||
; |
||||
; First Segment: Messages With Screen Positions Plotted From X-Y Table |
||||
; |
||||
msg00c .byt msg01c-* ; |
||||
.byt 'DISK/DRUCKER SETUP' ; |
||||
msg01c .byt msg02c-* ; |
||||
.byt 'PROGRAMMSTART ' ; |
||||
msg02c .byt msg03c-* ; |
||||
.byt 'DISK FORMATIEREN ' ; |
||||
msg03c .byt msg04c-* ; |
||||
.byt 'BAM ORDNEN ' ; |
||||
msg04c .byt msg05c-* ; |
||||
.byt 'DISK KOPIEREN ' ; |
||||
msg05c .byt msg06c-* ; |
||||
.byt 'FILES KOPIEREN ' ; |
||||
msg06c .byt msg07c-* ; |
||||
.byt 'FILES LOESCHEN ' ; |
||||
msg07c .byt msg08c-* ; |
||||
.byt 'FILES WIEDERHERST ' ; |
||||
msg08c .byt msg09c-* ; |
||||
.byt 'FILES UMBENENNEN ' ; |
||||
msg09c .byt msg10c-* ; |
||||
.byt 'DIRECTORY ORDNEN ' ; |
||||
msg10c .byt msg11c-* ; |
||||
.byt 'COMMODORE DISK-UTILITY' ; |
||||
msg11c .byt msg12c-* ; |
||||
.byt 'AUSWAHL IHRER SPRACHE MIT (SPACE)' ; |
||||
msg12c .byt msg13c-* ; |
||||
.byt 'DEUTSCH' ; |
||||
msg13c .byt msg14c-* ; |
||||
.byt ' NEUWAHL MIT ',rvsoff,'F5',rvson,' ' ; |
||||
.byt ' ABBRUCH MIT ',rvsoff,'STOP',rvson,' ' ; |
||||
msg14c .byt msg15c-* ; |
||||
.byt ' LAUFW: FREI ' ; |
||||
msg15c .byt msg16c-* ; |
||||
.byt 'DRUCKER GERAETE # = 4 5 6 KEINE' ; |
||||
msg16c .byt msg17c-* ; |
||||
.byt 'ZU AENDERNDES LAUFWERK EINSCHALTEN' ; |
||||
msg17c .byt msg18c-* ; |
||||
.byt 'ANDERES LAUFWERK AUSSCHALTEN!' ; |
||||
msg18c .byt msg19c-* ; |
||||
.byt 'NEUE GERAETE # = ' ; |
||||
msg19c .byt msg20c-* ; |
||||
.byt 'OK... ANDERES LAUFWERK EINSCHALTEN' ; |
||||
msg20c .byt msg21c-* ; |
||||
.byt 'ZIEL-DISKETTE EINLEGEN IN LAUFWERK: ' ; |
||||
msg21c .byt msg22c-* ; |
||||
.byt 'FILE EXISTIERT.: ' ; |
||||
msg22c .byt msg23c-* ; |
||||
.byt 'PROGRAM WIRD GELADEN: ' ; |
||||
msg23c .byt msg24c-* ; |
||||
.byt 'WAEHLE FILE-TYP: ' ; |
||||
msg24c .byt msg25c-* ; |
||||
.byt 'WIEDERHERST UNMOEGLICH: ' ; |
||||
msg25c .byt msg26c-* ; |
||||
.byt 'EINGABE NEUER NAME: ' ; |
||||
msg26c .byt msg27c-* ; |
||||
.byt ' GROESSE FILE-NAME FILE-TYP ' ; |
||||
msg27c .byt msg28c-* ; |
||||
.byt 'DISK-NAME: ' ; |
||||
; |
||||
; |
||||
; Second Segment: Messages Always Centered At Top Of File-List Window |
||||
; |
||||
msg28c .byt msg29c-* ; |
||||
.byt 'DISKETTE WIRD FORMATIERT IN LAUFWERK: ' ; |
||||
msg29c .byt msg30c-* ; |
||||
.byt 'DISK WIRD NEU GEORDNET IN LAUFW.: ' ; |
||||
msg30c .byt msg31c-* ; |
||||
.byt 'WEITER MIT (SPACE)' ; |
||||
msg31c .byt msg32c-* ; |
||||
.byt 'QUELL-DISKETTE EINLEGEN IN LAUFWERK: ' ; |
||||
msg32c .byt msg33c-* ; |
||||
.byt 'DISKETTE WIRD KOPIERT VON LAUFWERK: ' ; |
||||
msg33c .byt msg34c-* ; |
||||
.byt 'QUELL-DISKETTE EINLEGEN, DANN (SPACE)' ; |
||||
msg34c .byt msg35c-* ; |
||||
.byt 'QUELL-DISKETTE WIRD GELESEN' ; |
||||
msg35c .byt msg36c-* ; |
||||
.byt 'ZIEL-DISKETTE EINLEGEN, DANN (SPACE)' ; |
||||
msg36c .byt msg37c-* ; |
||||
.byt 'ZIEL-DISKETTE WIRD BESCHRIEBEN' ; |
||||
msg37c .byt msg38c-* ; |
||||
.byt 'FILE WIRD KOPIERT VON LAUFWERK: ' ; |
||||
msg38c .byt msg39c-* ; |
||||
.byt 'FILES WERDEN WIEDERHERGESTELLT' ; |
||||
; |
||||
; |
||||
; Third Segment: Messages Always Centered On Query/Message Line |
||||
; |
||||
msg39c .byt msg40c-* ; |
||||
.byt 'LAUFWERK NICHT BETRIEBSBEREIT: ' ; |
||||
msg40c .byt msg41c-* ; |
||||
.byt 'SCHLECHTE DISKETTE IN LAUFWERK: ' ; |
||||
msg41c .byt msg42c-* ; |
||||
.byt 'LESEFEHLER AUF DISKETTE IN LAUFWERK: ' ; |
||||
msg42c .byt msg43c-* ; |
||||
.byt 'SCHREIBFEHLER AUF DISKETTE IN LAUFW.: ' ; |
||||
msg43c .byt msg44c-* ; |
||||
.byt 'GERAET # NICHT ANGESCHLOSSEN' ; |
||||
msg44c .byt msg45c-* ; |
||||
.byt 'QUELL-LAUFWERK: ' ; |
||||
msg45c .byt msg46c-* ; |
||||
.byt 'LAUFWERK: ' ; |
||||
msg46c .byt msg47c-* ; |
||||
.byt 'LEERE DISKETTE EINLEGEN DANN (SPACE)' ; |
||||
msg47c .byt msg48c-* ; |
||||
.byt 'PROGRAMM IM SPEICHER WIRD GELOESCHT' ; |
||||
msg48c .byt msg49c-* ; |
||||
.byt 'ZUWENIG SPEICHERPLATZ FUER ALLE FILES' ; |
||||
msg49c .byt msg50c-* ; |
||||
.byt 'FEHLER! FALSCHE DISKETTE - NOCHMAL!' ; |
||||
msg50c .byt msg51c-* ; |
||||
.byt 'FEHLER! FILE-NAME DOPPELT BITTE WIDERHOLEN' ; |
||||
msg51c .byt msg52c-* ; |
||||
.byt 'WAEHLE EIN FILE MIT CURSOR / (SPACE)' ; |
||||
; |
||||
; |
||||
; Fourth Segment: Messages Centered (Minus 3) on Query/Message Line |
||||
; |
||||
msg52c .byt msg53c-* ; |
||||
.byt 'ZIEL-DISKETTE FORMATIEREN: ' ; |
||||
msg53c .byt msg54c-* ; |
||||
.byt 'ZIEL-DISKETTE VOLL! WEITERE DISK: ' ; |
||||
msg54c .byt msg55c-* ; |
||||
.byt 'DIRECTORY ALPHABETHISCH ORDNEN: ' ; |
||||
msg55c .byt msg56c-* ; |
||||
.byt 'FILE-LISTE OK ZUM KOPIEREN: ' ; |
||||
msg56c .byt msg57c-* ; |
||||
.byt 'FILE-LISTE OK ZUM LOESCHEN: ' ; |
||||
msg57c .byt msg58c-* ; |
||||
.byt 'FILE-LISTE OK ZUM WIEDERHERST: ' ; |
||||
msg58c .byt msg59c-* ; |
||||
.byt 'FILE-LISTE OK ZUM UMBENENNEN: ' ; |
||||
msg59c .byt msg60c-* ; |
||||
.byt 'DIRECTORY ZURUECKSCHREIBEN: ' ; |
||||
; |
||||
; |
||||
; Fifth Segment: Messages With X-Y Positions Passed By Caller |
||||
; |
||||
msg60c .byt msg61c-* ; |
||||
.byt 'AUSWAHL MIT CURSORSTEUERUNG DANN (SPACE)' ; |
||||
msg61c .byt msg62c-* ; |
||||
.byt 'LAUFWERK : GERAETE # = ' ; |
||||
msg62c .byt msg63c-* ; |
||||
.byt 'LAUFWERK # = ' ; |
||||
msg63c .byt msg64c-* ; |
||||
.byt 'AENDERE LAUFWERK #' ; |
||||
msg64c .byt msg00d-* ; |
||||
.byt ' DANN (SPACE) DRUECKEN' ; |
||||
; |
||||
; |
||||
; Italian Language Section - All Messages |
||||
; |
||||
; First Segment: Messages With Screen Positions Plotted From X-Y Table |
||||
; |
||||
msg00d .byt msg01d-* ; |
||||
.byt 'AVVIA DISK/PRINTER' ; |
||||
msg01d .byt msg02d-* ; |
||||
.byt 'ESEGUE PROGRAMMA ' ; |
||||
msg02d .byt msg03d-* ; |
||||
.byt 'FORMATTA DISCO ' ; |
||||
msg03d .byt msg04d-* ; |
||||
.byt 'PULIZIA DISCO ' ; |
||||
msg04d .byt msg05d-* ; |
||||
.byt 'COPIA DISCO ' ; |
||||
msg05d .byt msg06d-* ; |
||||
.byt 'COPIA FILE ' ; |
||||
msg06d .byt msg07d-* ; |
||||
.byt 'RIMUOVI FILE ' ; |
||||
msg07d .byt msg08d-* ; |
||||
.byt 'RIPRISTINA FILE ' ; |
||||
msg08d .byt msg09d-* ; |
||||
.byt 'CAMBIA NOME FILE ' ; |
||||
msg09d .byt msg10d-* ; |
||||
.byt 'RIORDINA DIRECTORY' ; |
||||
msg10d .byt msg11d-* ; |
||||
.byt 'DISCO SISTEMA UTILITY COMMODORE' ; |
||||
msg11d .byt msg12d-* ; |
||||
.byt 'PREMI SPAZIO PER SCEGLIERE LA LINGUA' ; |
||||
msg12d .byt msg13d-* ; |
||||
.byt 'ITALIANO' ; |
||||
msg13d .byt msg14d-* ; |
||||
.byt ' ',rvsoff,'F5',rvson,' PER SCARTARE / ' ; |
||||
.byt rvsoff,'STOP',rvson,' PER ANNULLARE ' ; |
||||
msg14d .byt msg15d-* ; |
||||
.byt ' DRIVE: LIB. ' ; |
||||
msg15d .byt msg16d-* ; |
||||
.byt 'UNITA',acent,' STAMPANTE # = 4 5 6 NESSUNA' ; |
||||
msg16d .byt msg17d-* ; |
||||
.byt 'ACCENDI IL DRIVE DA CAMBIARE' ; |
||||
msg17d .byt msg18d-* ; |
||||
.byt 'SPEGNI L',acent,'ALTRO DRIVE' ; |
||||
msg18d .byt msg19d-* ; |
||||
.byt 'NUOVA UNITA',acent,' # = ' ; |
||||
msg19d .byt msg20d-* ; |
||||
.byt 'FATTO... ACCENDI L',acent,'ALTRO DRIVE' ; |
||||
msg20d .byt msg21d-* ; |
||||
.byt 'INSERISCI DISCO COPIA NEL DRIVE: ' ; |
||||
msg21d .byt msg22d-* ; |
||||
.byt 'FILE GIA',acent,' ESISTENTE: ' ; |
||||
msg22d .byt msg23d-* ; |
||||
.byt 'CARICAMENTO PROG.: ' ; |
||||
msg23d .byt msg24d-* ; |
||||
.byt 'SCEGLI TIPO FILE: ' ; |
||||
msg24d .byt msg25d-* ; |
||||
.byt 'IMPOS.RIPRISTINO FILE: ' ; |
||||
msg25d .byt msg26d-* ; |
||||
.byt 'NUOVO NOME: ' ; |
||||
msg26d .byt msg27d-* ; |
||||
.byt ' BLOCCHI NOME FILE TIPO ' ; |
||||
msg27d .byt msg28d-* ; |
||||
.byt 'NOME DISCO: ' ; |
||||
; |
||||
; |
||||
; Second Segment: Messages Always Centered At Top Of File-List Window |
||||
; |
||||
msg28d .byt msg29d-* ; |
||||
.byt 'STO FORMATTANDO IL DISCO SUL DRIVE: ' ; |
||||
msg29d .byt msg30d-* ; |
||||
.byt 'PULIZIA DISCO IN FUNZIONE SUL DRIVE: ' ; |
||||
msg30d .byt msg31d-* ; |
||||
.byt 'PREMI SPAZIO PER CONTINUARE' ; |
||||
msg31d .byt msg32d-* ; |
||||
.byt 'INSERISCI DISCO ORIGINALE NEL DRIVE: ' ; |
||||
msg32d .byt msg33d-* ; |
||||
.byt 'COPIA DISCO IN FUNZIONE DAL DRIVE: ' ; |
||||
msg33d .byt msg34d-* ; |
||||
.byt 'INSERISCI DISCO ORIGINALE-PREMI SPAZIO' ; |
||||
msg34d .byt msg35d-* ; |
||||
.byt 'LETTURA DAL DISCO ORIGINALE' ; |
||||
msg35d .byt msg36d-* ; |
||||
.byt 'INSERISCI DISCO COPIA E PREMI SPAZIO' ; |
||||
msg36d .byt msg37d-* ; |
||||
.byt 'SCRITTURA SUL DISCO COPIA' ; |
||||
msg37d .byt msg38d-* ; |
||||
.byt 'COPIA FILE IN FUNZIONE DAL DRIVE: ' ; |
||||
msg38d .byt msg39d-* ; |
||||
.byt 'FILE RIPRISTINATI-RIALLOCO BLOCCHI' ; |
||||
; |
||||
; |
||||
; Third Segment: Messages Always Centered On Query/Message Line |
||||
; |
||||
msg39d .byt msg40d-* ; |
||||
.byt 'DRIVE NON PRONTO: ' ; |
||||
msg40d .byt msg41d-* ; |
||||
.byt 'ERRORE DISCO NEL DRIVE: ' ; |
||||
msg41d .byt msg42d-* ; |
||||
.byt 'ERRORE LETTURA SU DISCO NEL DRIVE: ' ; |
||||
msg42d .byt msg43d-* ; |
||||
.byt 'ERRORE SCRITTURA SU DISCO NEL DRIVE: ' ; |
||||
msg43d .byt msg44d-* ; |
||||
.byt 'UNITA',acent,' # NON PRONTA' ; |
||||
msg44d .byt msg45d-* ; |
||||
.byt 'DA QUALE DRIVE: ' ; |
||||
msg45d .byt msg46d-* ; |
||||
.byt 'UTILIZZANDO QUALE DRIVE: ' ; |
||||
msg46d .byt msg47d-* ; |
||||
.byt 'INSERIRE DISCO NUOVO E PREMERE SPAZIO' ; |
||||
msg47d .byt msg48d-* ; |
||||
.byt 'I PROGRAMMI IN MEMORIA SARANNO PERDUTI' ; |
||||
msg48d .byt msg49d-* ; |
||||
.byt 'DISO COPIA NON CONTIENE TUTTI I FILE!' ; |
||||
msg49d .byt msg50d-* ; |
||||
.byt 'ERRORE: DISCO DANNEGGIATO - RIPROVA' ; |
||||
msg50d .byt msg51d-* ; |
||||
.byt 'ERRORE: NOME FILE ESISTENTE - RIPROVA' ; |
||||
msg51d .byt msg52d-* ; |
||||
.byt 'SPOSTA FILE COL CURSORE / PREMI SPAZIO' ; |
||||
; |
||||
; |
||||
; Fourth Segment: Messages Centered (Minus 3) on Query/Message Line |
||||
; |
||||
msg52d .byt msg53d-* ; |
||||
.byt 'VUOI FORMATTARE IL DISCO COPIA: ' ; |
||||
msg53d .byt msg54d-* ; |
||||
.byt 'DISO COPIA PIENO - ALTRO DISCO: ' ; |
||||
msg54d .byt msg55d-* ; |
||||
.byt 'DIRECTORY IN ORDINE ALFABETICO: ' ; |
||||
msg55d .byt msg56d-* ; |
||||
.byt 'OK PER COPIARE LISTA FILE: ' ; |
||||
msg56d .byt msg57d-* ; |
||||
.byt 'OK PER RIMUOVERE LISTA FILE: ' ; |
||||
msg57d .byt msg58d-* ; |
||||
.byt 'OK PER RIPRISTINARE LISTA FILE: ' ; |
||||
msg58d .byt msg59d-* ; |
||||
.byt 'OK PER CAMBIARE LISTA FILE: ' ; |
||||
msg59d .byt msg60d-* ; |
||||
.byt 'OK PER RISCRIVERE LA DIRECTORY: ' ; |
||||
; |
||||
; |
||||
; Fifth Segment: Messages With X-Y Positions Passed By Caller |
||||
; |
||||
msg60d .byt msg61d-* ; |
||||
.byt ' SCEGLI COL CURSORE E POI PREMI SPAZIO ' ; |
||||
msg61d .byt msg62d-* ; |
||||
.byt 'DRIVE : UNITA',acent,' # = ' ; |
||||
msg62d .byt msg63d-* ; |
||||
.byt 'DRIVE # = ' ; |
||||
msg63d .byt msg64d-* ; |
||||
.byt 'CAMBIO UNITA',acent,' DISCO #' ; |
||||
msg64d .byt msgend-* ; |
||||
.byt ' POI PREMI SPAZIO' ; |
||||
; |
||||
msgend = * ; Marks End of Shell Message Tables |
||||
; |
Loading…
Reference in new issue