Refresh all Files

All files refreshed.  Config now shows uppercase when using a ][+

Minor bug fixes in logon.seg.s

Newer XDOS external with bug fixes
This commit is contained in:
paulhlee1967 2023-01-09 11:13:29 -08:00
parent c07cb2062b
commit caf6ddd745
95 changed files with 35993 additions and 117 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -161,7 +161,7 @@ INIT_2 LDA #0 ; reset screen
ASC '########################################' ; 1
ASC '# ACOS LOADER V2.2N # ACOS FILES #' ; 2
ASC '# COPYRIGHT 86-2019 ####################' ; 3
ASC '# Kevin Smallwood # #' ; 4
ASC '# KEVIN SMALLWOOD # #' ; 4
ASC '##################### #' ; 5
ASC '# FILENAMES # #' ; 6
ASC '##################### #' ; 7
@ -199,7 +199,7 @@ INIT_2 LDA #0 ; reset screen
LDA PREFIX+1 ; get rid of drive specifier
AND #$F
TAX
INX ; add 1 for '/'
INX ; add 1 for '/'
STX PREFIX
LDA #'/' ; put in leading slash
@ -289,7 +289,7 @@ SNAME3 LDA LNBUF-1,Y ; copy filename
DEY
BNE SNAME3
TXA ; save length
TXA ; save length
STA (TEMP),Y
JMP SNAME ; go back
@ -314,7 +314,7 @@ CHKPRG JSR MLI
JMP CHKPRG
; get a directory and look for ".s" files.
; if any exist, check to see if they have
; if any exist, check to see if they have
; been changed. If so, kill the ".c" file.
DOCHECK JSR PRSTAT
@ -403,7 +403,7 @@ RDLOOP4 LDX TEMP
LDY DRIVEA ; get length of path
TYA
TAX ; save length
TAX ; save length
MVPATH LDA DRIVEA,Y
STA FLNAME,Y ; move pathname
DEY
@ -485,7 +485,7 @@ RDLOOP4C LDX TEMP
LDY #0
LDA (TEMP),Y
TAY ; change file back to .S
TAY ; change file back to .S
LDA #'S'
STA (TEMP),Y
@ -552,7 +552,7 @@ WAIT2C LDA #1
LDY LNBUF ; get pathname length
INY
SHOW2 DEY ; count down
SHOW2 DEY ; count down
BMI SHOW3 ; they match
LDA LNBUF,Y
@ -649,7 +649,7 @@ PRSTAT LDA #2
STA $23
JSR HOME ; clear window
PR PLA ; point to string
PR PLA ; point to string
STA PRN
PLA
STA PRN+1
@ -697,7 +697,7 @@ PRWIND STX PRN ; point to filename
STA $22
LDA WNDBTM,Y
STA $23
SEC ; make into vtab
SEC ; make into vtab
SBC #1
STA $25
JSR VTAB ; vtab down
@ -725,7 +725,7 @@ WNDBTM DB 19,08,15,19
PRSTR STX PRN
STA PRN+1 ; point at string
TYA
TAX ; save length
TAX ; save length
LDY #0
PRSTR2 LDA (PRN),Y ; get data
ORA #$80
@ -741,7 +741,7 @@ MOVPATH STX TEMP ; point to buffer
STA TEMP+1
LDX #0
MOVE2 DEY ; count down
MOVE2 DEY ; count down
BMI MOVE3 ; all finished
TXA
@ -774,7 +774,7 @@ FLCOPY JSR MLI
JSR MLI ; close compiled file
DB $CC
DA P_CLOSE
FLCOPY2 RTS ; all is well
FLCOPY2 RTS ; all is well
FLCOPY1 LDX FLNAME ; change '.c' back to '.s'
LDA #'S'
@ -820,7 +820,7 @@ FLCOPY1 LDX FLNAME ; change '.c' back to '.s'
JSR MLI ; close file 2
DB $CC
DA P_CLOSE
RTS ; we are done
RTS ; we are done
; prodos parmlist

View File

@ -1 +1,52 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>
TR
TR ADR
********************************
* *
* GBBS Pro Version 2.20 *
* *
********************************
* Copyright 1986-2019 by Kevin Smallwood
LST OFF
N = 0
n = 0
Y = 1
y = 1
L_SOURCE KBD "List this assembly? (Y/N)"
DSK ACOS.OBJ
DO L_SOURCE
LST
FIN
PUT EQUATES
ORG $800
PUT DRVSPEC
PUT DRIVERS
PUT START
PUT ROUTINE
PUT VAR
PUT MATH
PUT DISK
PUT DRIVE
PUT DISKIO
PUT LOAD
PUT CMD
PUT CMD2
PUT EDIT
DS \ fill
PUT FILTER
CODEND = *
PUT INIT
DSK ENCODE
PUT ENCODE

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1,349 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 秿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> 绿绿<EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD>绿<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>绿<EFBFBD>
PAG
********************************
* *
* ACOS.OBJ - ProDOS disk I/O *
* *
********************************
DATE
*-------------------------------
CREATE STY P_CREAT+4 ;save filetype
STA P_CREAT+6
STX P_CREAT+5
JSR MLI
DB $82
DA 0
LDA MLIDATE
STA P_CREAT+8
LDA MLIDATE+1
STA P_CREAT+9
LDA MLITIME
STA P_CREAT+10
LDA MLITIME+1
STA P_CREAT+11
JSR MLI
DB $C0
DA P_CREAT
RTS
OPEN LDY #0
BFOPEN LDA BUFADR,Y ;point at buffer
STA P_OPEN+4
JSR MLI
DB $C8
DA P_OPEN
BNE :OPEN2
LDA P_OPEN+5 ;save refnum
STA REFNUM
CLC
RTS
:OPEN2 LDA #-1 ;make sure refnum is illegal
STA REFNUM
SEC
RTS
BUFADR DB >FBUF1,>FBUF2,>MSGBUF
CLOSE LDA REFNUM
STA P_CLOSE+1
JSR MLI
DB $CC
DA P_CLOSE
RTS
FLUSH LDA REFNUM
STA P_CLOSE+1
JSR MLI
DB $CD
DA P_CLOSE
RTS
*-------------------------------
* setup for single line read
*-------------------------------
RDLNSET LDA REFNUM
STA P_NEW1+1 ;save refnum
STA P_RDLN+1
JSR MLI
DB $C9
DA P_NEW1 ;enable newline
RTS
*-------------------------------
* read a line from a file
*-------------------------------
RDLINE JSR MLI
DB $CA
DA P_RDLN
BNE :RDLINE2 ;read error
LDX P_RDLN+6 ;is there a cr at end of line?
LDA LNBUF-1,X
AND #clrhi
CMP #cr
BNE :RDLINE2 ;no more stuff
CLC
RTS
:RDLINE2 LDA #0
STA LNBUF ;no data in line
SEC ;eof
RTS
*-------------------------------
* read a single byte
*-------------------------------
RDBYTE LDA REFNUM ;save refnum
BEQ :RDBYTE2
STA P_RBYT+1
JSR MLI
DB $CA
DA P_RBYT ;read 1 byte
BNE :RDBYTE2
LDA P_BYTE ;get byte
CLC ;were done
RTS
:RDBYTE2 LDA #0 ;fake data
SEC
RTS
*-------------------------------
* write a block for the msg routines
*-------------------------------
WRBLK PHA
LDA #$CB
STA RWTYPE
PLA
JMP RWBLK ;use write call
*-------------------------------
* read a block for the msg routines
*-------------------------------
RDBLK PHA
LDA #$CA
STA RWTYPE ;use read call
PLA
RWBLK STX P_RDBLK+2 ;save read address
STA P_RDBLK+3
LDA #0
STA P_RDBLK+4 ;save number of blocks to read
STY P_RDBLK+5
LSR P_RDBLK+5 ;divide by 2
ROR P_RDBLK+4
LDA REFNUM
STA P_RDBLK+1 ;get refnum
JSR MLI ;call mli
RWTYPE DB $CA ;*** modified ***
DA P_RDBLK
RTS
*-------------------------------
* write a byte of data
*-------------------------------
WRBYTE STA P_BYTE ;save data
PHA
LDA REFNUM
BEQ :WRBYTE2 ;if no refnum
STA P_RBYT+1
JSR MLI
DB $CB
DA P_RBYT ;write byte
CLC
BEQ :WRBYTE3 ;all is well
:WRBYTE2 SEC ;opps, problem
:WRBYTE3 PLA ;get back data
RTS
*-------------------------------
* position file
*-------------------------------
POSMSG LDY MSGREF
STY REFNUM ;save refnum
LSR ;setup Y,A,X w/exact byte
TAY
TXA
ROR
PHA
LDA #$10
ROR
TAX
PLA
JMP SETPOS
*-------------------------------
* find the end of file
*-------------------------------
GETEOF LDA REFNUM
STA P_MARK+1 ;save refnum
JSR MLI
DB $D1
DA P_MARK ;get eof
LDX P_MARK+2 ;get length
LDA P_MARK+3
LDY P_MARK+4
RTS
*-------------------------------
* check for end of file
*-------------------------------
CHKEOF JSR GETMARK ;get the current place
PHA
TXA
PHA
JSR GETEOF ;get the end of file
PLA
TAY
PLA
LDX #0
CPY P_MARK+2
BNE :CHKEOF2 ;are they the same?, nope
CMP P_MARK+3
BNE :CHKEOF2 ;nope
INX ;yep, mark it
:CHKEOF2 RTS
*-------------------------------
* check end of file
*-------------------------------
GETSIZ JSR GETEOF ;get the end of file
LDX P_MARK+3 ;get # of sectors
LDA P_MARK+4
RTS
*-------------------------------
* append data to file
*-------------------------------
APPEND JSR GETEOF ;get end of file
JMP SETPOS ;append
*-------------------------------
* set a mark into a file
*-------------------------------
SETMARK LDY #0 ;do actual position set within file
SETPOS STX P_MARK+2 ;point to new location
STA P_MARK+3
STY P_MARK+4
LDA REFNUM
STA P_MARK+1 ;save refnum
SETPOS2 JSR MLI
DB $CE
DA P_MARK ;set mark
CMP #$4D
BNE :SETPOS3 ;check for out-of-range
JSR MLI
DB $D0
DA P_MARK ;set eof
BEQ SETPOS2 ;position again
:SETPOS3 RTS
*-------------------------------
* get current file marker
*-------------------------------
GETMARK LDA REFNUM
STA P_MARK+1 ;save refnum
JSR MLI
DB $CF
DA P_MARK ;get mark
SEC
BNE :GETMRK2 ;opps, error
CLC
LDX P_MARK+2 ;all is well
LDA P_MARK+3
:GETMRK2 RTS
*-------------------------------
* delete file
*-------------------------------
DELFILE JSR MLI
DB $C1
DA P_DEL ;delete file
RTS
*-------------------------------
* ------ parms ------
*-------------------------------
P_OPEN DB 3
DA FLNAME
DA FBUF1
DB 0
P_CLOSE DB 1
DB 0
P_RBYT DB 4
DB 0
DA P_BYTE
DA 1
DA 0
P_BYTE DB 0
P_MARK DB 2
DB 0
DS 3
P_NEW1 DB 3
DB 0
DB clrhi
DB cr
P_RDLN DB 4
DB 0
DA LNBUF
DA 255
DA 0
P_RDBLK DB 4
DB 0
DA 0
DA 128
DA 0
P_DEL DB 1
DA FLNAME
P_CREAT DB 7
DA FLNAME
HEX E3
DB 0
DA 0
DB 1
DA 0
DA 0

View File

@ -1 +1,189 @@
паг ацособй пРОдос дРИЖЕ дате МОЖЕ ТХЕ НАМЕ ИНТО ТХЕ ФИЛЕНАМЕ ФИЕЛДможнамейсринстрГЕТ НАМЕ ДОНТ УСЕ МЕМОРЫможнмлдастрленбеяможнамлдыёстыдржцхдИНИТ ЦХАНГЕ ДРИЖЕ СТРИНГстыдржоффстыдржоффлдастрлоцыГЕТ ФИРСТ БЫТЕйсрцонжстадржнумСАЖЕ ИТ АС А ДРИЖЕ СПЕЦцмпёлбгеможнамНОТйсртстъалфбцсможнамОППС НОТ ЛЕГАЛинылдастрлоцыАРЕ ВЕ ДОНЕ©цмпёбеяможнамЁЫЕП ГЕТ ФИЛЕНАМЕйсртстънумИС ИТ А ЛЕГАЛ СУБДРИЖЕ©бцсможнамНОПЕстадржоффСАЖЕ СУБДРИЖЕ БЫТЕ инылдастрлоцыАРЕ ВЕ ДОНЕ©цмпёбеяможнамЁЫЕП ГЕТ ФИЛЕНАМЕйсртстънумИС ИТ А ЛЕГАЛ СУБДРИЖЕ©бцсможнамНОПЕстадржоффСАЖЕ СУБДРИЖЕ БЫТЕ инылдастрлоцыИС ТХЕРЕ А ТЕРМИНАТОР©цмпёбеяможнамЁЫЕП ГЕТ ФИЛЕНАМЕможнамлдыёффНО ДРИЖЕ ПАРМ ЙУСТ ГЕТ НАМЕстыдржцхдИНИТ ЦХАНГЕ ДРИЖЕ ФЛАГможнамЁинылдьёцпыстрленбеяможнамИС ТХЕРЕ АНЫ ДАТА© ХМММможнамлдастрлоцыЦОПЫ ФИЛЕНАМЕйсрцонжЦОНЖЕРТ ТО УППЕРцмпёблтможнамВЕ АРЕ ДОНЕ шАНЫТХИНГ ЛЕСС ИЛЛЕГАЛщстафлнамеьСАЖЕ НАМЕиньиныцпыстрленбеяможнамДОНЕ ЫЕТ©цпьёбнеможнамХАЖЕ ВЕ ДОНЕ ЦХАРС ТХЕ МАЬ НОПЕможнамстьфлнамеСАЖЕ ЛЕНГТХлдадржцхдЦХАНГЕ ДРИЖЕ ФИРСТ©бплсетдржЫЕПртс ЛОГ ТО ДРИЖЕ а ОФФСЕТ ьлогспецлдыёРЕСЕТ ОФФСЕТСстыдржоффстыдржоффстадржнумСАЖЕ ДРИЖЕ НУМБЕР шалщтьабеясетдржНО ОФФСЕТйсрбиндецТРАНСЛАТЕ ТО ТВОБЫТЕ НУМБЕРстьдржоффСАЖЕ ОФФСЕТцмпёбеясетдрж БЫТЕ ОФФСЕТ© ЫЕПстадржоффстьдржоффСАЖЕ ОФФСЕТсетдржлдаёдежнамПОИНТ ТО ПАТХНАМЕСстатемплдаёдежнамстатемплдадржнумТУРН ДРИЖЕ НУМ ИНТО ОФФСЕТандёфсталнбуфсетдрждецлнбуфбеясетдржЦОУНТ ДОВН ДРИЖЕСлдыёлдатемпыГЕТ ЛЕНГТХ ОФ ПАТХНАМЕсецадцтемпстатемпПОИНТ ТО НЕЬТ ЕНТРЫлдаёадцтемпстатемпймпсетдржСЕТ ДРИЖЕ НУМБЕРсетдржлдыёлдатемпыГЕТ ЛЕНГТХ ОФ СТРИНГбеяможнамПАТХНАМЕ НОТ ИН УСЕтаытаьСАЖЕ ЛЕНГТХсетдржлдатемпысталнбуфыМОЖЕ ПАТХНАМЕ ТО ЛНБУФдеыбплсетдржлдадржоффВАС ТХЕРЕ АН ОФФСЕТ©беясетдржНОПЕиньИНЦРЕАСЕЛЕНГТХсталнбуфьСАЖЕлдадржоффВАСбеясетдржНОПЕиньИНЦРЕАСЕ ЛЕНГТХсталнбуфьСАЖЕ ОФФСЕТсетдржиньлдаёсталнбуфьАДД ТО ЕНД ОФ СТРИНГстьлнбуфУПДАТЕ ЛЕНГТХйсрмлиГЕТ ЦУРРЕНТ ПРЕФИЬдбцдагетпфьлдьлнбуфАРЕ ТХЕ ЛЕНГТХС ТХЕ САМЕ©цмплнбуфбнесетдржНОПЕ ЦХАНГЕ ТО НЕВ ПРЕФИЬсетдржлдалнбуфьИС ДАТА ТХЕ САМЕ©цмплнбуфьбнесетдржНОПЕ ЦХАНГЕ ТО НЕВ ПРЕФИЬдеьбплсетдржртсТХЕЫ АРЕ ТХЕ САМЕ ЙУСТ РЕТУРНсетдржйсрмлиСЕТ ТО ТХЕ НЕВ ПРЕФИЬдбцдасетпфьбнеможнамОППС ЕРРОРртсможнамлдьёБАДДРИЖЕБАД ДРИЖЕ СПЕЦИФИЕРймпбадеррдржцхддбдржнумдбдржоффдбдржоффдбфлнамедсгетпфьдбдалнбуфсетпфьдбдалнбуф
PAG
********************************
* *
* ACOS.OBJ - ProDOS Drive *
* *
********************************
DATE
*-------------------------------
* move the name into the filename field
*-------------------------------
MOVNAME JSR INSTR2 ;get name (dont use memory)
MOVNM0 LDA STRLEN
BEQ :MOVNAM4
LDY #0
STY DRVCHD ;init change drive string
STY DRVOFF0
STY DRVOFF1
LDA (STRLOC),Y ;get first byte
JSR CONV
STA DRVNUM ;save it as a drive spec
CMP #'L'+1
BGE :MOVNAM2 not
JSR TST_ALF
BCS :MOVNAM2 ;opps, not legal
INY
LDA (STRLOC),Y ;are we done?
CMP #':'
BEQ :MOVNAM3 ;yep, get filename
JSR TST_NUM ;is it a legal sub-drive?
BCS :MOVNAM2 ;nope
STA DRVOFF0 ;save sub-drive byte 1
INY
LDA (STRLOC),Y ;are we done?
CMP #':'
BEQ :MOVNAM3 ;yep, get filename
JSR TST_NUM ;is it a legal sub-drive?
BCS :MOVNAM2 ;nope
STA DRVOFF1 ;save sub-drive byte 2
INY
LDA (STRLOC),Y ;is there a terminator?
CMP #':'
BEQ :MOVNAM3 ;yep, get filename
:MOVNAM2 LDY #$FF ;no drive parm, just get name
STY DRVCHD ;init change drive flag
:MOVNAM3 INY
LDX #0
CPY STRLEN
BEQ :MOVNAM5 ;is there any data?, hmmm
:MOVNAM4 LDA (STRLOC),Y ;copy filename
JSR CONV ;convert to upper
CMP #'.'
BLT :MOVNAM5 ;we are done [anything less, illegal]
STA FLNAME+1,X ;save name
INX
INY
CPY STRLEN
BEQ :MOVNAM5 ;done yet?
CPX #15
BNE :MOVNAM4 ;have we done 15 chars (the max), nope
:MOVNAM5 STX FLNAME ;save length
LDA DRVCHD ;change drive first?
BPL SETDRV ;yep
RTS
*-------------------------------
* log to drive A, offset X
*-------------------------------
LOGSPEC LDY #0 ;reset offsets
STY DRVOFF0
STY DRVOFF1
STA DRVNUM ;save drive number [A-L]
TXA
BEQ SETDRV ;no offset
JSR BINDEC8 ;translate to two-byte number
STX DRVOFF0 ;save offset
CMP #'0'
BEQ SETDRV ;1 byte offset?, yep
STA DRVOFF0
STX DRVOFF1 ;save offset
SETDRV LDA #<DEVNAM ;point to pathnames
STA TEMP
LDA #>DEVNAM
STA TEMP+1
LDA DRVNUM ;turn drive num into offset
AND #$F
STA LNBUF
:SETDRV0 DEC LNBUF
BEQ :SETDRV1 ;count down drives
LDY #0
LDA (TEMP),Y ;get length of pathname
SEC
ADC TEMP
STA TEMP ;point to next entry
LDA #0
ADC TEMP+1
STA TEMP+1
JMP :SETDRV0 ;set drive number
:SETDRV1 LDY #0
LDA (TEMP),Y ;get length of string
BEQ :MOVNAM7 ;pathname not in use
TAY
TAX ;save length
:SETDRV2 LDA (TEMP),Y
STA LNBUF,Y ;move pathname to lnbuf
DEY
BPL :SETDRV2
LDA DRVOFF0 ;was there an offset?
BEQ :SETDRV4 nope
INX increase length
STA LNBUF,X save
LDA DRVOFF1 was
BEQ :SETDRV4 ;nope
INX ;increase length
STA LNBUF,X ;save offset
:SETDRV4 INX
LDA #'/'
STA LNBUF,X ;add '/' to end of string
STX LNBUF ;update length
JSR MLI ;get current prefix
DB $C7
DA GETPFX
LDX LNBUF ;are the length's the same?
CMP LNBUF+64
BNE :SETDRV6 ;nope, change to new prefix
:SETDRV5 LDA LNBUF,X ;is data the same?
CMP LNBUF+64,X
BNE :SETDRV6 ;nope, change to new prefix
DEX
BPL :SETDRV5
RTS ;they are the same, just return
:SETDRV6 JSR MLI ;set to the new prefix
DB $C6
DA SETPFX
BNE :MOVNAM7 ;opps, error
RTS
:MOVNAM7 LDX #baddrive ;bad drive specifier
JMP BADERR
DRVCHD DB 0
DRVNUM DB 0
DRVOFF0 DB 0
DRVOFF1 DB 0
FLNAME DS 16
GETPFX DB 1
DA LNBUF+64
SETPFX DB 1
DA LNBUF

View File

@ -1 +1,65 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*-------------------------------
* CONSOLE
*-------------------------------
VIDINIT JMP 0
VIDCLS JMP 0
VIDCOUT JMP 0
VIDSCRL JMP 0
VIDBAN JMP 0
VIDLST JMP 0
VIDRDST JMP 0
VIDRDKY JMP 0
VIDRDFN JMP 0
VIDWND JMP 0
VIDRD JMP 0
VIDKEY JMP 0
VIDPOS JMP 0
VIDCHAT JMP 0
DS $300-*+VIDINIT
*-------------------------------
* PRINTER
*-------------------------------
PRSLOT DB 0
PRINIT JMP 0
PRCOUT JMP 0
PRCLEAR JMP 0
DS \
*-------------------------------
* CLOCK
*-------------------------------
CLKSLOT DB 0
CLKMODE DB 0
GETDATE JMP 0
GETTIME JMP 0
SETDATE JMP 0
DS \
*-------------------------------
* MODEM
*-------------------------------
MDMSLOT DB 0
MDMEXTRA DB 0
SPCINIT DB 0
BYTCNT DS 3
MDMINIT JMP 0
MDMRSET JMP 0
MDMRING JMP 0
MDMANS JMP 0
MDMHANG JMP 0
MDMIN JMP 0
MDMOUT JMP 0
MDMDCD JMP 0
MDMSPD JMP 0
MDMINT JMP 0
MDMDTR JMP 0
MDMCBUF JMP 0
MDMQUIT JMP 0
DS $400-*+MDMSLOT

File diff suppressed because one or more lines are too long

View File

@ -1 +1,37 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PAG
********************************
* *
* ACOS.OBJ - Copyright Encode *
* *
********************************
ORG $300
COPCODE LDA #<COPNOT
STA TEMP
LDA #>COPNOT
STA TEMP+1
LDY #COPEND-COPNOT
DEY
:LOOP LDA (TEMP),Y
ROL A
EOR #COPEND-COPNOT
STA (TEMP),Y
DEY
BPL :LOOP
LDA #<SERNUM
STA TEMP
LDA #>SERNUM
STA TEMP+1
LDY #SEREND-SERNUM
DEY
:LOOP2 LDA (TEMP),Y
ROL A
EOR #SEREND-SERNUM
STA (TEMP),Y
DEY
BPL :LOOP2
RTS

View File

@ -1 +1,23 @@
паг ацособй пРОФАНИТЫ фИЛТЕР датефилтердцифуцкдцисхитдцидамндциассхоледцицоцкдцисуцкдциприцкдбдбЦРасцгббс пРО ж ц БЫ кЕЖИН м сМАЛЛВООД д асц гббс пРО ж ц БЫ лл пРОДУЦТИОНС иНЦд асц гббс пРО ж ц БЫ л л пРОДУЦТИОНСд асц лАНЦЕ тАЫЛОРвАРРЕН ФИЬЕС БЫ авЕЛЛС лрОАТХЕддсэ
PAG
********************************
* *
* ACOS.OBJ - Profanity Filter *
* *
********************************
DATE
*-------------------------------
FILTER DCI 'FUCK'
DCI 'SHIT'
DCI 'DAMN'
DCI 'ASSHOLE'
DCI 'COCK'
DCI 'SUCK'
DCI 'PRICK'
DB 00
DB cr
ASC 'GBBS Pro V:2.20 (C) 1986-2019 by Kevin M. Smallwood '0D
* ASC 'GBBS Pro V:2.20 (C) 1986-1989 by L&L Productions, Inc.'0D
* ASC 'GBBS Pro V:1.4 (C) 1986-1989 by L & L Productions'0D
* ASC 'Lance Taylor-Warren, fixes by A.Wells & L.Roathe'0D00
DS \

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1,337 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>线<EFBFBD> <EFBFBD> <EFBFBD> 线 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 线<EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>线线<EFBFBD> <EFBFBD>线 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>线 <EFBFBD> 线 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>秿线 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 线<EFBFBD> <EFBFBD> 线 <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>线<EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 线 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> п<EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>у<EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>绿绿<EFBFBD><EFBFBD> <EFBFBD>
PAG
********************************
* *
* ACOS.OBJ - Math *
* *
********************************
DATE
*-------------------------------
DO_PLUS LDA NUMB+1 ;save old number
PHA
LDA NUMB
PHA
JSR INPMATH ;get next part
CLC
PLA
ADC NUMB ;do add
TAX
PLA
ADC NUMB+1
JMP DO_MATH ;finish up
DO_SUB LDA NUMB+1 ;save initial value
PHA
LDA NUMB
PHA
JSR INPMATH ;get other amount
SEC
PLA
SBC NUMB ;do actual subtraction
TAX
PLA
SBC NUMB+1
DO_MATH STX DATA+1 ;save result
STA DATA+2
LDY #1
STY DATA ;set data type 1
RTS
*-------------------------------
* do multiply
*-------------------------------
DO_MULT JSR DO_MLDV ;command mult/divd
JSR DO_MUL0 ;do multiply
*-------------------------------
* finish up routine for signed operands
*-------------------------------
DO_MLD2 LDX RESULT
LDA RESULT+1
BPL :DO_MLD3
LDX #num2big
JMP BADERR ;overflow > 32767
:DO_MLD3 BIT SIGN
BPL DO_MATH
JSR NEGXA
JMP DO_MATH
DO_MLDV JSR GETNUMB ;get first number
STA SIGN ;save this sign
JSR DO_ABS1 ;make it positive
STX DATA+1 ;save it
STA DATA+2
JSR INPNUM0 ;get next number
EOR SIGN ;make into result sign
STA SIGN
LDA NUMB+1 ;get this sign
JSR DO_ABS1 ;make this positive too
STX NUMB ;save it
STA NUMB+1
RTS
*-------------------------------
* actual multiply routine
*-------------------------------
DO_MUL0 LDA #0
STA RESULT
STA RESULT+1
STA RESULT+2
STA DATA+3
LDX #16
:DO_MUL1 LSR NUMB+1
ROR NUMB ;put bit 0 into carry
BCC :DO_MUL2
CLC
LDA DATA+1
ADC RESULT
STA RESULT ;add in multiplyer
LDA DATA+2
ADC RESULT+1
STA RESULT+1 ;add in multiplyer
LDA DATA+3
ADC RESULT+2
STA RESULT+2
:DO_MUL2 ASL DATA+1 ;multiply all 16 bits
ROL DATA+2
ROL DATA+3
DEX
BNE :DO_MUL1
RTS
*-------------------------------
* divide routine
*-------------------------------
DO_DIVD JSR DO_DIV1 ;do divide
JMP DO_MLD2
DO_MOD JSR DO_DIV1 ;do divide
LDA REMAIN ;get remainder
STA RESULT
LDA REMAIN+1
STA RESULT+1
JMP DO_MLD2 ;finish up
DO_DIV1 JSR DO_MLDV
LDA NUMB
ORA NUMB+1
BEQ :DO_DIV5
LDA #0
STA REMAIN ;clear remainder
STA REMAIN+1
CLC
LDX #16
:DO_DIV2 ROL DATA+1 ;shift up the carry bit
ROL DATA+2
ROL REMAIN
ROL REMAIN+1
SEC
LDA REMAIN ;check for remainder > divisor
SBC NUMB
TAY
LDA REMAIN+1
SBC NUMB+1
BCC :DO_DIV3 ;nope, skip subtract
STY REMAIN ;allow subtract to take place
STA REMAIN+1
:DO_DIV3 DEX
BNE :DO_DIV2
ROL DATA+1 ;shift in quotent
ROL DATA+2
LDA DATA+1
STA RESULT
LDA DATA+2
STA RESULT+1
RTS
:DO_DIV5 LDX #divby0 ;division by zero
JMP BADERR
*-------------------------------
* absolute value
*-------------------------------
DO_ABS JSR INPARG
JSR GETNUMB ;get number
JSR DO_ABS1 ;get abs
JMP DO_MATH ;finish up
DO_ABS1 CMP #0
BPL DO_ABS2 ;if it is already ok
NEGXA PHA
TXA
EOR #-1
TAX ;make positive
PLA
EOR #-1
INX
BNE DO_ABS2 ;and add 1
CLC
ADC #1
DO_ABS2 RTS
*-------------------------------
* ----- compare routines -------
*-------------------------------
CP_EQ JSR CP_ST ;compare for equal
JSR CMPEQ
JMP CP_END
CP_NOT JSR CP_ST ;compare if not equal
JSR CMPEQ ;just inverse compare equal
JSR INVERT
JMP CP_END
CP_LT JSR CP_ST ;compare if less than
JSR CP_LTGT
JSR CMPLT
JMP CP_END
CP_GT JSR CP_ST ;compare if greater than
JSR CP_LTGT
JSR CMPGT
JMP CP_END
CP_LTEQ JSR CP_ST ;compare if less than or equal
JSR CP_LTGT
JSR CMPGT ;just inverse compare greater than
JSR INVERT
JMP CP_END
CP_GTEQ JSR CP_ST ;compare if greater than or equal
JSR CP_LTGT
JSR CMPLT ;just inverse compare less than
JSR INVERT
JMP CP_END
CP_AND JSR CP_ST ;'and' 2 numbers
LDA NUMB
AND DATA+1
TAX
LDA NUMB+1
AND DATA+2
JMP CP_END
CP_OR JSR CP_ST ;'or' 2 numbers
LDA NUMB
ORA DATA+1
TAX
LDA NUMB+1
ORA DATA+2
JMP CP_END
CP_EOR JSR CP_ST ;'eor' 2 numbers
LDA NUMB
EOR DATA+1
TAX
LDA NUMB+1
EOR DATA+2
JMP CP_END
CP_ST LDA NUMB ;compare start
PHA
LDA NUMB+1 ;just save stuff
PHA
JSR INPMATH
PLA
STA DATA+2
PLA
STA DATA+1
RTS
CP_LTGT LDA DATA+2
EOR #hibit ;invert sign bits of numbers
STA DATA+2
LDA NUMB+1
EOR #hibit
STA NUMB+1
RTS
CP_END STX DATA+1
STA DATA+2 ;save result
LDY #1
STY DATA
RTS
*-------------------------------
* ----- logic operations -------
*-------------------------------
CMPEQ LDX #0
LDA NUMB
CMP DATA+1
BNE :CMPEQ0
LDA NUMB+1
CMP DATA+2
BNE :CMPEQ0
INX
:CMPEQ0 LDA #0
RTS
CMPLT LDX #0
LDA NUMB+1
CMP DATA+2
BLT :CMPLT0
BNE :CMPLT1
LDA NUMB
CMP DATA+1
BEQ :CMPLT0
BLT :CMPLT0
:CMPLT1 INX
:CMPLT0 LDA #0
RTS
CMPGT LDX #0
LDA DATA+2
CMP NUMB+1
BLT :CMPGT0
BNE :CMPGT1
LDA DATA+1
CMP NUMB
BEQ :CMPGT0
BLT :CMPGT0
:CMPGT1 INX
:CMPGT0 LDA #0
RTS
INVERT PHA ;change bit 0
TXA
EOR #1
TAX
PLA
RTS

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1,52 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>
TR
TR ADR
********************************
* *
* GBBS Pro Version 2.20 *
* *
********************************
* Copyright 1986-2019 Kevin Smallwood
LST OFF
N = 0
n = 0
Y = 1
y = 1
L_SOURCE KBD "List this assembly? (Y/N)"
DSK ACOS.OBJ.a
DO L_SOURCE
LST
FIN
PUT EQUATES
ORG $800
PUT DRVSPEC
PUT DRIVERS
PUT START
PUT ROUTINE
PUT VAR
PUT MATH
PUT DISK
PUT DRIVE
PUT DISKIO
PUT LOAD
PUT CMD
PUT CMD2a
PUT EDIT
DS \ fill
PUT FILTER
CODEND = *
PUT INITa
DSK ENCODE
PUT ENCODE

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1,57 @@
ΝΜΙ ½ ¤ΒΖ°°<EFBFBD><EFBFBD>εαδίΒμλ ½ ¤Έ°<EFBFBD>ΑΤΓαμμ ½ ¤΄² »αππμεταμλ ΝΜΙ γαμμ<EFBFBD>ΞοδεΣαφε ½ ¤ΔΕ »μογατιοξ το πασσ ξοδε £ το ΑΓΟΣ<EFBFBD>Πςεζιψ ½ ¤γ<EFBFBD>ΜαστΔεφ ½ ¤ΒΖ³°<EFBFBD><EFBFBD>ιξιτ ΜΔΑ ΜαστΔεφ »ηετ τθε δεφιγε χε κυστ μαυγθεδ ζςον<EFBFBD> ΣΤΑ ΥξιτΞυν »σαφε ιτ<EFBFBD><EFBFBD> ΚΣ<EFBFBD> ΝΜΙ »δο α βμογλ ςεαδ ¨ιξφαμιδ υξδες ΑππμεΤαμλ©<EFBFBD> ΔΒ <EFBFBD>εαδίΒμλ<EFBFBD> ΔΑ ςίβμογλ<EFBFBD><EFBFBD> ΓΝΠ £¤ΈΈ<EFBFBD> ΒΞΕ ιξιτί° »διδ ξοτ βοοτ οζζ σεςφες<EFBFBD><EFBFBD> ΚΣ<EFBFBD> ΝΜΙ »ηετ τθε υσες διςεγτοςω®®®<EFBFBD> ΔΒ ΑΤΓαμμ<EFBFBD> ΔΑ ΖΙΥσεςΠΖΨ<EFBFBD><EFBFBD> ΜΔΨ γοπωβυζ<EFBFBD> ΒΕΡ ιξιτί° »ξο υσες διςεγτοςω ζουξδ<EFBFBD><EFBFBD> ΔΕΨ<EFBFBD> ΜΔΑ γοπωβυζ¬ψ<EFBFBD> ΑΞΔ £¤°Ζ »στςιπ οζ τθε ¤γψ παςτ οζ τθε ΑΣΓΙΙ εριφ®<EFBFBD> ΣΤΑ ΞοδεΣαφε<EFBFBD><EFBFBD> ΙΞΓ ςίζιμε »λιγλ ζιμε μεξητθ υπ α βωτε<EFBFBD> ΜΔΨ ςίζιμε »μεξητθ οζ αγοσ®οβκ<EFBFBD> ΜΔΑ ΞοδεΣαφε<EFBFBD> Ο<EFBFBD>Α £¤γ° »ναλε ιτ αξ ασγιι £<EFBFBD> ΣΤΑ ςίζιμε¬ψ<EFBFBD><EFBFBD>ιξιτί° <EFBFBD>ΤΣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ςίζιμε ΣΤ<EFBFBD> §ΑΓΟΣ®ΟΒΚ§<EFBFBD> ΔΣ ²<EFBFBD><EFBFBD>ςίβμογλ ΔΒ ³<EFBFBD>ΥξιτΞυν ΔΣ ±<EFBFBD> ΔΑ γοπωβυ櫤²°°<EFBFBD> ΔΑ °<EFBFBD><EFBFBD>ΖΙΥσεςΠΖΨ ΔΒ ¤°° »Σωξγθςοξουσ Οξμω<EFBFBD> ΔΒ ¤²Α »Γονναξδ<EFBFBD><EFBFBD>εσυμτ ΔΧ ¤° »<EFBFBD>εσυμτ Γοδε<EFBFBD> ΔΒ ¤°° »<EFBFBD>εσεςφεδ<EFBFBD> ΑΔ<EFBFBD>Μ γοπωβυζ »ποιξτες το Πατθξανε<EFBFBD><EFBFBD> δσ ά<EFBFBD>γοπωβυζ<EFBFBD><EFBFBD><EFBFBD>
MLI = $BF00
Read_Blk = $80
ATCall = $42 ;appletalk MLI call
NodeSave = $DE ;location to pass node # to ACOS
Prefix = $c6
LastDev = $BF30
init LDA LastDev ;get the device we just lauched from
STA UnitNum ;save it
JSR MLI ;do a block read (invalid under AppleTalk)
DB Read_Blk
DA r_block
CMP #$88
BNE init_0 ;did not boot off server
JSR MLI ;get the user directory...
DB ATCall
DA FIUserPFX
LDX copybuf
BEQ init_0 ;no user directory found
DEX
LDA copybuf,x
AND #$0F ;strip of the $cx part of the ASCII eqiv.
STA NodeSave
INC r_file ;kick file length up a byte
LDX r_file ;length of acos.obj
LDA NodeSave
ORA #$c0 ;make it an ascii #
STA r_file,x
init_0 RTS
r_file STR 'ACOS.OBJ'
DS 2
r_block DB 3
UnitNum DS 1
DA copybuf+$200
DA 0
FIUserPFX DB $00 ;Synchronous Only
DB $2A ;Command
Result DW $0 ;Result Code
DB $00 ;Reserved
ADRL copybuf ;pointer to Pathname
ds \
copybuf

File diff suppressed because one or more lines are too long

View File

@ -1 +1,267 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>   <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>绿<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 绿<EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 耀<EFBFBD> <EFBFBD> <EFBFBD> ъК <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 线 <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 绿<EFBFBD> 线<EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> 耀<EFBFBD> <EFBFBD> <EFBFBD> 耀<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> И<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD>
PAG
********************************
* *
* ACOS.OBJ - Start *
* *
********************************
DATE
*-------------------------------
;FATAL SEI
FATAL JSR MDMINIT
FATAL1 JSR VIDINIT
JSR PRINIT
STA KBDSTRB
; SEI
JSR CLRBUF
LDA LORESMD ;** it makes things work !! **
LDA SETRAM ;select ram card
LDA SETRAM
LDX #0
STX REMOTE
STX DOCHAT ;turn off chat
STX INCHAT
STX TIMEON
STX TIMEON+1
STX LOGOFF
STX MSGREF
STX LSTTXT
STX GSBLVL
STX FORLVL
STX ANU_ON
DEX
STX PWHIDE
LDA #$60
STA USERVEC ;put RTS in modem-user-routine
LDA #4
STA REFNUM ;close all files
:FATAL2 JSR CLOSE
DEC REFNUM
BPL :FATAL2
LDA #1
LDX #23
:FATAL3 STA BITMAP,X ;move 1 - 000 pattern
LDA #0 ;and free up memory
DEX
BNE :FATAL3
LDA #$CF
STA BITMAP ;protect bottom pages
LDY #10 ;reset device table
:FATAL4 LDA DEVTBL,Y
STA DEVUSE,Y
DEY
BPL :FATAL4
LDA #<RESET ;set up reset vector
STA RESETVEC
LDA #>RESET
STA RESETVEC+1
EOR #$A5 ;get power-up byte
STA SOFTEV
RTS
FATAL5 LDX #15
:STARTUP LDA BBS_PRG,X ;copy default filename
JSR CONV ;convert to upper case
STA FLNAME,X
DEX
BPL :STARTUP
FATAL6 LDA #'A'
LDX #0
JSR LOGSPEC ;log to A:
JSR LD_MOD ;load module
JSR CLEAR
RUNMOD1 LDA #<CODEND ;point at program
STA PRGPTR
LDA #>CODEND
STA PRGPTR+1
LDX #$FF ;set up stack
TXS
RUNMOD2 JSR CHKBYT ;get token
CMP #end
BLT :RUNMOD3 ;if 'let', don't get byte
JSR GETBYT ;gobble
CMP #0
BMI SYNTAX ;special character? Y = error
:RUNMOD3 STA CMD ;save cmd
SEC ;mark as command
JSR EX_TOK ;execute it
BIT LOGOFF ;drop user?
BPL RUNMOD2 ;nope
JSR DO_CL3 ;close all open files
LDA NOCDVEC ;point to no cd routine
STA PRGPTR
LDA NOCDVEC+1
STA PRGPTR+1
LDA #0
STA NOCDFLG ;reset cd flag
STA LOGOFF
JMP RUNMOD2 ;keep going
RESET INC SOFTEV ;make sure next reset reboots
LDA #0
STA SHWTRC ;clear trace mode
STA AUTORST ;disable auto reset
JMP RESTART1
*-------------------------------
* enter error dispatch routines
*-------------------------------
SYNTAX LDX #syntax ;syntax error
BNE BADERR
NOLBLDEF LDX #nolabel ;undefined label
BNE BADERR
DO_END LDX #endprog ;end of program
BADERR STX ERRNO ;save error #
BIT ONERRFLG
BPL :KILLIT
LDA PRGPTR ;save where error occurred
STA FROMERR
LDA PRGPTR+1
STA FROMERR+1
LDA ONERRVEC ;point to error handler routine
STA PRGPTR
LDA ONERRVEC+1
STA PRGPTR+1
LDA #0
STA ONERRFLG ;reset onerr flag
JMP RUNMOD2
:KILLIT JSR ERROR ;show error
RESTART1 LDA SETRAM ;select ram card
LDA SETRAM
LDA #0
STA REMOTE ;turn off remote
JSR MDM1_2 ;hang up modem
JSR PR
ASC "*** RESTART: S,M,Q ?"00
LDA #0
STA TEMP ;start restart timeout
STA TEMP+1
LDA #-10
STA TEMP2
:REST2 LDA AUTORST ;auto-restart?
BEQ :REST2A ;nope
INC TEMP
BNE :REST2A
INC TEMP+1 ;do low/med counter
BNE :REST2A
INC TEMP2
BNE :REST2A
DEC AUTORST ;countdown auto-restart count
JMP REST3 ;restart system
:REST2A JSR GET ;get input
JSR CONV ;make upper case
CMP #'S'
BEQ REST3 ;restart system
CMP #'M'
BEQ REST4 ;restart module
CMP #'*'
BEQ REST5 ;goto monitor
CMP #'Q'
BNE :REST2 ;quit
JSR MDMQUIT ;reset the modem before quiting
LDA #$FF
STA INVFLG ;reset inverse flag
JSR MLI
DB $65
DA P_QUIT
REST3 LDA #3 ;reset auto-restart byte
STA AUTORST
JSR FATAL ;cold start
JMP FATAL5
REST4 JMP RUNMOD1 ;warm start
REST5 LDA SETROM ;enable rom
JMP ENTRMON
*-------------------------------
* handle an incoming irq (and fix it)
*-------------------------------
IRQ_FIX STA IRQ_A
PLA
PHA
AND #%00010000
BNE :BRKD
LDA IRQ_A
PHA
TXA
PHA
TYA
PHA
LDA #'I'-ctrl
STA TOPRIGHT
JSR MDMIN
JSR MDMIN
PLA
TAY
PLA
TAX
PLA
RTI
:BRKD STA SETROM
JMP (IRQVECT)
* save buffers & variables
BBS_PRG STR 'LOGON.SEG' ;main segment name
DS 16-*+BBS_PRG,$20
P_QUIT DB 4
DS 6
AUTORST DB 3 ;allow auto-restart 3 times
IRQ_A DB 0

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1,145 @@
РЕЦОНФИГУРЕ ЦЛОЦКСГСЦЛОЦКЕЬТГС ЦЛОЦК ДРИЖЕРСЕРИАЛПРОЕЬТСЕРИАЛПРО ДРИЖЕРТХУНДЕРЕЬТТХУНДЕРЦЛОЦКТИМЕМАСТЕР ДРИЖЕРИИЦСЫСЕЬТИИЦ СЫСТЕМ ЦЛОЦКМОУНТАИНЕЬТМОУНТАИН ЦЛОЦКПРОДОСЕЬТСТАНДАРД ПРОДОС СТУФФНУЛЛЦЛКЕЬТНО ЦЛОЦКНОСЛОТЕЬТНО СЛОТ ЦЛОЦКЖЕРСАЕЬТПРОМЕТХЕУС ЖЕРСАЦАРДУЛТРАЕЬТУЛТРА ЦЛОЦК ДРИЖЕРРЕъЦЛКЙСРтОПбОЬЙСРПРИНТДБЁАСЦ рЕЦОНФИГУРЕ цЛОЦК ЙСРЦЛС СЕЦ РЕМОЖЕ АСТЕРИКС ТО МАКЕ ииГС ЙСР ФЕФ ЦЛОЦК СЕЛФИНСТАЛЛИНГ БЦС ииЕцЛК ЙМП ГСЦЛКииЕцЛКЙСРПРИНТДБАСЦ тХУНДЕРЦЛОЦК цОМПАТИБЛЕДАСЦ ае тИМЕМАСТЕР ии хоДАСЦ Ё ае сЕРИАЛ пРОДАСЦ ае уЛТРА цЛОЦКДАСЦ ае Ц сЫСТЕМ цЛОЦКДАСЦ смт нОсЛОТ цЛОЦКДАСЦ пРОдос цОМПАТИБЛЕ цЛОЦКДАСЦ мОУНТАИН хАРДВАРЕ цЛОЦКДАСЦ пРОМЕТХЕУС жЕРСАЦАРДДАСЦ ииГС бУИЛТИН цЛОЦКДАСЦ нО цЛОЦК ИН сЫСТЕМДДАСЦвХИЦХ© шщ ЛДЬёЙСРИНПНУМПХААСЛАТАЬЛДАЦЛКТАБЛЕЬСТАПОИНТИНЬЛДАЦЛКТАБЛЕЬСТАПОИНТПЛАЦМПёУЛТРАБЕЯНОСЛОТЦМПёНО СЛОТ ЦЛОЦКБЕЯНОСЛОТЦМПёПРОДОС ЦОМПАТАБЛЕБЕЯНОСЛОТЦМПёИИГС БУИЛТ ИНБЕЯНОСЛОТЦМПёНО ЦЛОЦКБЕЯНОСЛОТЙСРПРИНТДБАСЦвХИЦХ СЛОТПОРТ ДОЕС ТХЕ ЦЛОЦК УСЕ©ДАСЦшщ ЛДЬё ГЕТ СЛОТЙСРИНПНУМАСЛААСЛААСЛААСЛАНОСЛОТПХАСАЖЕ СЛОТЙСРЦЛСЙСРПРИНТДБАСЦвХАТ ТИМЕ ФОРМАТ ДО ЫОУ ВАНТ©ДДАСЦ ХОУРДАСЦ ХОУРДДАСЦвХИЦХ© шщ ЛДЬё ГЕТ МОДЕЙСРИНПНУМЛДЬёЦМПёБЕЯХРЛДЬёХРТЬАПУТ МОДЕ ИН АЦЦУМПХАСАЖЕ МОДЕЛДЫёМОЖЕ ТХЕ СИНГЛЕ ПАГЕЛООПЛДАПОИНТЫСОУРЦЕСТАЦЛКДРЖЫДЕСТИНАТИОНИНЫБНЕЛООППЛАГЕТ ТХЕ МОДЕ БАЦКСТАЦЛКДРЖПЛАГЕТ ТХЕ СЛОТ БАЦКСТАЦЛКДРЖЙСРЦХИНИТ ЦХЕЦК ФОР ИНИТЙМПВРТЦХГ ВРИТЕ ТХЕ ЦХАНГЕСЦЛКТАБЛЕДВДАТХУНДЕРДАТХУНДЕРДАСЕРИАЛПРОДАУЛТРАДАИИЦСЫСДАНОСЛОТДАПРОДОСДАМОУНТАИНДАЖЕРСАДАГСЦЛОЦКДАНУЛЛЦЛК ииГС ЦЛОЦК ИС ИНСТАЛЛЕД БЫ ИТСЕЛФГСЦЛКЙСРПРИНТДБАСЦииГС цЛОЦК ИНСТАЛЛЕД АУТОМАТИЦАЛЛЫЙСРГЕТЦРЛДЫёЛООПЛДАГСЦЛОЦКЫСТАЦЛКДРЖЫИНЫБНЕЛООПЙСРЦХИНИТЙМПВРТЦХГ
*-------------------------------
* reconfigure clocks
*-------------------------------
gsclock ext ;gs clock driver
serialpro ext ;serialpro driver
thunder ext ;thunderclock/timemaster driver
iicsys ext ;iic system clock
mountain ext ;mountain clock
prodos ext ;standard prodos stuff
nullclk ext ;no clock
noslot ext ;no slot clock
versa ext ;prometheus versacard
ultra ext ;ultra clock driver
re_clk jsr TopBox
jsr print
db 1,3,10
asc '- Reconfigure Clock -',00
jsr cls
* sec ;remove asteriks to make IIgs
* jsr $fe1f ;clock self-installing
* bcs IIeClk
* jmp gsclk
IIeClk jsr print
db 1,7,0
asc ' 1 - Thunderclock Compatible',0d
asc ' 2 - A.E. Timemaster II H.O.',0d
asc ' 3 - A.E. Serial Pro',0d
asc ' 4 - A.E. Ultra Clock',0d
asc ' 5 - A.E. //c System Clock',0d
asc ' 6 - SMT No-Slot Clock',0d
asc ' 7 - ProDOS Compatible Clock',0d
asc ' 8 - Mountain Hardware Clock',0d
asc ' 9 - Prometheus Versacard',0d
asc '10 - IIgs Built-in Clock',0d
asc '11 - No Clock in System',0d,0d
asc 'Which? [1-11] ',00
ldx #11
jsr inpnum
pha
asl a
tax
lda :clktable,x
sta point0
inx
lda :clktable,x
sta point0+1
pla
cmp #4 ;ultra
beq :noslot
cmp #6 ;no slot clock
beq :noslot
cmp #7 ;prodos compatable
beq :noslot
cmp #10 ;iigs built in
beq :noslot
cmp #11 ;no clock
beq :noslot
jsr print
db 1,21,0
asc 'Which slot/port does the clock use?'0d
asc '[1-7] '00
ldx #7 ; get slot
jsr inpnum
asl a
asl a
asl a
asl a
:noslot pha ;save slot
jsr cls
jsr print
db 1,7,0
asc 'What time format do you want?',0d,0d
asc ' 1 - 12 hour',0d
asc ' 2 - 24 hour',0d,0d
asc 'Which? [1-2]: ',00
ldx #2 ; get mode
jsr inpnum
ldx #$80
cmp #1
beq :24hr
ldx #$00
:24hr txa ;put mode in accum.
pha ;save mode
ldy #0 ;move the single page
:loop lda (point0),y ;source
sta clkdrv,y ;destination
iny
bne :loop
pla ;get the mode back
sta clkdrv+1
pla ;get the slot back
sta clkdrv
jsr chinit ; check for init
jmp wrtchg ; write the changes
:clktable dw 0
da thunder
da thunder
da serialpro
da ultra
da iicsys
da noslot
da prodos
da mountain
da versa
da gsclock
da nullclk
*-------------------------------
* IIgs clock is installed by itself
gsclk jsr print
db 1,7,0
asc 'IIgs Clock installed automatically...',00
jsr getcr
ldy #0
:loop lda gsclock,y
sta clkdrv,y
iny
bne :loop
jsr chinit
jmp wrtchg

View File

@ -1 +1,202 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>Ш<EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD>Я<EFBFBD><EFBFBD><EFBFBD>О<EFBFBD><EFBFBD><EFBFBD><EFBFBD>О<EFBFBD> <EFBFBD>О<EFBFBD> <EFBFBD>
*-------------------------------
* //c System Clock - 24 hr
*-------------------------------
* Revised Date: 08/02/87
*-------------------------------
lst off
xc
rel
dsk rel/iicsys
iicsys ent
org $0d00
lnbuf equ $200
ZBUF EQU $41
PTR EQU $42
stat1 equ $c099
comm1 equ $c09a
stat2 equ $c0a9
comm2 equ $c0aa
bytcnt equ $0e03
nullptr equ $0a
mli equ $bf00
date equ $bf90
time equ $bf92
get_time equ $82
slot hex 20
mode db 0
bra getdate
timer db 00
jmp gettime
rts ; jmp setdate
* get the date in prodos gbbs format
*-------------------------------
getdate jsr mli ; mli call
db get_time ; get_time
hex 0000 ; no pramater table
ldx date
lda date+1
setdate rts
* get the current time
*-------------------------------
gettime jsr rdtime
bit mode
bpl gtime1
jsr convert
gtime1 ldx #<timestr ; point to string
lda #>timestr
rts
* read time from clock
*-------------------------------
rdtime lda #64 ; read the date and time from clock
init1_1 pha
init1_2 sbc #1
bne init1_2
pla
sbc #1 ; give plenty of setup delay
bne init1_1
php
sei
init1_3 lda comm1 ; get current setting
pha
ldy #3
ldx #22
lda #8
init2 sta comm1 ; send init sequence to clock
init2_1 dex ; intra-bit delay
bne init2_1
eor #$0a ; toggle back and forth
ldx #11
dey
bne init2 ; keep looping
ldy #4
ldx #8
bne init3_2 ; skip initial delay
init3 lda #$34
sta timer ; delay while clock sets up
init3_1 dec timer ; to send the date/time
bne init3_1
init3_2 lda stat1 ; shift bit data into nibble
rol
rol
rol
ror datestr
dex
bne init3 ; go back to delay
lda datestr
eor #0 ; save the nibble
sta datestr,y
ldx #8
dey
bpl init3
pla
init3_3 sta comm1 ; retore uart to initial settings
ldy #15
ldx #4
init4 lda datestr,x
pha
and #$0f ; process digit (make into ascii)
ora #$30
sta datestr,y
dey
pla
lsr
lsr
lsr ; process top of nibble
lsr
ora #$30 ; turn into ascii
sta datestr,y
dey
dey
dex
bpl init4
plp
lda #':'
sta timestr+2 ; put time dividers in
sta timestr+5
ldx #<timestr ; point to string
lda #>timestr
rts
* convert time to 12hr format
*----------------------------
convert lda timestr ;convert to 12 hour
ldx timestr+1
and #$0f
tay
txa
and #$0f
dey
bmi conv2
clc
adc #10
dey
bmi conv2
adc #10
conv2 cmp #12
bne conv2a
lda #24
conv2a tay
bne conv3
lda #12
conv3 ldx #'A'
cmp #13
bcc conv4
sbc #12
ldx #'P'
conv4 ldy #'0'
conv5 cmp #10
bcc conv6
sbc #10
iny
bne conv5
conv6 ora #'0'
sta timestr+1
sty timestr
stx timestr+9
ldx #'M'
stx timestr+10
rts
datestr asc '00 00 00'
timestr asc '00:00:00 '

View File

@ -1 +1,166 @@
гс цЛОЦК ДРИЖЕР БИОС вРИТТЕН БЫ аНДЫ нИЦХОЛАС Ё РЕВРИТТЕН БЫ аНДЫ ЁЛСТОФФЬЦЬЦ ГОТО МОДЕРЕЛДСКРЕЛГСЦЛОЦКГСЦЛОЦКЕНТОРГД йУМП тАБЛЕДОВДБМОДЕДБЙМПГЕТДАТЕЦАЛЛ ТО ГЕТ ТХЕ ДАТЕЙМПГЕТТИМЕЦАЛЛ ТО ГЕТ ТХЕ ТИМЕ ФОРМАТТЕДЙМПСЕТДАТЕКНОВН РЕТУРН ПОИНТ рЕАД цЛОЦК ФРОМ пРОдосМЛИЕЯУБФДАТЕЕЯУБФГЕТДАТЕЙСРМЛИРЕАД ТХЕ ЦЛОЦК ИНТОХЕЬБУФФЕР АТ ДАЛДЬДАТЕРЕАД ДАТЕ ИН ЦОМПРЕССЕД ФОРМЛДАДАТЕИНТО а ьСЕТДАТЕРТС ГЕТ ТХЕ ЦУРРЕНТ ТИМЕГЕТТИМЕЙСРРДТИМЕБИТМОДЕБПЛГТИМЕЙСРЦОНЖЕРТГТИМЕЛДЬёТИМЕСТР ПОИНТ ТО СТРИНГЛДАёТИМЕСТРРТС РЕАД ТИМЕ ФРОМ ЦЛОЦКРДТИМЕЦЛЦГО ТО НАТИЖЕ МОДЕЬЦЕРЕПёЁАНД БИТ а ь АНД ыМЬПХАСТАЦК СПАЦЕ ФОР РЕСУЛТСПХАПХАПХАЛДЬёДЁрЕАДтИМЕхЕЬЙСЛЕтООЛ лОЦАТЕРСЕЦЬЦЕЕМУЛАТИОН МОДЕМЬПЛА СЕЦОНДСЙСРБИНДЕЦ ЦОНЖЕРТ ТО ТВО БЫТЕСТАТИМЕСТРСТЬТИМЕСТРПЛА МИНУТЕСЙСРБИНДЕЦ ЦОНЖЕРТ ТО ТВО БЫТЕСТАТИМЕСТРЁСТЬТИМЕСТРПЛА ХОУРЙСРБИНДЕЦ ЦОНЖЕРТ ТО ТВО БЫТЕСТАТИМЕСТРСТЬТИМЕСТРПЛА ЫЕАРПЛА ДАЫ ОФ МОНТХПЛА МОНТХПЛА УНУСЕД БЫТЕПЛА ДАЫ ОФ ТХЕ ВЕЕКСТАДОВЛДАё СТАТИМЕСТРСТАТИМЕСТРРТСБЫЕ ЦОНЖЕРТ ТИМЕ ТО ХР ФОРМАТЦОНЖЕРТЛДАТИМЕСТРЦОНЖЕРТ ТО ХОУРЛДЬТИМЕСТРАНДёФТАЫТЬААНДёФДЕЫБМИЦОНЖЦЛЦАДЦёДЕЫБМИЦОНЖАДЦёЦОНЖЦМПёБНЕЦОНЖАЛДАёЦОНЖАТАЫБНЕЦОНЖЁЛДАёЦОНЖЁЛДЬёаЦМПёЁБЦЦЦОНЖСБЦёЛДЬёпЦОНЖЛДЫёЦОНЖЦМПёБЦЦЦОНЖСБЦёИНЫБНЕЦОНЖЦОНЖОРАёСТАТИМЕСТРСТЫТИМЕСТРСТЬТИМЕСТРЛДЬёмСТЬТИМЕСТРРТС ТРАНСЛАТЕ А БИНАРЫ ТО ТЕЬТ шщБИНДЕЦЦМПё ПУТ ЛИМИТ ОФ БЦЦБИНЛДАёБИНЛДЫё СТАРТ С ЦОУНТЕРБИНАЦМПёБЦЦБИНБ ЛЕСС ТХАН ВЕРЕ ДОНЕСБЦё МИНУС ИНЫ АДД ТО ТХЕ С ЦОУНТЕРБНЕБИНА ЛООПБИНБАДЦё МАКЕ С ИНТО ТЕЬТТАЬ САЖЕТЫААДЦё МАКЕ С ИНТО ТЕЬТРТС ВЕРЕ ДОНЕ ЁТИМЕСТРАСЦ
*-------------------------------
* GS Clock driver bios
* Written by Andy Nicholas - 07/30/87
* rewritten by Andy 3/11/88
*-------------------------------
lst off
xc
xc ; goto 65816 mode
rel
dsk rel/gsclock
gsclock ent
org $d00
* Jump Table
*-------------------------------
dow db 0
mode db 0
jmp getdate ;call to get the date
jmp gettime ;call to get the time (formatted)
jmp setdate ;known return point
* Read Clock from ProDOS
*-------------------------------
mli equ $bf00
date equ $bf90
getdate jsr mli ;read the clock into
hex 82 ;buffer at $200
da 0
ldx date ;read date in compressed form
lda date+1 ;into A & X
setdate rts
* get the current time
*-------------------------------
gettime jsr rdtime
bit mode
bpl gtime1
jsr convert
gtime1 ldx #<timestr ; point to string
lda #>timestr
rts
* read time from clock
*-------------------------------
rdtime clc ;go to native mode
xce
rep #$30 ;and 16 bit A, X, and Y
mx %00
pha ;stack space for results
pha
pha
pha
ldx #$0d03 ;ReadTimeHex
jsl $e10000 ;Tool Locater
sec
xce ;emulation mode
mx %11
pla ; seconds
jsr bindec8 ; convert to two byte
sta timestr+6
stx timestr+7
pla ; minutes
jsr bindec8 ; convert to two byte
sta timestr+3
stx timestr+4
pla ; hour
jsr bindec8 ; convert to two byte
sta timestr
stx timestr+1
pla ; year
pla ; day of month
pla ; month
pla ; unused byte
pla ; day of the week
sta dow
lda #' '
sta timestr+9
sta timestr+10
rts ;bye..
* convert time to 12hr format
*----------------------------
convert lda timestr ;convert to 12 hour
ldx timestr+1
and #$0f
tay
txa
and #$0f
dey
bmi conv2
clc
adc #10
dey
bmi conv2
adc #10
conv2 cmp #12
bne conv2a
lda #24
conv2a tay
bne conv3
lda #12
conv3 ldx #'A'
cmp #13
bcc conv4
sbc #12
ldx #'P'
conv4 ldy #'0'
conv5 cmp #10
bcc conv6
sbc #10
iny
bne conv5
conv6 ora #'0'
sta timestr+1
sty timestr
stx timestr+9
ldx #'M'
stx timestr+10
rts
* translate a binary to text [0-99]
*-------------------------------
bindec8 cmp #60 ; put limit of 59
bcc bin8
lda #59
bin8 ldy #0 ; start 10's counter
bin8a cmp #10
bcc bin8b ; less than 10, were done
sbc #10 ; minus 10
iny ; add 1 to the 10's counter
bne bin8a ; loop
bin8b adc #'0' ; make 1's into text
tax ; save
tya
adc #'0' ; make 10's into text
rts ; were done
* '01234567890
timestr asc '12:00:00 '

View File

@ -1 +1,155 @@
мОУНТИАН хАРДВАРЕ дРИЖЕР рЕЖИСЕД дАТЕ ЛСТОФФРЕЛДСКРЕЛМОУНТАИНМОУНТАИНЕНТОРГДМЛИЕЯУБФДАТЕЕЯУБФТИМЕЕЯУБФГЕТъТИМЕЕЯУСЛОТХЕЬМОДЕДБЙМПГЕТДАТЕЙМПГЕТТИМЕЙМПСЕТДАТЕ ГЕТ ТХЕ ДАТЕ ИН ПРОДОС ГББС ФОРМАТГЕТДАТЕЙСРМЛИ МЛИ ЦАЛЛДБГЕТъТИМЕ ГЕТъТИМЕХЕЬ НО ПРАМАТЕР ТАБЛЕЛДЬДАТЕЛДАДАТЕСЕТДАТЕРТС ГЕТ ТХЕ ЦУРРЕНТ ТИМЕГЕТТИМЕЙСРРДТИМЕБИТМОДЕБПЛГТИМЕЙСРЦОНЖЕРТГТИМЕЛДЬёТИМЕСТР ПОИНТ ТО СТРИНГЛДАёТИМЕСТРРТС ГЕТ ТИМЕ РОУТИНЕРДТИМЕЙСРРДЦЛОЦКЛДАё ЦЛЕАН УП ФОРМАТСТАТИМЕСТРСТАТИМЕСТРРТС РЕАД ТИМЕ ФРОМ ЦЛОЦКРДЦЛОЦКЛДАЁПХАЛДАЁ САЖЕ ЗП АДДРЕССЕСПХАЛДАСЛОТЛСРЛСРЛСРЛСРОРАёЦСТАЁ ПОИНТ ТО ЦЛОЦК ЕНТРЫСТАЦАЛЛЦЛКЦАЛЛЦЛКЙСРЦ ЦАЛЛ ЦЛОЦКПЛАСТАЁПЛА РЕСТОРЕ ЗПСТАЁЛДЬёДЛДЫёМОЖТИМЕЛДАЬ МОЖЕ РЕТУРНЕД СТРИНГАНДёФСТАДАТЕСТРЫИНЫДЕЬБПЛМОЖТИМЕРТС ЦОНЖЕРТ ТИМЕ ТО ХР ФОРМАТЦОНЖЕРТЛДАТИМЕСТРЦОНЖЕРТ ТО ХОУРЛДЬТИМЕСТРАНДёФТАЫТЬААНДёФДЕЫБМИЦОНЖЦЛЦАДЦёДЕЫБМИЦОНЖАДЦёЦОНЖЦМПёБНЕЦОНЖАЛДАёЦОНЖАТАЫБНЕЦОНЖЁЛДАёЦОНЖЁЛДЬёаЦМПёЁБЦЦЦОНЖСБЦёЛДЬёпЦОНЖЛДЫёЦОНЖЦМПёБЦЦЦОНЖСБЦёИНЫБНЕЦОНЖЦОНЖОРАёСТАТИМЕСТРСТЫТИМЕСТРСТЬТИМЕСТРЛДЬёмСТЬТИМЕСТРРТС ЦОНЖЕРТ А БЫТЕ ДЕЦИМАЛ НУМБЕР ТО БИНАРЫДЕЦБИНАНДёФСЕЦСБЦёСТАДЕЦБЫТЕ САЖЕ С ДИГИТТЬА МОЖЕ С ИНТО аАНДёФСЕЦСБЦёЛДЫёДЕЦАЦЛЦАДЦДЕЦБЫТЕ АДД ТХЕ С ДИГИТ ТИМЕСДЕЫБНЕДЕЦАРТС РЕТУРН ВИТХ РЕСУЛТДЕЦБЫТЕХЕЬДАТЕСТРАСЦТИМЕСТРАСЦ
*-------------------------------
* Mountian Hardware Driver
*-------------------------------
* Revised Date: 08/02/87
*-------------------------------
lst off
rel
dsk rel/mountain
mountain ent
org $0d00
mli equ $bf00
date equ $bf90
time equ $bf92
get_time equ $82
slot hex 40
mode db 0
jmp getdate
jmp gettime
jmp setdate
* get the date in prodos gbbs format
*-------------------------------
getdate jsr mli ; mli call
db get_time ; get_time
hex 0000 ; no pramater table
ldx date
lda date+1
setdate rts
* get the current time
*-------------------------------
gettime jsr rdtime
bit mode
bpl gtime1
jsr convert
gtime1 ldx #<timestr ; point to string
lda #>timestr
rts
* get time routine
*-------------------
rdtime jsr rdclock
lda #':' ; clean up format
sta timestr+2
sta timestr+5
rts
* read time from clock
*----------------------
rdclock lda $38
pha
lda $39 ; save zp addresses
pha
lda slot
lsr
lsr
lsr
lsr
ora #$c0
sta $39 ; point to clock entry
sta callclk+2
callclk jsr $c000 ; call clock
pla
sta $39
pla ; restore zp
sta $38
ldx #$0d
ldy #0
movtime lda $286,x ; move returned string
and #$7f
sta datestr,y
iny
dex
bpl movtime
rts
* convert time to 12hr format
*----------------------------
convert lda timestr ;convert to 12 hour
ldx timestr+1
and #$0f
tay
txa
and #$0f
dey
bmi conv2
clc
adc #10
dey
bmi conv2
adc #10
conv2 cmp #12
bne conv2a
lda #24
conv2a tay
bne conv3
lda #12
conv3 ldx #'A'
cmp #13
bcc conv4
sbc #12
ldx #'P'
conv4 ldy #'0'
conv5 cmp #10
bcc conv6
sbc #10
iny
bne conv5
conv6 ora #'0'
sta timestr+1
sty timestr
stx timestr+9
ldx #'M'
stx timestr+10
rts
; convert a 2 byte decimal number to binary
decbin8 and #$7f
sec
sbc #'0'
sta decbyte ; save 10's digit
txa ; move 1's into A
and #$7f
sec
sbc #'0'
ldy #10
dec8a clc
adc decbyte ; add the 10's digit, 10 times
dey
bne dec8a
rts ; return with result
decbyte hex 00
datestr asc '00/00/00'
timestr asc '00:00:00 '

View File

@ -1 +1,189 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 屿 <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>秿<EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*-------------------------------
* No Slot Clock - 24 hr
*-------------------------------
* Revised Date: 08/02/87
*-------------------------------
lst off
rel
dsk rel/noslot
ZBUF EQU $41
PTR EQU $42
YEAR EQU $44
MONTH EQU $45
DATE EQU $46
DAY EQU $47
HOURS EQU $48
MINUTES EQU $49
SECONDS EQU $4A
MSECONDS EQU $4B
TEMP EQU $2F0
noslot ent
org $0d00
db 0
:MODE db 0 ;24 hour format
:GETDATE JMP :FMTDATE
:GETTIME JMP :FMTTIME
:SETCLK RTS
*
* FORMAT NO-SLOT CLOCK DATE
*
:FMTDATE JSR :RDCLOCK
LDA MONTH
ASL
ASL
ASL
ASL
ASL
ROL YEAR
ORA DATE
TAX
LDA YEAR
PHA
JSR :ZRECALL
PLA
:SETRTN RTS
*
* FORMAT NO-SLOT CLOCK TIME
*
:FMTTIME JSR :RDCLOCK
LDY HOURS
BIT :MODE
BPL :FMT24
LDA #'M'
STA :TIME+10
LDX #'A'
SED
SEC
TYA
SBC #$12
CLD
BCC :SETHOUR
TAY
BNE :NOTNOON
LDY #$12
:NOTNOON LDX #'P'
:SETHOUR STX :TIME+9
TYA
BNE :FMT24
LDY #$12
:FMT24 TYA
LDY #$00
LDX #$00
:FMT PHA
AND #$F0
LSR
LSR
LSR
LSR
CLC
ADC #$30
STA :TIME,Y
INY
PLA
AND #$0F
ADC #$30
STA :TIME,Y
INY
INY
INX
LDA HOURS,X
CPX #$03
BNE :FMT
JSR :ZRECALL
*
LDX #<:TIME
LDA #>:TIME
RTS
*
* RECALL PG ZERO BUFFER (ACCESS VIA JMP)
*
:ZRECALL LDY #$0A
:ZRECALL1 LDA TEMP,Y
STA PTR,Y
DEY
BNE :ZRECALL1
RTS
*
* READ THE NO-SLOT CLOCK AND RETRIEVE DATE/TIME
*
:RDCLOCK LDY #$0A
:STORBUF LDA ZBUF,Y
STA TEMP,Y
DEY
BNE :STORBUF
PHP
SEI
LDA $C015
PHA
STA $C007
LDA $C804
LDA #<:RECSEQ
STA PTR
LDA #>:RECSEQ
STA PTR+1
LDY #$07
:RECOG1 LDA (PTR),Y
SEC
ROR
:RECOG2 PHA
LDA #$00
ROL
TAX
LDA $C800,X
PLA
LSR
BNE :RECOG2
DEY
BPL :RECOG1
LDX #$07
:NEXTREAD LDY #$07
:READBIT LDA $C804
ROR
ROR YEAR,X
DEY
BPL :READBIT
CPX #$03
BPL :STORDATE
LDA YEAR,X
PHA
AND #$0F
STA YEAR,X
PLA
AND #$F0
LSR
LSR
LSR
LSR
TAY
BEQ :STORDATE
LDA #$00
:ADDTENS ADC #$0A
DEY
BNE :ADDTENS
:STOR5 ADC YEAR,X
STA YEAR,X
:STORDATE DEX
BPL :NEXTREAD
PLA
ROL
BCS :RDEND
STA $C006
PLP
:RDEND RTS
*
* DEFINE RECOGNITION SEQUENCE FOR NO-SLOT CLOCK
*
:RECSEQ dfb $5C,$A3,$3A,$C5,$5C,$A3,$3A,$C5
*
* TIME OUTPUT BUFFER
*
:TIME dfb $30,$30,$3A
dfb $30,$30,$3A
dfb $30,$30,$20,$20,$20

View File

@ -1 +1,144 @@
нО цЛОЦК дРИЖЕР рЕЖИСЕД дАТЕ ЛСТОФФРЕЛДСКРЕЛНУЛЛБЫТЦНТЕЯУЕЁНУЛЛПТРЕЯУАНУЛЛЦЛКЕНТОРГДСЛОТХЕЬМОДЕДБЙМПГЕТДАТЕЙМПГЕТТИМЕЙМПСЕТДАТЕ ГЕТ ТХЕ ДАТЕ ИН ПРОДОСГББС ФОРМАТГЕТДАТЕЛДЬДАТЕЛДАДАТЕРТС СЕТ ТХЕ ДАТЕ МАНУАЛЛЫСЕТДАТЕЦПЫё ИС ИТ ЦХАРС ЛОНГ©БНЕСЕТДТ НОПЕСТЬНУЛЛПТР ПОИНТ ТО СТРИНГСТАНУЛЛПТРЛДЫёЛДАНУЛЛПТРЫТАЬ ПРОЦЕСС ЫЕАРДЕЫЛДАНУЛЛПТРЫЙСРДЕЦБИНСТАДАТЕ САЖЕ ЫЕАРЛДЫёЛДАНУЛЛПТРЫТАЬ ПРОЦЕСС ДАЫДЕЫЛДАНУЛЛПТРЫЙСРДЕЦБИНАНДёСТАДАТЕ САЖЕ ДАЫЛДЫёЛДАНУЛЛПТРЫТАЬ ПРОЦЕСС МОНТХДЕЫЛДАНУЛЛПТРЫЙСРДЕЦБИНАНДё ГЕТ РИД ОФ ЕЬТРА ЙУНКАСЛАСЛАСЛАСЛАСЛРОЛДАТЕ ПУТ БИТ ИНТО ЫЕАР ФИЕЛДОРАДАТЕСТАДАТЕ ПУТ РЕСТ ИНТО ДАЫ ФИЕЛДСЕТДТРТС ГЕТ ТХЕ ЦУРРЕНТ ЕСТИМАТЕД ТИМЕГЕТТИМЕЛДАБЫТЦНТ СХОВ ХОУРСЙСРБИНДЕЦСТАТИМЕСТРСТЬТИМЕСТРЛДАБЫТЦНТ СХОВ МИНУТЕСЙСРБИНДЕЦСТАТИМЕСТРЁСТЬТИМЕСТРЛДАБЫТЦНТ СХОВ СЕЦОНДСЙСРБИНДЕЦСТАТИМЕСТРСТЬТИМЕСТРЛДЬёТИМЕСТР ПОИНТ ТО СТРИНГЛДАёТИМЕСТРРТС ЦОНЖЕРТ А БЫТЕ ДЕЦИМАЛ НУМБЕР ТО БИНАРЫДЕЦБИНАНДёФСЕЦСБЦёСТАДЕЦБЫТЕ САЖЕ С ДИГИТТЬА МОЖЕ С ИНТО аАНДёФСЕЦСБЦёЛДЫёДЕЦАЦЛЦАДЦДЕЦБЫТЕ АДД ТХЕ С ДИГИТ ТИМЕСДЕЫБНЕДЕЦАРТС РЕТУРН ВИТХ РЕСУЛТДЕЦБЫТЕХЕЬ ТРАНСЛАТЕ А БИНАРЫ ТО ТЕЬТ шщБИНДЕЦЦМПё ПУТ ЛИМИТ ОФ БЦЦБИНЛДАёБИНЛДЫё СТАРТ С ЦОУНТЕРБИНАЦМПёБЦЦБИНБ ЛЕСС ТХАН ВЕРЕ ДОНЕСБЦё МИНУС ИНЫ АДД ТО ТХЕ С ЦОУНТЕРБНЕБИНА ЛООПБИНБАДЦё МАКЕ С ИНТО ТЕЬТТАЬ САЖЕТЫААДЦё МАКЕ С ИНТО ТЕЬТРТС ВЕРЕ ДОНЕТИМЕСТРАСЦ етДАТЕХЕЬ
*-------------------------------
* No Clock Driver
*-------------------------------
* Revised Date: 08/02/87
*-------------------------------
lst off
rel
dsk rel/null
bytcnt equ $0e03
nullptr equ $0a
nullclk ent
org $0d00
*-------------------------------
slot hex 00
mode db 0
jmp getdate
jmp gettime
jmp setdate
* get the date in prodos/gbbs format
*-------------------------------
getdate ldx date
lda date+1
rts
* set the date manually
*-------------------------------
setdate cpy #8 ; is it 8 chars long?
bne setdt2 ; nope
stx nullptr ; point to string
sta nullptr+1
ldy #7
lda (nullptr),y
tax ; process year
dey
lda (nullptr),y
jsr decbin8
sta date+1 ; save year
ldy #4
lda (nullptr),y
tax ; process day
dey
lda (nullptr),y
jsr decbin8
and #%00011111
sta date ; save day
ldy #1
lda (nullptr),y
tax ; process month
dey
lda (nullptr),y
jsr decbin8
and #%00001111 ; get rid of extra junk
asl
asl
asl
asl
asl
rol date+1 ; put bit into year field
ora date
sta date ; put rest into day field
setdt2 rts
* get the current estimated time
*-------------------------------
gettime lda bytcnt+2 ; show hours
jsr bindec8
sta timestr
stx timestr+1
lda bytcnt+1 ; show minutes
jsr bindec8
sta timestr+3
stx timestr+4
lda bytcnt+0 ; show seconds
jsr bindec8
sta timestr+6
stx timestr+7
ldx #<timestr ; point to string
lda #>timestr
rts
* convert a 2 byte decimal number to binary
*-------------------------------
decbin8 and #$7f
sec
sbc #'0'
sta decbyte ; save 10's digit
txa ; move 1's into A
and #$7f
sec
sbc #'0'
ldy #10
dec8a clc
adc decbyte ; add the 10's digit, 10 times
dey
bne dec8a
rts ; return with result
decbyte hex 00
* translate a binary to text [0-99]
*-------------------------------
bindec8 cmp #60 ; put limit of 59
bcc bin8
lda #59
bin8 ldy #0 ; start 10's counter
bin8a cmp #10
bcc bin8b ; less than 10, were done
sbc #10 ; minus 10
iny ; add 1 to the 10's counter
bne bin8a ; loop
bin8b adc #'0' ; make 1's into text
tax ; save
tya
adc #'0' ; make 10's into text
rts ; were done
timestr asc '00:00:00 ET'
date hex 0000

View File

@ -1 +1,153 @@
Ц сЫСТЕМ цЛОЦК ХР рЕЖИСЕД дАТЕ РЕЛДСКРЕЛИИЦСЫСЛНБУФЕЯУзбуфеяуптреяуСТАТЕЯУЦЦОММЕЯУЦАСТАТЕЯУЦАЦОММЕЯУЦААБЫТЦНТЕЯУЕЁНУЛЛПТРЕЯУАИИЦСЫСЕНТОРГДСЛОТХЕЬЙМПГЕТДАТЕЙМПГЕТТИМЕЙМПСЕТДАТЕ ГЕТ ТХЕ ДАТЕ ИН ПРОДОСГББС ФОРМАТГЕТДАТЕЙСРБФ РЕАД ДАТЕ ФРОМ млиХЕЬХЕЬЛДЬБФЛДАБФСЕТДАТЕРТС ГЕТ ТХЕ ЦУРРЕНТ ТИМЕГЕТТИМЕЙСРРДЦЛОЦК РЕАД ТХЕ ЦЛОЦКЛДАёСТАТИМЕСТР ПУТ ТИМЕ ДИЖИДЕРС ИНСТАТИМЕСТРЛДЬёТИМЕСТР ПОИНТ ТО СТРИНГЛДАёТИМЕСТРРТС РЕАД ТХЕ ДАТЕ ТИМЕ ФРОМ ЦЛОЦКРДЦЛОЦКЛДАСЛОТЦМПёБЕЯИНИТЛДАёСТАТ СЕТ СТАТУС ПОРТ ТО СЛОТ СТАИНИТЁъЛДАёЦОММ СЕТ ЦОММ ПОРТ ТО СЛОТ СТАИНИТъЁСТАИНИТСТАИНИТЁъЁИНИТЛДАёИНИТъПХАИНИТъСБЦёБНЕИНИТъПЛАСБЦё ГИЖЕ ПЛЕНТЫ ОФ СЕТУП ДЕЛАЫБНЕИНИТъПХПСЕИИНИТъЁЛДАЦОММ ГЕТ ЦУРРЕНТ СЕТТИНГПХАЛДЫёЁЛДЬёЛДАёИНИТСТАЦОММ СЕНД ИНИТ СЕЯУЕНЦЕ ТО ЦЛОЦКИНИТъДЕЬ ИНТРАБИТ ДЕЛАЫБНЕИНИТъЕОРёА ТОГГЛЕ БАЦК АНД ФОРТХЛДЬёДЕЫБНЕИНИТ КЕЕП ЛООПИНГЛДЫёЛДЬёБНЕИНИТЁъ СКИП ИНИТИАЛ ДЕЛАЫИНИТЁЛДАёЁСТАТИМЕР ДЕЛАЫ ВХИЛЕ ЦЛОЦК СЕТС УПИНИТЁъДЕЦТИМЕР ТО СЕНД ТХЕ ДАТЕТИМЕБНЕИНИТЁъИНИТЁъЛДАСТАТ СХИФТ БИТ ДАТА ИНТО НИББЛЕРОЛРОЛРОЛРОРДАТЕСТРДЕЬБНЕИНИТЁ ГО БАЦК ТО ДЕЛАЫЛДАДАТЕСТРЕОРё САЖЕ ТХЕ НИББЛЕСТАДАТЕСТРЫЛДЬёДЕЫБПЛИНИТЁПЛАИНИТЁъЁСТАЦОММ РЕТОРЕ УАРТ ТО ИНИТИАЛ СЕТТИНГСЛДЫёЛДЬёИНИТЛДАДАТЕСТРЬПХААНДёФ ПРОЦЕСС ДИГИТ МАКЕ ИНТО АСЦИИОРАёЁСТАДАТЕСТРЫДЕЫПЛАЛСРЛСРЛСР ПРОЦЕСС ТОП ОФ НИББЛЕЛСРОРАёЁ ТУРН ИНТО АСЦИИСТАДАТЕСТРЫДЕЫДЕЫДЕЬБПЛИНИТПЛПРТСТИМЕРХЕЬДАТЕСТРАСЦ ТИМЕСТРАСЦ ДАТЕХЕЬ
*-------------------------------
* //c System Clock - 24 hr
*-------------------------------
* Revised Date: 08/02/87
*-------------------------------
rel
dsk rel/iicsys
lnbuf equ $200
ZBUF EQU $41
PTR EQU $42
stat1 equ $c099
comm1 equ $c09a
stat2 equ $c0a9
comm2 equ $c0aa
bytcnt equ $0e03
nullptr equ $0a
iicsys ent
org $0d00
*-------------------------------
slot hex 20
jmp getdate
jmp gettime
jmp setdate
; get the date in prodos/gbbs format
getdate jsr $bf00 ; read date from MLI
hex 82
hex 0000
ldx $bf90
lda $bf91
setdate rts
; get the current time
gettime jsr rdclock ; read the clock
lda #':'
sta timestr+2 ; put time dividers in
sta timestr+5
ldx #<timestr ; point to string
lda #>timestr
rts
; read the date time from clock
rdclock lda slot
cmp #$10
beq init1
lda #<stat2 ; set status port to slot 2
sta init3_2+1
lda #<comm2 ; set comm port to slot 2
sta init1_3+1
sta init2+1
sta init3_3+1
init1 lda #64
init1_1 pha
init1_2 sbc #1
bne init1_2
pla
sbc #1 ; give plenty of setup delay
bne init1_1
php
sei
init1_3 lda comm1 ; get current setting
pha
ldy #3
ldx #22
lda #8
init2 sta comm1 ; send init sequence to clock
init2_1 dex ; intra-bit delay
bne init2_1
eor #$0a ; toggle back and forth
ldx #11
dey
bne init2 ; keep looping
ldy #4
ldx #8
bne init3_2 ; skip initial delay
init3 lda #$34
sta timer ; delay while clock sets up
init3_1 dec timer ; to send the date/time
bne init3_1
init3_2 lda stat1 ; shift bit data into nibble
rol
rol
rol
ror datestr
dex
bne init3 ; go back to delay
lda datestr
eor #0 ; save the nibble
sta datestr,y
ldx #8
dey
bpl init3
pla
init3_3 sta comm1 ; retore uart to initial settings
ldy #15
ldx #4
init4 lda datestr,x
pha
and #$0f ; process digit (make into ascii)
ora #$30
sta datestr,y
dey
pla
lsr
lsr
lsr ; process top of nibble
lsr
ora #$30 ; turn into ascii
sta datestr,y
dey
dey
dex
bpl init4
plp
rts
timer hex 00
datestr asc '00 00 00'
timestr asc '00:00:00 '
date hex 0000

View File

@ -1 +1,52 @@
×­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD>× ֳלןדכ ִעיצוע ָובהוע ֲלןדכ<EFBFBD>×­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD>× ׂוציףוה ִבפו÷ ±±¯°¸¯¸¹<EFBFBD>×­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD>×<EFBFBD>× העיצוע לןבה ימזן<EFBFBD>×<EFBFBD>× °¸°° ½ טובהוע גלןדכ »ןזזףופ<EFBFBD>× °ב°° ½ װטץמהוע¯װיםוםבףפוע »²<EFBFBD>× °ג°° ½ ֱ®ֵ® ׃ועיבל ׀ען »³<EFBFBD>× °ד°° ½ ׃ֽװ ־ן ׃לןפ דלןדכ »´<EFBFBD>× °ה°° ½ ֱננלו ¯¯חף ֳלןדכ »µ<EFBFBD>× °ו°° ½ ֱ®ֵ® ױלפעב ֳלןדכ »<EFBFBD>× °ז°° ½ נעןהןף דןםנבפיגלו »·<EFBFBD>× ±°°° ½ ֽןץמפבימ ֳלןדכ »¸<EFBFBD>× ±±°° ½ ײועףבדבעה »¹<EFBFBD>× ±²°° ½ מן דלןדכ ימ ףשףפום »ב<EFBFBD>× ±³°° ½ ¯¯ד ׃שףפום ֳלןדכ »ג<EFBFBD><EFBFBD> עול<EFBFBD> הףכ עול¯טובהוע<EFBFBD><EFBFBD> ןעח °¸°°<EFBFBD><EFBFBD>דלןדכף טור °²°±<EFBFBD> בףד §װטץמהועדלןדכ ֳןםנבפבגלו §<EFBFBD> טור °²°±<EFBFBD> בףד §ֱ®ֵ® װיםוםבףפוע ֹֹ ָ®ֿ® §<EFBFBD> טור °³°±<EFBFBD> בףד §ֱ®ֵ® ׃ועיבל ׀ען §<EFBFBD> טור ¸´°±<EFBFBD> בףד §׃ֽװ ־ן ׃לןפ ֳלןדכ §<EFBFBD> טור ¸µ°±<EFBFBD> בףד §ֱננלו ¯¯ַ׃ גץילפ­ימ דלןדכ §<EFBFBD> טור ¸°±<EFBFBD> בףד §ֱ®ֵ® ױלפעב ֳלןדכ §<EFBFBD> טור ¸·°±<EFBFBD> בףד §׀עןִֿ׃ ֳןםנבפיגלו ֳלןדכ §<EFBFBD> טור °¸°±<EFBFBD> בףד §ֽןץמפבימ ָבעהקבעו ֳלןדכ §<EFBFBD> טור °¹°±<EFBFBD> בףד §׀עןםופטוץף ײועףבדבעה §<EFBFBD> טור ¸ב°±<EFBFBD> בףד §־ן ֳלןדכ ימ ׃שףפום §<EFBFBD> טור °ג°±<EFBFBD> בףד §ֱ®ֵ® ¯¯ד ׃שףפום ֳלןדכ §<EFBFBD><EFBFBD> טור °°°°<EFBFBD> הף <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*-------------------------------
* Clock Driver Header Block
*-------------------------------
* Revised Date: 11/08/89
*-------------------------------
*
* driver load info
*
* $0800 = header block ;offset
* $0a00 = Thunder/Timemaster ;2
* $0b00 = A.E. Serial Pro ;3
* $0c00 = SMT No Slot clock ;4
* $0d00 = Apple //gs Clock ;5
* $0e00 = A.E. Ultra Clock ;6
* $0f00 = prodos compatible ;7
* $1000 = Mountain Clock ;8
* $1100 = Versacard ;9
* $1200 = no clock in system ;a
* $1300 = //c System Clock ;b
rel
dsk rel/header
org $0800
clocks hex 0201
asc 'Thunderclock Compatable '
hex 0201
asc 'A.E. Timemaster II H.O. '
hex 0301
asc 'A.E. Serial Pro '
hex 8401
asc 'SMT No Slot Clock '
hex 8501
asc 'Apple //GS built-in clock '
hex 8601
asc 'A.E. Ultra Clock '
hex 8701
asc 'ProDOS Compatible Clock '
hex 0801
asc 'Mountain Hardware Clock '
hex 0901
asc 'Prometheus Versacard '
hex 8a01
asc 'No Clock in System '
hex 0b01
asc 'A.E. //c System Clock '
hex 0000
ds \

View File

@ -1 +1,179 @@
ттлацос Ьнсц ДРИЖЕРРЕЛДСКРЕЛНОСЛОТ ацос Ьнсц цЛОЦК ДРИЖЕР МОДИФИЕД йабдуммынсцъВОРКнсцъпТРдспОИНТЕР ТО нсц иНИТ СТРИНГнсцОУТПТыЕАРдсмОНТХдсдАТЕдсдсдАЫ ОФ ВЕЕКхОУРдсдсмИНУТЕСдссЕЦОНДС сЕЦОНДСденддуммыфнсцъСАЖЕдсзЕРОпАГЕ САЖЕ АРЕА ДУРНИНГ нсц АЦЦЕССдендцлрцьромцсетцьромцрдцьромцнсцъДАТАцнсцъИНИТцтрадрНОСЛОТЕНТоргдхеьцЛОЦК СЛОТ ё нОТ УСЕД БЫ нсц ДРИЖЕРхРфОРМАТхеьиФ хР ФОРМАТ иФ хОУР ФОРМАТймпгЕТдАТЕгетдатеймпгЕТтИМЕгеттимертссетдатегЕТдАТЕйсррЕАДцЛКрЕАД ТХЕ ЦЛОЦКлдамОНТХцОНЖЕРТ дАТЕмОНТХыЕАР ИНТО пРОдосаслсТРИНГСасласласласлролыЕАРорадАТЕтаьлдаыЕАРпхайсррЕСТзпГрЕСТОРЕ зЕРОпАГЕплартсгЕТтИМЕйсррЕАДцЛКрЕАД ТХЕ ЦЛОЦКлдыхОУРбитхРфОРМАТ ХОУР ТИМЕ ФОРМАТ ©бплцНЖтИМЕыЕСлдаёмнО сЕТУП ТИМЕ СТИНГ ФОР ХОУР ФОРМАТстатИМЕсТРлдьёааССУМЕ амседсецтыаиС ИТ аФТЕРНООНеЖЕНИНГ ©сбцёцлдбццсЕТампмнОтаыыЕС сАЖЕ РЕСУЛТ ХОУРбнемАКЕпмлдыёиТС ТХЕ нООН ХОУРмАКЕпмлдьёпсЕТампмстьтИМЕсТРтыаиС ИТ ТХЕ ам ХОУР ©бнецНЖтИМЕлдыёыЕСцНЖтИМЕтыасЕТУП ТИМЕ СТРИНГлдыёлдьёнЬТбЫТЕпхасПЛИТ БЫТЕ ИНТО НИББЛЕСандёфлсрлсрлсрлсрцлцадцёсЕТУП тЕНС ДИГИТстатИМЕсТРыинысЕТУП оНЕС ДИГИТплаандёфадцёстатИМЕсТРыиныиныиньаРЕ ВЕ ФИНИСХЕД ТХРУ сЕЦОНДС ©лдахОУРьцпьёбненЬТбЫТЕнОйсррЕСТзпГыЕС рЕСТОРЕ зЕРОпАГЕлдьётИМЕсТРАНД РЕТУРН ВИТХ ПОИНТЕР ТО ТИМЕ СТРИНГлдаётИМЕсТРртсрЕСТзпГлдыёрЕСТОРЕ зЕРО ПАГЕрЕСТзплдансцъСАЖЕыстансцъВОРКыдеыбнерЕСТзпртс рЕАДцЛК рЕАД ТХЕ ЖАЛУЕС ФРОМ ТХЕ нсцС МЕМОРЫрЕАДцЛКлдыёсАЖЕ ОФФ зЕРО ПАГЕ ТХАТ ВЕ АРЕ УСИНГсАЖЕзпГлдансцъВОРКыстансцъСАЖЕыдеыбнесАЖЕзпГсеидОНТ АЛЛОВ иНТЕРРУПТС ДУРНИНГ нсц АЦЦЕССлдардцьромсАЖЕ цьром СТАТЕпхастасетцьромлдансцъИНИТеНАБЛЕ нсц ФОР ИНИТ СТРИНГлдаёиНИТсТРсЕТУП ПОИНТЕР ТО ИНИТ СТРИНГстансцъпТРлдаёиНИТсТРстансцъпТРлдыёсЕНД ИНИТ СТРИНГиНТнбЫТлдансцъпТРыгЕТ НЕЬТ нсц ИНТИ БЫТЕсецрориНТнбИТпхасЕНД ТХЕ БИТСлдаёролтаьлдансцъДАТАьплалсрбнеиНТнбИТдеыбплиНТнбЫТлдьёрЕАД ИН ТХЕ ТИМЕ ФРОМ ТХЕ нсц ЦХИПнЬТобЫТлдыёнЬТобИТлдансцъИНИТроррорнсцОУТПТьдеымОРЕ БИТС ТО РЕЦЕИЖЕ ©бплнЬТобИТыЕСцпьёЁаРЕ ВЕ ДОВН ТО дАЫ ОФ вЕЕК ©бплмОРЕо©ыЕС иГНОРЕ дов дАТЕ мОНТХ АНД ыЕАРлдансцОУТПТьнО цОНЖЕРТ бцд ТО хЕЬпхаандёфстансцОУТПТьплаандёфлсрлсрлсрлсртаыбеямОРЕо©лдаёцНЖхЕЬадцёдеыбнецНЖхЕЬадцнсцОУТПТьстансцОУТПТьмОРЕо©деьмОРЕ БЫТЕС ТО РЕАД ФРОМ нсц ©бплнЬТобЫТыЕСпланО рЕСТОРЕ цьром СЕТТИНГ ИФ НЕЦЕССАРЫролбцсрЕАДдОНстацлрцьромрЕАДдОНртсиНИТсТРхеьцаЁЁаццаЁЁацтИМЕсТРасц хеь
TTL "ACOS 2.x-NSC driver"
rel
dsk rel/noslot
* ACOS 2.x-NSC Clock driver (modified 90/02/10-JAB)
DUMMY $42
NSC_work
NSC_Ptr DS 2 ;Pointer to NSC Init string
NSCoutpt
Year DS 1
Month DS 1
Date DS 1
DS 1 ;<Day of week>
Hour DS 1
DS 1 ;<Minutes>
DS 2 ;<Seconds/ .01 Seconds>
DEND
DUMMY $2F0
NSC_save DS 10 ;Zero-Page save area durning NSC access
DEND
CLRCXROM = $C006
SETCXROM = $C007
RDCXROM = $C015
NSC_data = $C800
NSC_init = $C804
TR ADR
noslot ent
ORG $0D00
HEX 10 ;Clock slot # <Not used by NSC driver>
HrFormat HEX 80 ;If -; 12 Hr format / If +; 24 Hour format
JMP :GetDate ;GETDATE
JMP :GetTime ;GETTIME
RTS ;SETDATE
:GetDate JSR :ReadClk ;Read the clock
LDA Month ;Convert Date/Month/Year into ProDOS
ASL ;Strings
ASL
ASL
ASL
ASL
ROL Year
ORA Date
TAX
LDA Year
PHA
JSR :RestZPg ;Restore Zero-Page
PLA
RTS
:GetTime JSR :ReadClk ;Read the clock
LDY Hour
BIT HrFormat ;24 hour time format ?
BPL :CnvTime ;Yes
LDA #'M' ;No : Setup time sting for 12 hour format
STA :TimeStr+10
LDX #'A' ;<Assume AM>
SED
SEC
TYA ;Is it Afternoon/Evening ?
SBC #$12
CLD
BCC :SetAMPM ;No
TAY ;Yes: Save "result" hour
BNE :MakePM
LDY #$12 ;....It's the Noon hour....
:MakePM LDX #'P'
:SetAMPM STX :TimeStr+9
TYA ;Is it the 12 AM hour ?
BNE :CnvTime
LDY #$12 ;Yes
:CnvTime TYA ;Setup time string
LDY #0
LDX #0
:NxtByte PHA ;Split byte into nibbles
AND #$F0
LSR
LSR
LSR
LSR
CLC
ADC #'0' ;Setup 'Tens' digit
STA :TimeStr,Y
INY ;Setup 'Ones' digit
PLA
AND #$0F
ADC #'0'
STA :TimeStr,Y
INY
INY
INX ;Are we finished (thru Seconds) ?
LDA Hour,X
CPX #4-1
BNE :NxtByte ;No
JSR :RestZPg ;Yes: Restore Zero-Page
LDX #<:TimeStr ;and return with pointer to time string
LDA #>:TimeStr
RTS
:RestZPg LDY #10 ;Restore Zero page
:RestZP1 LDA NSC_save,Y
STA NSC_work-1,Y
DEY
BNE :RestZP1
RTS
* ReadClk - Read the values from the NSC's memory
:ReadClk LDY #10 ;Save off Zero page that we are using
:SaveZPg LDA NSC_work-1,Y
STA NSC_save,Y
DEY
BNE :SaveZPg
SEI ;Don't allow Interrupts durning NSC access
LDA RDCXROM ;Save CX-ROM state
PHA
STA SETCXROM
LDA NSC_init ;Enable NSC for init string
LDA #<:InitStr ;Setup pointer to init string
STA NSC_Ptr
LDA #>:InitStr
STA NSC_Ptr+1
LDY #7 ;Send init string
:IntNByt LDA (NSC_Ptr),Y ;Get next NSC inti byte
SEC
ROR
:IntNBit PHA ;Send the bits...
LDA #0
ROL
TAX
LDA NSC_data,X
PLA
LSR
BNE :IntNBit
DEY
BPL :IntNByt
LDX #7 ;Read in the time from the NSC chip
:NxtOByt LDY #7
:NxtOBit LDA NSC_init
ROR
ROR NSCoutpt,X
DEY ;More bits to receive ?
BPL :NxtOBit ;Yes
CPX #3 ;Are we down to "Day of Week" ?
BPL :MoreO? ;Yes: Ignore DOW, Date, Month, and Year
LDA NSCoutpt,X ;No : Convert BCD to Hex
PHA
AND #$0F
STA NSCoutpt,X
PLA
AND #$F0
LSR
LSR
LSR
LSR
TAY
BEQ :MoreO?
LDA #0
:Cnv2Hex ADC #10
DEY
BNE :Cnv2Hex
ADC NSCoutpt,X
STA NSCoutpt,X
:MoreO? DEX ;More bytes to read from NSC ?
BPL :NxtOByt ;Yes
PLA ;No : Restore CX-ROM setting <if necessary>
ROL
BCS :ReadDon
STA CLRCXROM
:ReadDon RTS
:InitStr HEX 5C,A3,3A,C5,5C,A3,3A,C5
:TimeStr ASC '00:00:00 '
HEX 00,00

View File

@ -1 +1,139 @@
пРОдос цЛОЦК дРИЖЕР рЕЖИСЕД дАТЕ ЛСТОФФРЕЛДСКРЕЛПРОДОСМЛИЕЯУБФДАТЕЕЯУБФТИМЕЕЯУБФГЕТъТИМЕЕЯУПРОДОСЕНТОРГДДБМОДЕДБЙМПГЕТДАТЕЙМПГЕТТИМЕЙМПСЕТДАТЕ ГЕТ ТХЕ ДАТЕ ИН ПРОДОС ГББС ФОРМАТГЕТДАТЕЙСРМЛИ МЛИ ЦАЛЛДБГЕТъТИМЕХЕЬ НО ПРАМАТЕР ТАБЛЕЛДЬДАТЕЛДАДАТЕСЕТДАТЕРТС ГЕТ ТХЕ ЦУРРЕНТ ТИМЕГЕТТИМЕЙСРРДТИМЕБИТМОДЕБПЛГТИМЕЙСРЦОНЖЕРТГТИМЕЛДЬёТИМЕСТР ПОИНТ ТО СТРИНГЛДАёТИМЕСТРРТС РЕАД ТИМЕ ФРОМ ПРОДОСРДТИМЕЙСРГЕТДАТЕ УПДАТЕ ТИМЕЛДАТИМЕ ГЕТ ЦУРРЕНТ ХОУРЙСРБИНДЕЦ ТРАНСЛАТЕ ТО АСЦИИСТАТИМЕСТР САЖЕ ХОУРСТЬТИМЕСТРЛДАТИМЕ ГЕТ МИНУТЕСЙСРБИНДЕЦ ТРАНСЛАТЕ ТО АСЦИИСТАТИМЕСТРЁ САЖЕ МИНУТЕСТЬТИМЕСТРЛДАё ЦЛЕАР ОУТ АНЫ ПОССИБЛЕ АМПМСТАТИМЕСТРСТАТИМЕСТРРТС ЦОНЖЕРТ ТИМЕ ТО ХР ФОРМАТЦОНЖЕРТЛДАТИМЕСТРЦОНЖЕРТ ТО ХОУРЛДЬТИМЕСТРАНДёФТАЫТЬААНДёФДЕЫБМИЦОНЖЦЛЦАДЦёДЕЫБМИЦОНЖАДЦёЦОНЖЦМПёБНЕЦОНЖАЛДАёЦОНЖАТАЫБНЕЦОНЖЁЛДАёЦОНЖЁЛДЬёаЦМПёЁБЦЦЦОНЖСБЦёЛДЬёпЦОНЖЛДЫёЦОНЖЦМПёБЦЦЦОНЖСБЦёИНЫБНЕЦОНЖЦОНЖОРАёСТАТИМЕСТРСТЫТИМЕСТРСТЬТИМЕСТРЛДЬёмСТЬТИМЕСТРРТС ТРАНСЛАТЕ А БИНАРЫ ТО ТЕЬТ шщБИНДЕЦЦМПё ПУТ ЛИМИТ ОФ БЦЦБИНЛДАёБИНЛДЫё СТАРТ С ЦОУНТЕРБИНАЦМПёБЦЦБИНБ ЛЕСС ТХАН ВЕРЕ ДОНЕСБЦё МИНУС ИНЫ АДД ТО ТХЕ С ЦОУНТЕРБНЕБИНА ЛООПБИНБАДЦё МАКЕ С ИНТО ТЕЬТТАЬ САЖЕТЫААДЦё МАКЕ С ИНТО ТЕЬТРТС ВЕРЕ ДОНЕ ЁТИМЕСТРАСЦ
*-------------------------------
* ProDOS Clock Driver
*-------------------------------
* Revised Date: 08/02/87
*-------------------------------
lst off
rel
dsk rel/prodos
mli equ $bf00
date equ $bf90
time equ $bf92
get_time equ $82
prodos ent
org $0d00
*-------------------------------
db 0
mode db 0
jmp getdate
jmp gettime
jmp setdate
* get the date in prodos gbbs format
*-------------------------------
getdate jsr mli ; mli call
db get_time
hex 0000 ; no pramater table
ldx date
lda date+1
setdate rts
* get the current time
*-------------------------------
gettime jsr rdtime
bit mode
bpl gtime1
jsr convert
gtime1 ldx #<timestr ; point to string
lda #>timestr
rts
* read time from prodos
*-------------------------------
rdtime jsr getdate ; update time
lda time+1 ; get current hour
jsr bindec8 ; translate to ascii
sta timestr ; save hour
stx timestr+1
lda time ; get minutes
jsr bindec8 ; translate to ascii
sta timestr+3 ; save minute
stx timestr+4
lda #' ' ; clear out any possible am/pm
sta timestr+9
sta timestr+10
rts
* convert time to 12hr format
*----------------------------
convert lda timestr ;convert to 12 hour
ldx timestr+1
and #$0f
tay
txa
and #$0f
dey
bmi conv2
clc
adc #10
dey
bmi conv2
adc #10
conv2 cmp #12
bne conv2a
lda #24
conv2a tay
bne conv3
lda #12
conv3 ldx #'A'
cmp #13
bcc conv4
sbc #12
ldx #'P'
conv4 ldy #'0'
conv5 cmp #10
bcc conv6
sbc #10
iny
bne conv5
conv6 ora #'0'
sta timestr+1
sty timestr
stx timestr+9
ldx #'M'
stx timestr+10
rts
* translate a binary to text [0-99]
*-------------------------------
bindec8 cmp #60 ; put limit of 59
bcc bin8
lda #59
bin8 ldy #0 ; start 10's counter
bin8a cmp #10
bcc bin8b ; less than 10, were done
sbc #10 ; minus 10
iny ; add 1 to the 10's counter
bne bin8a ; loop
bin8b adc #'0' ; make 1's into text
tax ; save
tya
adc #'0' ; make 10's into text
rts ; were done
* '01234567890
timestr asc '12:00:00 '

View File

@ -1 +1,130 @@
сЕРИАЛ пРО дРИЖЕР ХРСЛСТОФФРЕЛДСКРЕЛСЕРИАЛПРОЛНБУФЕЯУМЛИЕЯУБФДАТЕЕЯУБФГЕТъТИМЕЕЯУСЕРИАЛПРОЕНТОРГДСЛОТХЕЬМОДЕДБЙМПГЕТДАТЕЙМПГЕТТИМЕЙМПСЕТДАТЕ ГЕТ ТХЕ ДАТЕ ИН ПРОДОС ГББС ФОРМАТГЕТДАТЕЙСРБФ МЛИ ЦАЛЛДБГЕТъТИМЕХЕЬ НО ПРАМАТЕР ТАБЛЕЛДЬДАТЕЛДАДАТЕСЕТДАТЕРТС ГЕТ ТХЕ ЦУРРЕНТ ТИМЕГЕТТИМЕЙСРРДТИМЕБИТМОДЕБПЛГТИМЕЙСРЦОНЖЕРТГТИМЕЛДЬёТИМЕСТР ПОИНТ ТО СТРИНГЛДАёТИМЕСТРРТС РЕАД ТХЕ ЦУРРЕНТ ТИМЕ ФРОМ ЦЛОЦКРДТИМЕБИТИНИТБЫТ ХАС РОУТИНЕ БЕЕН ЦАЛЛЕД БЕФОРЕ©БМИЦЛОЦК ЫЕПЛДАСЛОТ ГЕТ ЦЛОЦК СЛОТЛСРЛСРЛСРЛСРОРАёЦ МАКЕ ИНТО цН ФОРМСТАЦЛОЦК МОДИФЫ ЦОДЕ ФОР СЛОТСТАЦЛОЦКЁДЕЦИНИТБЫТ СХОВ РОУТИНЕ ХАС БЕЕН ИНИТЕДЦЛОЦКЛДАёА УСЕ МОДЕЦЛОЦКЙСРЦ МОДИФИЕД ЦЦЛОЦКЁЙСРЦД МОДИФИЕД ЦЛДЛДЫёЛДЬёЦЛОЦКЛДАЛНБУФЫСТАТИМЕСТРЬИНЫИНЬЦПЬёБНЕЦЛОЦКРТС ЦОНЖЕРТ ТИМЕ ТО ХОУР ФОРМАТЦОНЖЕРТЛДАТИМЕСТРЦОНЖЕРТ ТО ХОУРЛДЬТИМЕСТРЦОНЖАНДёФТАЫТЬААНДёФДЕЫБМИЦОНЖЦЛЦАДЦёДЕЫБМИЦОНЖАДЦёЦОНЖЦМПёБНЕЦОНЖАЛДАёЦОНЖАТАЫБНЕЦОНЖЁЛДАёЦОНЖЁЛДЬёаЦМПёЁБЦЦЦОНЖСБЦёЛДЬёпЦОНЖЛДЫёЦОНЖЦМПёБЦЦЦОНЖСБЦёИНЫБНЕЦОНЖЦОНЖОРАёСТАТИМЕСТРСТЫТИМЕСТРСТЬТИМЕСТРЛДЬёмСТЬТИМЕСТРРТСИНИТБЫТХЕЬТИМЕСТРАСЦ ам
*-------------------------------
* Serial Pro Driver - 12 hrs
*-------------------------------
lst off
rel
dsk rel/serialpro
lnbuf equ $200
mli equ $bf00
date equ $bf90
get_time equ $82
serialpro ent
org $0d00
*-------------------------------
slot hex 40
mode db 0
jmp getdate
jmp gettime
jmp setdate
* get the date in prodos gbbs format
*-------------------------------
getdate jsr $bf00 ; mli call
db get_time
hex 0000 ; no pramater table
ldx date
lda date+1
setdate rts
* get the current time
*-------------------------------
gettime jsr rdtime
bit mode
bpl gtime1
jsr convert
gtime1 ldx #<timestr ; point to string
lda #>timestr
rts
* read the current time from clock
*-------------------------------
rdtime bit initbyt ; has routine been called before?
bmi clock1 ; yep
lda slot ; get clock slot
lsr
lsr
lsr
lsr
ora #$c0 ; make into $Cn form
sta clock2+2 ; modify code for slot
sta clock3+2
dec initbyt ; show routine has been init'ed
clock1 lda #$a6 ; use "&" mode
clock2 jsr $c020 ; modified ($c420)
clock3 jsr $c01d ; modified ($c4ld)
ldy #12
ldx #0
clock4 lda lnbuf,y
sta timestr,x
iny
inx
cpx #8
bne clock4
rts
* convert time to 12 hour format
*-------------------------------
convert lda timestr ;convert to 12 hour
ldx timestr+1
conv and #$0f
tay
txa
and #$0f
dey
bmi conv2
clc
adc #10
dey
bmi conv2
adc #10
conv2 cmp #12
bne conv2a
lda #24
conv2a tay
bne conv3
lda #12
conv3 ldx #'A'
cmp #13
bcc conv4
sbc #12
ldx #'P'
conv4 ldy #'0'
conv5 cmp #10
bcc conv6
sbc #10
iny
bne conv5
conv6 ora #'0'
sta timestr+1
sty timestr
stx timestr+9
ldx #'M'
stx timestr+10
rts
initbyt hex 00
timestr asc '00:00:00 AM',00

View File

@ -1 +1,131 @@
тХУНДЕРЦЛОЦК дРИЖЕР ХРС дАТЕ рЕЖИСЕД ЛСТОФФРЕЛДСКРЕЛТХУНДЕРЛНБУФЕЯУДАТЕЕЯУБФТХУНДЕРЕНТОРГДСЛОТХЕЬМОДЕДБЙМПГЕТДАТЕЙМПГЕТТИМЕЙМПСЕТДАТЕ ГЕТ ТХЕ ДАТЕ ИН ПРОДОСГББС ФОРМАТГЕТДАТЕЙСРБФХЕЬХЕЬЛДЬДАТЕЛДАДАТЕСЕТДАТЕРТС ГЕТ ТХЕ ЦУРРЕНТ ТИМЕГЕТТИМЕЙСРРДТИМЕБИТМОДЕБПЛГТИМЕЙСРЦОНЖЕРТГТИМЕЛДЬёТИМЕСТР ПОИНТ ТО СТРИНГЛДАёТИМЕСТРРТС РЕАД ТИМЕ ФРОМ ЦЛОЦКРДТИМЕБИТИНИТБЫТ ХАС РОУТИНЕ БЕЕН ЦАЛЛЕД БЕФОРЕ©БМИЦЛОЦК ЫЕПЛДАСЛОТ ГЕТ ЦЛОЦК СЛОТЛУПЛСРчОРАёЦ МАКЕ ИНТО цН ФОРМСТАЦЛОЦК МОДИФЫ ЦОДЕ ФОР СЛОТСТАЦЛОЦКЁДЕЦИНИТБЫТ СХОВ РОУТИНЕ ХАС БЕЕН ИНИТЕДЦЛОЦКЛДАёё УСЕ МОДЕ ХОУРЦЛОЦКЙСРЦБ МОДИФИЕД ЦБЦЛОЦКЁЙСРЦ МОДИФИЕД ЦЛДЫёЦЛОЦКЛДАЛНБУФЫ ГЕТ ТИМЕ ФРОМ ИНПУТ БУФФЕРСТАТИМЕСТРЫИНЫЦПЫёБНЕЦЛОЦКЛДАё ПУТ ЦОЛЕНС БАЦК ИНТО СТРИНГСТАТИМЕСТРСТАТИМЕСТРЛДАё СТАТИМЕСТР МАКЕ СУРЕ ТХАТ ТХЕ АМПМ ИС РЕСЕТСТАТИМЕСТРРТС ЦОНЖЕРТ ТИМЕ ТО ХОУР ФОРМАТЦОНЖЕРТЛДАТИМЕСТРЦОНЖЕРТ ТО ХОУРЛДЬТИМЕСТРАНДёФТАЫТЬААНДёФДЕЫБМИЦОНЖЦЛЦАДЦёДЕЫБМИЦОНЖАДЦёЦОНЖЦМПёБНЕЦОНЖАЛДАёЦОНЖАТАЫБНЕЦОНЖЁЛДАёЦОНЖЁЛДЬёаЦМПёЁБЦЦЦОНЖСБЦёЛДЬёпЦОНЖЛДЫёЦОНЖЦМПёБЦЦЦОНЖСБЦёИНЫБНЕЦОНЖЦОНЖОРАёСТАТИМЕСТРСТЫТИМЕСТРСТЬТИМЕСТРЛДЬёмСТЬТИМЕСТРРТС ДАТА АРЕАИНИТБЫТХЕЬТИМЕСТРАСЦ
*-------------------------------
* Thunderclock Driver - 24 hrs
*-------------------------------
* Date Revised: 08/04/87
*-------------------------------
lst off
rel
dsk rel/thunder
lnbuf equ $200
date equ $bf90
thunder ent
org $d00
*-------------------------------
slot hex 40
mode db 0
jmp getdate
jmp gettime
jmp setdate
; get the date in prodos/gbbs format
getdate jsr $bf00
hex 82
hex 0000
ldx date
lda date+1
setdate rts
* get the current time
*-------------------------------
gettime jsr rdtime
bit mode
bpl gtime1
jsr convert
gtime1 ldx #<timestr ; point to string
lda #>timestr
rts
* read time from clock
*-------------------------------
rdtime bit initbyt ; has routine been called before?
bmi clock1 ; yep
lda slot ; get clock slot
lup 4
lsr
--^
ora #$c0 ; make into $Cn form
sta clock2+2 ; modify code for slot
sta clock3+2
dec initbyt ; show routine has been init'ed
clock1 lda #"#" ; use "&" mode (24 hour)
clock2 jsr $c00b ; modified ($c40b)
clock3 jsr $c008 ; modified ($c408)
ldy #0
clock4 lda lnbuf+9,y ; get time from input buffer
sta timestr,y
iny
cpy #8
bne clock4
lda #":" ; put colens back into string
sta timestr+2
sta timestr+5
lda #' '
sta timestr+9 ; make sure that the am/pm is reset
sta timestr+10
rts
* convert time to 12 hour format
*-------------------------------
convert lda timestr ;convert to 12 hour
ldx timestr+1
and #$0f
tay
txa
and #$0f
dey
bmi conv2
clc
adc #10
dey
bmi conv2
adc #10
conv2 cmp #12
bne conv2a
lda #24
conv2a tay
bne conv3
lda #12
conv3 ldx #'A'
cmp #13
bcc conv4
sbc #12
ldx #'P'
conv4 ldy #'0'
conv5 cmp #10
bcc conv6
sbc #10
iny
bne conv5
conv6 ora #'0'
sta timestr+1
sty timestr
stx timestr+9
ldx #'M'
stx timestr+10
rts
* data area
*-------------------------
initbyt hex 00
timestr asc '00:00:00 ',00

View File

@ -1 +1,148 @@
зрам уЛТРА Ё ХОУР дАТЕ рЕЖИСЕД ЁЛСТОФФРЕЛДСКРЕЛУЛТРАУЛТРАЕНТОРГДГЕТъТИМЕЕЯУМЛИЕЯУБФДАТЕЕЯУБФДБМОДЕДБЙМПГЕТДАТЕЙМПГЕТТИМЕЙМПСЕТДАТЕ ГЕТ ТХЕ ДАТЕ ИН ПРОДОС ГББС ФОРМАТГЕТДАТЕЙСРМЛИ МЛИ ЦАЛЛДБГЕТъТИМЕХЕЬ НО ПРАМАТЕР ТАБЛЕЛДЬДАТЕЛДАДАТЕСЕТДАТЕРТС ГЕТ ТХЕ ЦУРРЕНТ ТИМЕГЕТТИМЕЙСРРДТИМЕБИТМОДЕБПЛГТИМЕЙСРЦОНЖЕРТГТИМЕЛДЬёТИМЕСТР ПОИНТ ТО СТРИНГЛДАёТИМЕСТРРТС РЕАД ТХЕ ЦУРРЕНТ ТИМЕ ФРОМ ЦЛОЦКРДТИМЕЛДАёЦХОЛДЦЛКЛДАёСТАЦДСТАЦДСТАЦДЛДЫёЁЛООПЛДАЦДАНДёБЕЯРЕАДТИМЕДЕЫБНЕЛООПЛДАёСТАЦДСТАЦДСТАЦДБНЕХОЛДЦЛКРЕАДТИМЕЛДАЦ С ОФ ХОУРАНДёОРАёЁСТАТИМЕСТРЛДАЦ С ОФ ХОУРАНДёОРАёЁСТАТИМЕСТРЛДАЦЁ С ОФ МИНУТЕАНДёОРАёЁСТАТИМЕСТРЁЛДАЦ С ОФ МИНУТЕАНДёОРАёЁСТАТИМЕСТРЛДАЦ С ОФ СЕЦОНДСАНДёОРАёЁСТАТИМЕСТРЛДАЦ С ОФ СЕЦОНДСАНДёОРАёЁСТАТИМЕСТРЛДАёСТАЦДСТАЦД РЕЛЕАСЕ ХОЛД БИТСТАЦДРТС ЦОНЖЕРТ ТИМЕ ТО ХР ФОРМАТЦОНЖЕРТЛДАТИМЕСТРЦОНЖЕРТ ТО ХОУРЛДЬТИМЕСТРАНДёФТАЫТЬААНДёФДЕЫБМИЦОНЖЦЛЦАДЦёДЕЫБМИЦОНЖАДЦёЦОНЖЦМПёБНЕЦОНЖАЛДАёЦОНЖАТАЫБНЕЦОНЖЁЛДАёЦОНЖЁЛДЬёаЦМПёЁБЦЦЦОНЖСБЦёЛДЬёпЦОНЖЛДЫёЦОНЖЦМПёБЦЦЦОНЖСБЦёИНЫБНЕЦОНЖЦОНЖОРАёСТАТИМЕСТРСТЫТИМЕСТРСТЬТИМЕСТРЛДЬёмСТЬТИМЕСТРРТС ЖАРИАБЛЕСТИМЕСТРАСЦ
*-------------------------------
* Z-RAM Ultra 2-3 - 12 hour
*-------------------------------
* Date Revised: 01/30/90
*-------------------------------
lst off
rel
dsk rel/ultra
ultra ent
org $0d00
*-------------------------------
get_time equ $82
mli equ $bf00
date equ $bf90
db 00
mode db 0
jmp getdate
jmp gettime
jmp setdate
* get the date in prodos gbbs format
*-------------------------------
getdate jsr mli ; mli call
db get_time
hex 0000 ; no pramater table
ldx date
lda date+1
setdate rts
* get the current time
*-------------------------------
gettime jsr rdtime
bit mode
bpl gtime1
jsr convert
gtime1 ldx #<timestr ; point to string
lda #>timestr
rts
* read the current time from clock
*-------------------------------
rdtime lda #$c060
holdclk lda #%00000101
sta $c06d
sta $c06d
sta $c06d
ldy #30
loop lda $c06d
and #%00000010
beq readtime
dey
bne loop
lda #%00000100
sta $c06d
sta $c06d
sta $c06d
bne holdclk
readtime lda $c065 ; 10's of hour
and #%00000011
ora #$30
sta timestr
lda $c064 ; 1's of hour
and #%00001111
ora #$30
sta timestr+1
lda $c063 ; 10's of minute
and #%00000111
ora #$30
sta timestr+3
lda $c062 ; 1's of minute
and #%00001111
ora #$30
sta timestr+4
lda $c061 ; 10's of seconds
and #%00000111
ora #30
sta timestr+6
lda $c060 ; 1's of seconds
and #%00001111
ora #$30
sta timestr+7
lda #%00000100
sta $c06d
sta $c06d ; release hold bit
sta $c06d
rts
* convert time to 12hr format
*----------------------------
convert lda timestr ;convert to 12 hour
ldx timestr+1
and #$0f
tay
txa
and #$0f
dey
bmi conv2
clc
adc #10
dey
bmi conv2
adc #10
conv2 cmp #12
bne conv2a
lda #24
conv2a tay
bne conv3
lda #12
conv3 ldx #'A'
cmp #13
bcc conv4
sbc #12
ldx #'P'
conv4 ldy #'0'
conv5 cmp #10
bcc conv6
sbc #10
iny
bne conv5
conv6 ora #'0'
sta timestr+1
sty timestr
stx timestr+9
ldx #'M'
stx timestr+10
rts
* variables
*-------------------------------
timestr asc '00:00:00 ',00

View File

@ -1 +1,175 @@
<EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD> Πςονετθυσ Φεςσαγαςδ Δςιφες<EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD> <EFBFBD>εφισεδ ΔατεΊ °Έ°²Έ·<EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD> μστ οζζ<EFBFBD><EFBFBD> ςεμ<EFBFBD> δσλ ςεμφεςσα<EFBFBD><EFBFBD>φεςσα εξτ<EFBFBD><EFBFBD> οςη ¤°δ°°<EFBFBD><EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD>ηετίτινε ερυ ¤Έ²<EFBFBD>νμι ερυ ¤βζ°°<EFBFBD>δατε ερυ ¤βζΉ°<EFBFBD><EFBFBD>σμοτ θεψ ΄°<EFBFBD>νοδε δβ °<EFBFBD><EFBFBD> κνπ ηετδατε<EFBFBD> κνπ ηεττινε<EFBFBD> κνπ σετδατε<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ηετ τθε δατε ιξ πςοδοσ ηββσ ζοςνατ<EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD>ηετδατε κσς νμι » νμι γαμμ<EFBFBD> δβ ηετίτινε<EFBFBD> θεψ °°°° » ξο πςανατες ταβμε<EFBFBD><EFBFBD> μδψ δατε<EFBFBD> μδα δατε«±<EFBFBD>σετδατε ςτσ<EFBFBD><EFBFBD><EFBFBD> ηετ τθε γυςςεξτ τινε<EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD>ηεττινε κσς ςδτινε<EFBFBD> βιτ νοδε<EFBFBD> βπμ ητινε±<EFBFBD> κσς γοξφεςτ<EFBFBD><EFBFBD>ητινε± μδψ £Ότινεστς » ποιξτ το στςιξη<EFBFBD> μδα £Ύτινεστς<EFBFBD> ςτσ<EFBFBD><EFBFBD><EFBFBD> ζιηυςε τθε γυςςεξτ τινε<EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD>ςδτινε κσς ςδγμογλ<EFBFBD> μδα τινεστς<EFBFBD> πθα  » ζιψ θους ¨ςενοφε© ανπν ιξζο©<EFBFBD> αξδ £¥°°±±°°±±<EFBFBD> στα τινεστς<EFBFBD> πμα<EFBFBD><EFBFBD> μσς<EFBFBD> μσς<EFBFBD> μσς  » νοφε ανπν βιτ ιξτο γαςςω<EFBFBD> βγγ ηεττιν² » ιτ ισ αν ¨δεζαυμτ©<EFBFBD><EFBFBD> μδα £§Π§ » γθαξηε το πν<EFBFBD> στα τινεστς«Ή<EFBFBD><EFBFBD>ηεττιν² μσς  » νοφε ±²²΄ θους βιτ ιξτο γαςςω<EFBFBD> βγγ ηεττιν³ » ιξ ±² θους νοδε¬ αμμ ισ χεμμ<EFBFBD><EFBFBD> μδα £§ § » ιξ ²΄ θους νοδε λιμμ ανπν<EFBFBD> στα τινεστς«Ή<EFBFBD> στα τινεστς«±°<EFBFBD><EFBFBD>ηεττιν³ ςτσ<EFBFBD><EFBFBD><EFBFBD> ςεαδ τθε δατε ζςον γμογλ<EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD>ςδγμογλ μδψ £°<EFBFBD> μδω σμοτ » ηετ σμοτ οζζσετ<EFBFBD>ςδγμλ² μδα γμλπαςν¬ψ » ηετ ζυξγτιοξ<EFBFBD> βερ ςδγμλ΄<EFBFBD> βνι ςδγμλ³ » κυστ ασγιι δατα<EFBFBD><EFBFBD> αξδ £¥°°±±±±±± » λιμμ θιηθ στατυσ ιξζο<EFBFBD> στα ¤γ°Έ²¬ω » ποιξτ το δατα<EFBFBD><EFBFBD> μδα ¤γ°Έ³¬ω » μοαδ ιξ δατα<EFBFBD> αξδ £¥°°°°±±±± » ηετ ςιδ οζ εψτςα<EFBFBD> οςα £§°§ » ναλε ιξτο ξυνεςιγ διηιτ<EFBFBD>ςδγμλ³ αξδ £¤·ζ » λιμμ θιηθ ¨ζςον ασγιι©<EFBFBD> στα τινεστς¬ψ<EFBFBD> ιξψ<EFBFBD> κνπ ςδγμλ² » ηο υξτιμ ουτ οζ δατα<EFBFBD>ςδγμλ΄ ςτσ<EFBFBD><EFBFBD><EFBFBD> γοξφεςτ τινε το ±²θς ζοςνατ<EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD>γοξφεςτ μδα τινεστς »γοξφεςτ το ±² θους<EFBFBD> μδψ τινεστς«±<EFBFBD><EFBFBD> αξδ £¤°ζ<EFBFBD> ταω<EFBFBD> τψα<EFBFBD> αξδ £¤°ζ<EFBFBD><EFBFBD> δεω<EFBFBD> βνι γοξφ²<EFBFBD> γμγ<EFBFBD> αδγ £±°<EFBFBD> δεω<EFBFBD> βνι γοξφ²<EFBFBD> αδγ £±°<EFBFBD><EFBFBD>γοξφ² γνπ £±²<EFBFBD> βξε γοξφ²α<EFBFBD> μδα £²΄<EFBFBD>γοξφ²α ταω<EFBFBD> βξε γοξφ³<EFBFBD> μδα £±²<EFBFBD><EFBFBD>γοξφ³ μδψ £§Α§<EFBFBD> γνπ £±³<EFBFBD> βγγ γοξφ΄<EFBFBD><EFBFBD> σβγ £±²<EFBFBD> μδψ £§Π§<EFBFBD><EFBFBD>γοξφ΄ μδω £§°§<EFBFBD>γοξφµ γνπ £±°<EFBFBD> βγγ γοξφ<EFBFBD><EFBFBD> σβγ £±°<EFBFBD> ιξω<EFBFBD> βξε γοξφµ<EFBFBD><EFBFBD>γοξφ οςα £§°§<EFBFBD> στα τινεστς«±<EFBFBD> στω τινεστς<EFBFBD> στψ τινεστς«Ή<EFBFBD> μδψ £§Ν§<EFBFBD> στψ τινεστς«±°<EFBFBD> ςτσ<EFBFBD><EFBFBD><EFBFBD> γοξφεςτ α ² βωτε δεγιναμ ξυνβες το βιξαςω<EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD>δεγβιξΈ αξδ £¤·ζ<EFBFBD> σεγ<EFBFBD> σβγ £§°§<EFBFBD> στα δεγβωτε » σαφε ±°§σ διηιτ<EFBFBD> τψα  » νοφε ±§σ ιξτο Α<EFBFBD> αξδ £¤·ζ<EFBFBD> σεγ<EFBFBD> σβγ £§°§<EFBFBD><EFBFBD> μδω £±°<EFBFBD>δεγΈα γμγ<EFBFBD> αδγ δεγβωτε » αδδ τθε ±°§σ διηιτ¬ ±° τινεσ<EFBFBD> δεω<EFBFBD> βξε δεγΈα<EFBFBD> ςτσ  » ςετυςξ χιτθ ςεσυμτ<EFBFBD><EFBFBD>δεγβωτε θεψ °°<EFBFBD><EFBFBD><EFBFBD> φαςιαβμεσ<EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD>τινεστς ασγ §°°Ί°°Ί°° ΑΝ§¬°°<EFBFBD><EFBFBD>γμλπαςν θεψ ±µ±΄<EFBFBD> ασγ ΆΊΆ<EFBFBD> θεψ ±³±²<EFBFBD> ασγ ΆΊΆ<EFBFBD> θεψ ±±±°<EFBFBD> ασγ Ά ΑΝΆ<EFBFBD> θεψ °°<EFBFBD>
*-------------------------------
* Promethus Versacard Driver
*-------------------------------
* Revised Date: 08/02/87
*-------------------------------
lst off
rel
dsk rel/versa
versa ent
org $0d00
*-------------------------------
get_time equ $82
mli equ $bf00
date equ $bf90
slot hex 40
mode db 0
jmp getdate
jmp gettime
jmp setdate
* get the date in prodos gbbs format
*-------------------------------
getdate jsr mli ; mli call
db get_time
hex 0000 ; no pramater table
ldx date
lda date+1
setdate rts
* get the current time
*-------------------------------
gettime jsr rdtime
bit mode
bpl gtime1
jsr convert
gtime1 ldx #<timestr ; point to string
lda #>timestr
rts
* figure the current time
*-------------------------------
rdtime jsr rdclock
lda timestr
pha ; fix hour (remove) am/pm info)
and #%00110011
sta timestr
pla
lsr
lsr
lsr ; move am/pm bit into carry
bcc gettim2 ; it is am (default)
lda #'P' ; change to pm
sta timestr+9
gettim2 lsr ; move 12/24 hour bit into carry
bcc gettim3 ; in 12 hour mode, all is well
lda #' ' ; in 24 hour mode kill am/pm
sta timestr+9
sta timestr+10
gettim3 rts
* read the date from clock
*----------------------------
rdclock ldx #0
ldy slot ; get slot offset
rdclk2 lda clkparm,x ; get function
beq rdclk4
bmi rdclk3 ; just ascii data
and #%00111111 ; kill high status info
sta $c082,y ; point to data
lda $c083,y ; load in data
and #%00001111 ; get rid of extra
ora #'0' ; make into numeric digit
rdclk3 and #$7f ; kill high (from ascii)
sta timestr,x
inx
jmp rdclk2 ; go until out of data
rdclk4 rts
* convert time to 12hr format
*--------------------------------
convert lda timestr ;convert to 12 hour
ldx timestr+1
and #$0f
tay
txa
and #$0f
dey
bmi conv2
clc
adc #10
dey
bmi conv2
adc #10
conv2 cmp #12
bne conv2a
lda #24
conv2a tay
bne conv3
lda #12
conv3 ldx #'A'
cmp #13
bcc conv4
sbc #12
ldx #'P'
conv4 ldy #'0'
conv5 cmp #10
bcc conv6
sbc #10
iny
bne conv5
conv6 ora #'0'
sta timestr+1
sty timestr
stx timestr+9
ldx #'M'
stx timestr+10
rts
* convert a 2 byte decimal number to binary
*--------------------------------
decbin8 and #$7f
sec
sbc #'0'
sta decbyte ; save 10's digit
txa ; move 1's into A
and #$7f
sec
sbc #'0'
ldy #10
dec8a clc
adc decbyte ; add the 10's digit, 10 times
dey
bne dec8a
rts ; return with result
decbyte hex 00
* variables
*-------------------------
timestr asc '00:00:00 AM',00
clkparm hex 1514
asc ":"
hex 1312
asc ":"
hex 1110
asc " AM"
hex 00

View File

@ -1 +1,29 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> ΗΒΒΣ Πςο ­ Γοξζιη Πςοηςαν <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Δατε<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ςεμ<EFBFBD> δσλ ςεμγοξζιη<EFBFBD><EFBFBD> μστ οζζ<EFBFBD> πυτ ερυατεσ<EFBFBD> πυτ σταςτ<EFBFBD> πυτ ςουτιξε<EFBFBD> πυτ δισλ<EFBFBD> πυτ πδισλιο<EFBFBD> πυτ οσπκυξλ<EFBFBD> πυτ φιδδφς<EFBFBD> πυτ νοδεν<EFBFBD> πυτ φιδεο<EFBFBD> πυτ γμογλ<EFBFBD> πυτ πςιξτες<EFBFBD> πυτ ιξιτ<EFBFBD> πυτ πζιμτες<EFBFBD> πυτ πστος<EFBFBD> πυτ βοαςδεδιτ<EFBFBD> πυτ υσες<EFBFBD> πυτ υσεςπυςηε<EFBFBD>
********************************
* *
* GBBS Pro - Config Program *
* *
********************************
Date
********************************
rel
dsk rel/config
lst off
put equates
put start
put routine
put disk
put pdiskio
put ospjunk
put viddvr
put modem
put video
put clock
put printer
put init
put pfilter
put pstor
put boardedit
put user
put userpurge

View File

@ -1 +1,103 @@
<EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD> Δισλ στυζζ ζος γοξζιη<EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD> ΔατεΊ ³±±ΈΈ<EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD> ςεαδ ιξ α παςτιαμ ςεγοςδ Ϋ±­²µµ βωτεσέ<EFBFBD><EFBFBD>ςδπαςτ στψ παςτ<EFBFBD> στα παςτ«± » ποιξτ το βυζζες<EFBFBD> τωα<EFBFBD> ταψ  » σαφε γουξτες<EFBFBD><EFBFBD> μδω £°<EFBFBD>Ίμοοπ κσς ςδβωτε » ςεαδ ιξ δατα<EFBFBD> βγσ Ίεςςος » εςςος<EFBFBD><EFBFBD> στα ¨παςτ©¬ω<EFBFBD> ιξω<EFBFBD> δεψ<EFBFBD> βξε Ίμοοπ » δο ξεψτ βωτε<EFBFBD><EFBFBD> γμγ  » αμμ χεξτ χεμμ<EFBFBD>Ίεςςος ςτσ<EFBFBD><EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD> χςιτε α παςτιαμ βμογλ οζ δατα το δισλ<EFBFBD><EFBFBD>χςπαςτ στψ παςτ » ποιξτ το δατα<EFBFBD> στα παςτ«±<EFBFBD> τωα<EFBFBD> ταψ  » σαφε μεξητθ<EFBFBD><EFBFBD> μδω £°<EFBFBD>Ίμοοπ μδα ¨παςτ©¬ω » χςιτε ουτ δατα<EFBFBD> κσς χςβωτε<EFBFBD> ιξω<EFBFBD> δεψ<EFBFBD> βξε Ίμοοπ » δο ξεψτ βωτε<EFBFBD><EFBFBD> ςτσ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD> φεςιζω α τθατ α δισλ ισ οξμιξε<EFBFBD><EFBFBD>φεςιζω στψ φεςιζωίπ«± » ποιξτ το χαξτεδ πατθ<EFBFBD> στα φεςιζωίπ«²<EFBFBD><EFBFBD> κσς νμι<EFBFBD> δβ ¤γ » σετ πςεζιψ<EFBFBD> δχ φεςιζωίπ<EFBFBD> βγσ Ίεςςος<EFBFBD><EFBFBD> κσς νμι »ηετ πςεζιψ ζος σουςγε φομυνε<EFBFBD> δβ ¤γ· »ηετ πςεζιψ<EFBFBD> δχ πίπζψ² »ποιξτ το πατθ<EFBFBD>Ίεςςος ςτσ<EFBFBD><EFBFBD>φεςιζωίπ δβ ±<EFBFBD> δχ ° »αδδςεσσ οζ πατθ το σετ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD> μοαδ γοξζιηαγοσ®οβκ ζςον δισλ<EFBFBD><EFBFBD>μδαγοσ κσς μοηπςη » μοη το τθε πςοηςαν δισλ<EFBFBD> μδψ £Όηξανε<EFBFBD> μδα £Ύηξανε<EFBFBD> κσς νοφξανε » νοφε ζιμεξανε<EFBFBD> κσς οπεξ » οπεξ §αγοσ®οβκ§<EFBFBD> βγσ Ίεςςος » εςςος<EFBFBD><EFBFBD> μδψ £Όγοξζβυζ » μοαδ γοξζιη παςτ ιξτο βυζζες<EFBFBD> μδα £Ύγοξζβυζ<EFBFBD> μδω £²° » ςεαδ ±° παηεσ ¨µ βμογλσ©<EFBFBD> κσς ςδβμλ<EFBFBD> κσς γμοσε » γμοσε ζιμε<EFBFBD> γμγ<EFBFBD>Ίεςςος ςτσ<EFBFBD><EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD> χςιτε γοξζιηαγοσ®οβκ βαγλ το δισλ<EFBFBD><EFBFBD>σφαγοσ κσς μοηπςη » μοη το πςοηςαν δισλ<EFBFBD> μδψ £Όηξανε<EFBFBD> μδα £Ύηξανε<EFBFBD> κσς νοφξανε » νοφε ζιμεξανε<EFBFBD> κσς οπεξ<EFBFBD> βγσ Ίεςςος<EFBFBD><EFBFBD> μδψ £Όγοξζβυζ » χςιτε γοξζιη βαγλ το δισλ<EFBFBD> μδα £Ύγοξζβυζ<EFBFBD> μδω £²°<EFBFBD> κσς χςβμλ » χςιτε ±° παηεσ ¨µ βμογλσ©<EFBFBD> κσς γμοσε<EFBFBD> γμγ<EFBFBD>Ίεςςος ςτσ<EFBFBD><EFBFBD>ςεζξυν δβ °<EFBFBD><EFBFBD><EFBFBD>
*-------------------------------
* Disk stuff for config
*-------------------------------
* Date: 3/11/88
*-------------------------------
*-------------------------------
* read in a partial record [1-255 bytes]
rdpart stx part
sta part+1 ; point to buffer
tya
tax ; save counter
ldy #0
:loop jsr rdbyte ; read in data
bcs :error ; error
sta (part),y
iny
dex
bne :loop ; do next byte
clc ; all went well
:error rts
*-------------------------------
* write a partial block of data to disk
wrpart stx part ; point to data
sta part+1
tya
tax ; save length
ldy #0
:loop lda (part),y ; write out data
jsr wrbyte
iny
dex
bne :loop ; do next byte
rts
*-------------------------------
* verify a that a disk is online
verify stx verify_p+1 ; point to wanted path
sta verify_p+2
jsr mli
db $c6 ; set prefix
dw verify_p
bcs :error
jsr mli ;get prefix for source volume
db $c7 ;get prefix
dw p_pfx2 ;point to path
:error rts
verify_p db 1
dw 0 ;address of path to set
*-------------------------------
* load config/acos.obj from disk
ldacos jsr logprg ; log to the program disk
ldx #<gname
lda #>gname
jsr movname ; move filename
jsr open ; open 'acos.obj'
bcs :error ; error
ldx #<confbuf ; load config part into buffer
lda #>confbuf
ldy #20 ; read 10 pages (5 blocks)
jsr rdblk
jsr close ; close file
clc
:error rts
*-------------------------------
* write config/acos.obj back to disk
svacos jsr logprg ; log to program disk
ldx #<gname
lda #>gname
jsr movname ; move filename
jsr open
bcs :error
ldx #<confbuf ; write config back to disk
lda #>confbuf
ldy #20
jsr wrblk ; write 10 pages (5 blocks)
jsr close
clc
:error rts
refnum db 0

View File

@ -1 +1,82 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD>便驿<EFBFBD>便<EFBFBD> <EFBFBD> 秿<EFBFBD><EFBFBD> 秿<EFBFBD>驿<EFBFBD>
********************************
* *
* Config Program - Equates *
* *
********************************
*-------------------------------
* Date: 3/11/88
*-------------------------------
bs equ $08
lf equ $0a
up equ $0b
cr equ $0d
fs equ $15
can equ $18
esc equ $1b
del equ $7f
; memory allocation / buffers
lnbuf equ $0200
flname equ $0300
fltext equ $0301
reset equ $03f2
confbuf equ $0800
filter equ $0805
devnam equ $0815
viddrv equ $0900
prdrv equ $0c00
clkdrv equ $0d00
mdmdrv equ $0e00
cdbyte equ $11bf
ansstr equ $11c0
initstr equ $11d0
hdrbuf equ $1200
cdtype equ $1ffd
modemtype equ $1ffe
serialtype equ $1fff
mli equ $bf00
initbuf equ $1800
ansbuf equ $1830
fbuf1 equ $1c00
fnam1 equ $1e00
sortbuf equ $8000
copybuf equ $6000
copymax equ $5800
; zero page usage
temp equ $00
temp2 equ $02
temp3 equ $04
temp4 equ $06
x_save equ $09
y_save equ $0a
chrptr equ $0b
base equ $0d
maxlen equ $0f
inverse equ $10
point0 equ $11
point1 equ $14
prn equ $16 ; [4 bytes]
numptr equ $1a
psave equ $1c
prnt equ $1e
ch equ $24
cv equ $25
fmparm equ $60
doszero equ $62
dosptr equ $64
part equ $66
dosbyt equ $68
point3 equ $fd

View File

@ -263,8 +263,8 @@ hard1 ldx #<einit3
jsr cls
jsr print
asc 'Please enter the slot and drive of your'0d
asc 'mass storage device. If your media is',0d
asc 'removable, then please make sure there'0d
asc 'mass storage device. If your media is',0d
asc 'removable, then please make sure there'0d
asc 'is formatted media in place.',0d,0d,0d
asc ' Slot? [1-7] ',00
ldx #7
@ -288,12 +288,11 @@ hard1 ldx #<einit3
jsr cls
jsr print
asc 'If you continue, a subdirectory',0d
asc 'GBBS.PRO will be created on your',0d
asc 'mass storage device. All needed',0d
asc 'files will be copied into this',0d
asc 'subdirectory. No existing files',0d
asc 'will be destroyed.'00
asc 'If you continue, a directory GBBS.PRO',0d
asc 'will be created on your mass storage',0d
asc 'device. All needed files will be copied',0d
asc 'into this folder. Existing files will',0d
asc 'not be destroyed.',00
jsr getcr
lda #0 ; no more turning away..
@ -306,19 +305,18 @@ hard1 ldx #<einit3
:nospace jsr cls
jsr print
asc 'The storage device checked does not'0d
asc 'contain enough storage space to run',0d
asc 'the system. You need to make some'0d
asc 'more room on the device, or choose',0d
asc 'another device.',00
asc "The storage device checked doesn't have",0d
asc 'enough free storage space to run the',0d
asc 'system. You need to make some more room'0d
asc 'on the device, or choose another device.',00
jsr getcr
jmp hard1 ; goto hard/floppy question
hard2 jsr cls
jsr print
asc 'The configuration program is now going'0d
asc 'to copy all the files needed to run',0d
asc 'The configuration program is now going'0d
asc 'to copy all the files necessary to run',0d
asc 'GBBS Pro onto your mass storage device.',00
jsr getg ; get permission
@ -359,10 +357,10 @@ hard2 jsr cls
jsr cls
jsr print
asc 'Your system is now configured and is'0d
asc 'ready to run. To bring up your system',0d
asc 'Your system is now configured and is'0d
asc 'ready to run. To bring up your system',0d
asc 'for operation, do the following:',0d,0d
asc 'Boot up your mass storage device and'0d
asc 'Boot up your mass storage device and'0d
asc 'type "PREFIX GBBS.PRO/PROGRAM".',0d,0d
asc 'Type "-ACOS" to start your system.',00

View File

@ -1 +1,39 @@
𥔱𩤃<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>𡵆<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𡵆<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𡵆<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𡵆<EFBFBD>
lst off
rel
dsk rel/initstr
*-------------------------------
* init strings for modems
usr2400 ent
asc 'ATX2S0=1S2=128E0V0F1Q0',0d,00
usr9600 ent
asc 'ATX4&S1&B2V0S0=1S2=128E0F1Q0',0d,00
apl1200 ent
asc 'ATX1S0=1S2=128V0',0D,00
hayes1200 ent
asc 'ATS0=1S2=128S18=0V0',0D,00
hayes2400 ent
asc 'ATX3S0=1&C1&D2S2=128V0',0D,00
pro2400 ent
asc 'ATX5S0=1S2=128V0',0D,00
generic ent
asc 'ATS0=1S2=128V0',0D,00
epic ent
asc 'ATS0=1S2=128&C1&D2V0&S1',0D,00
hayes9600 ent
asc 'ATS0=1S2=128&C1&D2&S1&K0V0E0W0',0D,00
datalink24 ent
asc 'ATS0=1S2=128&C1&D2&S1V0',0d,00
ultra9600 ent
asc 'ATS0=1S2=128S95=44S35=5&C1&D2&S0&K3EVM',0d,00

File diff suppressed because one or more lines are too long

View File

@ -1 +1,265 @@
иНТЕРНАЛ аППЛЕ цАТ Ё дАТЕ Ё аенЛСТОФФРЕЛДСКРЕЛЦАТЁСВБЫТеяуЦСХБЫТеяуЦИНДАТАеяуЦБСПДБЫТеяуЦБАЦБЫТЕеяуЦДЬМТБЫТеяуЦДОУТДАТеяуЦЕСТАТУСеяуЦФЦАТЁЕНТОРГЕ ЙУМП ТАБЛЕСЛОТДФБСЕРИАЛ ЦАРД СЛОТИНИТСПДДФБИНИТИАЛИЗЕ СПЕЕДЦАЛЛСПДДФБСПЕЕД ОФ ЦАЛЛБЫТЦНТДФБймпИНИТймпРИНГСЕТймпРИНГймпАНСВЕРймпХАНГУПймпИНПймпОУТймпЦХКДЦДЙМПСЕТСПДЙМПДУММЫРАИСЕ ДТРЙМПДУММЫЦЛЕАР БУФФЕРЙМПДУММЫЯУИТДУММЫРТС ИНИТ ТХЕ МОДЕМ ЦАРДИНИТсеилдьСЛОТГЕТ СЛОТ ОФФСЕТлдыёИНИТлдаИНИТБЫТЫИНИТ АЛЛ БЫТЕСстаЦЬиньиныцпыёбнеИНИТртс СЕТУП ФОР ТХЕ ЦАЛЛРИНГСЕТлдаёРЕСЕТ ТИМЕОНстаБЫТЦНТстаБЫТЦНТстаБЫТЦНТстаЦАРВАИТРЕСЕТ ВАИТ ФЛАГтаыСЕТЁ БАУДймпСЕТСПД СЦАН ФОР ТХЕ РИНГ АНД ХАНДЛЕ ИТРИНГлдьСЛОТГЕТ ОФФСЕТбитЦАРВАИТДО ТХЕЫ ВАНТ МАНУАЛАНСВЕР©бмиРИНГАЫЕПлдаАЦБЫТЕЬандёбеяРИНГНОТХИНГРИНГлдаАЦБЫТЕЬВАИТ ФОР РИНГ ТО ЦЛЕАРандёбнеРИНГРИНГАлдаёПИЦК УП ПХОНЕстаСХБЫТЬлдаёСЕТУП ЦАРРИЕР ВАИТ ТИМЕстаЦАРВАИТлдаёВАИТ ФОР ТХИНГС ТО СЕТТЛЕйсрВАИТРИНГЁлдаёДО БИГ ВАИТйсрВАИТлдаСВБЫТЬДО ВЕ ХАЖЕ ЦАРРИЕР©андёбнеРИНГЫЕПдецЦАРВАИТЛООП УНТИЛ ЦОУНТ ИС ДОНЕбнеРИНГЁйсрХАНГУПРИНГцлцНОТХИНГ ХАППЕНЕДртсРИНГлдаёРЕСЕТ ЦАРРИЕР ТИМИНГстаЦАРВАИТсецртс СЕНД АТААНСВЕРлдаёСИГНАЛ ВЕ ВАНТ МАНУАЛАНСВЕРстаЦАРВАИТртс ХАНГУП ПХОНЕХАНГУПлдьСЛОТГЕТ ОФФСЕТлдаёстаСХБЫТЬХАНГ УП ПХОНЕртс ИНПУТ ДАТАИНПстьСАЖЕъЬСАЖЕ ьлдьСЛОТГЕТ ОФФСЕТлдаСТАТУСЬГЕТ СТАТУСандёцлцбеяИНПНО ДАТАлдаёРЕСЕТ ЦХАР РЕАДЫ БЫТЕстаЬМТБЫТЬлдаИНДАТАЬГЕТ ДАТАсецИНПлдьСАЖЕъЬРЕСТОРЕ РЕТУРНртс ОУТПУТ ДАТАОУТстьСАЖЕъЬСАЖЕ ЬдецТИМЕЦНТЦОУНТ ДОВН БЫТЕС ПЕР СЕЦОНДбнеОУТНОТ А СЕЦОНДС ВОРТХ ЫЕТпхалдаЦАЛЛСПДРЕСЕТ ЦОУНТЕРасласласлТИМЕ ЦОУНТ БАСЕРАТЕ ЁасласлстаТИМЕЦНТплаинцБЫТЦНТСЕЦОНДС АТ ЫЕТ©битБЫТЦНТбжцОУТНОПЕлдьёРЕСЕТ СЕЦОНДСстьБЫТЦНТинцБЫТЦНТМИНУТЕС АТ ЫЕТ©битБЫТЦНТбжцОУТНОПЕлдьёРЕСЕТ МИНУТЕСстьБЫТЦНТинцБЫТЦНТИНЦ ХОУРСОУТлдьСЛОТпхаОУТлдаСТАТУСЬЦХЕЦК СТАТУСандёбеяОУТЛООП УНТИЛ РЕАДЫпластаОУТДАТЬОУТПУТ БЫТЕлдьСАЖЕъЬртс ЦХЕЦК ФОР ЦАРРИЕРЦХКДЦДстьСАЖЕъЬДОНТ КИЛЛ АНЫ РЕГСпхалдаЦАРВАИТДО ВЕ ХАЖЕ ЦАРРИЕР©беяЦХКДЦДЁНОПЕлдьСЛОТлдаСВБЫТЬЦХЕЦК ЦАРРИЕРандёбеяЦХКДЦДНО ЦАРРИЕРлдаёБУФФЕР ЦАРРИЕР ДЕТЕЦТстаЦАРВАИТсецбцсЦХКДЦДУСЕ РЕТУРН РОУТИНЕЦХКДЦДдецЦАРВАИТЦОУНТ ДОВНЦХКДЦДЁцлцЦХКДЦДплаРЕСТОРЕ АЛЛ РЕТУРНлдьСАЖЕъЬртс СЕТ ТХЕ РСЁ СПЕЕДСЕТСПДстьСАЖЕъЬлдьСЛОТГЕТ ОФФСЕТлдаСПЕЕДЫГЕТ СПЕЕДстаСПДБЫТЬСЕТ СПЕЕДлдаёФИНД ЦАЛЛЕР СПЕЕД ЬЁстаЦАЛЛСПДцпыёАТ Ё©беяСЕТСПДЁЫЕПаслЦАЛЛСПДСПЕЕД СПЕЕД СЕТСПДаслЦАЛЛСПДСПЕЕД СПЕЕД деыбнеСЕТСПДЛООП УНТИЛ ЦОРРЕЦТ СПЕЕД ФОУНДСЕТСПДЁлдьСАЖЕъЬРЕСТОРЕ РЕТУРНртс ВАИТ РОУТИНЕВАИТсецФРОМ АППЛЕ ш РЕФ МАН ПГ щВАИТпхаВАИТЁсбцёбнеВАИТЁпласбцёбнеВАИТртс ЖАРИАБЛЕССПЕЕДДФБХАНДЛЕ Ё САЖЕъЬДФБТИМЕЦНТДФБЦАРВАИТДФБИНИТБЫТДФБДФБАСЦцАТЁ
*--------------------------
* Internal - Apple Cat 103
*--------------------------
* Date 3/18/88 - AEN
*--------------------------
lst off
rel
dsk rel/cat103
swbyt EQU $c080
shbyt EQU $c082
indata EQU $c08b
spdbyt EQU $c08b
acbyte EQU $c08d
xmtbyt EQU $c08d
outdat EQU $c08e
status1 EQU $c08f
cat103 ent
org $e00
*-------------------------------
* jump table
slot dfb $20 ;serial card slot
initspd dfb 0 ;initialize speed
callspd dfb 0 ;speed of call
bytcnt dfb 0,0,0
JMP init
JMP ringset
JMP ring
JMP answer
JMP hangup
JMP inp
JMP out
JMP chkdcd
jmp setspd
jmp dummy ;raise dtr
jmp dummy ;clear buffer
jmp dummy ;quit
dummy rts
*-------------------------------
* init the modem card
init SEI
LDX slot ;get slot offset
LDY #0
init2 LDA initbyt,y ;init all 16 bytes
STA $c080,x
INX
INY
CPY #$10
BNE init2
RTS
*-------------------------------
* setup for the call
ringset LDA #0 ;reset time-on
STA bytcnt
STA bytcnt+1
STA bytcnt+2
STA carwait ;reset wait flag
TAY set ;300 baud
JMP setspd
*-------------------------------
* scan for the ring and handle it
ring LDX slot ;get offset
BIT carwait ;do they want manual-answer?
BMI ring2a ;yep
LDA acbyte,x
AND #%00000001
BEQ ring4 ;nothing
ring2 LDA acbyte,x ;wait for ring to clear
AND #%00000001
BNE ring2
ring2a LDA #%00000010 ;pick up phone
STA shbyt,x
LDA #80 ;setup carrier wait time
STA carwait
LDA #60 ;wait for things to settle
JSR wait
ring3 LDA #0 ;do big wait...
JSR wait
LDA swbyt,x ;do we have carrier?
AND #%00100000
BNE ring5 ;yep
DEC carwait ;loop until count is done
BNE ring3
JSR hangup
ring4 CLC ;nothing happened
RTS
ring5 LDA #-1 ;reset carrier timing
STA carwait
SEC
RTS
*-------------------------------
* send ata
answer LDA #-1 ;signal we want manual-answer
STA carwait
RTS
*-------------------------------
* hangup phone
hangup LDX slot ;get offset
LDA #0
STA shbyt,x ;hang up phone
RTS
*-------------------------------
* input data
inp STX save_x ;save X
LDX slot ;get offset
LDA status1,x ;get status
AND #%00001000
CLC
BEQ inp2 ;no data
LDA #$20 ;reset char ready byte
STA xmtbyt,x
LDA indata,x ;get data
SEC
inp2 LDX save_x ;restore & return
RTS
*-------------------------------
* output data
out STX save_x ;save x
DEC timecnt ;count down bytes per second
BNE out1 ;not a seconds worth yet
PHA
LDA callspd ;reset counter
ASL
ASL
ASL ;time count = base.rate * 32
ASL
ASL
STA timecnt
PLA
INC bytcnt ;seconds - at 64 yet?
BIT bytcnt
BVC out1 ;nope
LDX #0 ;reset seconds
STX bytcnt
INC bytcnt+1 ;minutes - at 64 yet?
BIT bytcnt+1
BVC out1 ;nope
LDX #0 ;reset minutes
STX bytcnt+1
INC bytcnt+2 ;inc hours
out1 LDX slot
PHA
out2 LDA status1,x ;check status
AND #%00010000
BEQ out2 ;loop until ready
PLA
STA outdat,x ;output byte
LDX save_x
RTS
*-------------------------------
* check for carrier
chkdcd STX save_x ;dont kill any reg's
PHA
LDA carwait ;do we have carrier?
BEQ chkdcd3 ;nope
LDX slot
LDA swbyt,x ;check carrier
AND #%00100000
BEQ chkdcd2 ;no carrier
LDA #-1 ;buffer carrier detect
STA carwait
SEC
BCS chkdcd4 ;use return routine
chkdcd2 DEC carwait ;count down
chkdcd3 CLC
chkdcd4 PLA ;restore all & return
LDX save_x
RTS
*-------------------------------
* set the rs232 speed
setspd STX save_x
LDX slot ;get offset
LDA speed,y ;get speed
STA spdbyt,x ;set speed
LDA #1 ;find caller speed (x300)
STA callspd
CPY #0 ;at 300?
BEQ setspd3 ;yep
ASL callspd ;speed = speed * 2
setspd2 ASL callspd ;speed = speed * 2
DEY
BNE setspd2 ;loop until correct speed found
setspd3 LDX save_x ;restore & return
RTS
*-------------------------------
* wait routine
wait SEC ;from apple [+ ref man - pg 147]
wait2 PHA
wait3 SBC #1
BNE wait3
PLA
SBC #1
BNE wait2
RTS
*-------------------------------
* variables
speed dfb %00100010,%00000000 ;handle 300, 1200
save_x dfb 0
timecnt dfb 0
carwait dfb 0
initbyt dfb $00,$81,$00,$06,$00,$80,$00,$06
dfb $00,$64,$07,$22,$05,$10,$00,$00
asc 'Cat103'

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1,239 @@
иНТЕРНАЛ мИЦРОМОДЕМ щш Е дАТЕ ЛСТОФФРЕЛДСКРЕЛММДАТАеяуЦСТАТУСеяуЦЦРеяуЦРИНГИНеяуЦЦРеяуЦЦРЁеяуЦЁММЕНТОРГЕ ЙУМП ТАБЛЕСЛОТДФБСЕРИАЛ ЦАРД СЛОТДФБТРАНСМИТ РЕЦЕИЖЕЦАЛЛСПДДФБСПЕЕД ОФ ЦАЛЛБЫТЦНТДФБймпИНИТймпРИНГСЕТймпРИНГймпАНСВЕРймпХАНГУПймпИНПймпОУТймпЦХКДЦДЙМПСЕТСПДЙМПДУММЫРАИСЕ ДТРЙМПДУММЫЦЛЕАР БУФФЕРЙМПДУММЫЯУИТДУММЫРТС ИНИТ ТХЕ МОДЕМ ЦАРДИНИТСЕИлдьСЛОТГЕТ СЛОТ ОФФСЕТлдаРЕСЕТ ТОНЕСПЕАКЕРстаЦРЁЬртс СЕТУП ФОР ЦАЛЛРИНГСЕТлдаёРЕСЕТ ТИМЕОНстаБЫТЦНТстаБЫТЦНТстаБЫТЦНТстаЦАРВАИТРЕСЕТ ВАИТ ФЛАГтаыСЕТЁ БАУДймпСЕТСПД СЦНА ФОР РИНГ АНД ХАНДЛЕ ИТРИНГлдьСЛОТГЕТ ОФФСЕТбитЦАРВАИТДО ТХЕЫ ВАНТ МАНУАЛАНСВЕР©бмиРИНГАЫЕПлдаРИНГИНЬЦХЕЦК ФОР РИНГандбнеРИНГНОТХИНГРИНГлдаРИНГИНЬВАИТ ФОР РИНГ ТО ЦЛЕАРандбеяРИНГРИНГАлдаРЕСЕТ УАРТстаЦРЬлдаСЕТ ФОР НстаЦРЬлдаРЕСЕТ МОДЕМстаЦРЬлдаПИЦК УП ПХОНЕ шЕНАБЛЕ ЦАРРИЕРщстаЦРЬлдаёСЕТУП ЦАРРИЕР ВАИТ ТИМЕстаЦАРВАИТлдаёЁЦВАИТ ФОР ТХИНГС ТО СЕТТЛЕйсрВАИТРИНГЁлдаёДО БИГ ВАИТйсрВАИТлдаДАТАЬлдаСТАТУСЬРЕСЕТ ЦАРРИЕР ФЛАГлдаСТАТУСЬДО ВЕ ХАЖЕ ЦАРРИЕР©андбеяРИНГЫЕПдецЦАРВАИТЛООП УНТИЛ ЦОУНТ ИС ДОНЕбнеРИНГЁйсрХАНГУПРИНГцлцНОТХИНГ ХАППЕНЕДртсРИНГлдаёРЕСЕТ ЦАРРИЕР ТИМИНГстаЦАРВАИТсецртс СЕНД АТА ТО ПХОНЕАНСВЕРлдаёСИГНАЛ ВЕ ВАНТ МАНУАЛАНСВЕРстаЦАРВАИТртс ХАНГУП ПХОНЕХАНГУПлдьСЛОТГЕТ ОФФСЕТлдастаЦРЬХАНГ УП ПХОНЕртс ИНПУТ ДАТАИНПстьСАЖЕъЬСАЖЕ ьлдьСЛОТГЕТ ОФФСЕТлдаСТАТУСЬГЕТ СТАТУСандцлцбеяИНПНО ДАТАлдаДАТАЬГЕТ ДАТАсецИНПлдьСАЖЕъЬРЕСТОРЕ РЕТУРНртс ОУТПУТ ДАТАОУТстьСАЖЕъЬСАЖЕ ЬдецТИМЕЦНТЦОУНТ ДОВН БЫТЕС ПЕР СЕЦОНДбнеОУТНОТ А СЕЦОНДС ВОРТХ ЫЕТпхалдаЦАЛЛСПДРЕСЕТ ЦОУНТЕРасласласлТИМЕ ЦОУНТ БАСЕРАТЕ ЁасласлстаТИМЕЦНТплаинцБЫТЦНТСЕЦОНДС АТ ЫЕТ©битБЫТЦНТбжцОУТНОПЕлдьёРЕСЕТ СЕЦОНДСстьБЫТЦНТинцБЫТЦНТМИНУТЕС АТ ЫЕТ©битБЫТЦНТбжцОУТНОПЕлдьёРЕСЕТ МИНУТЕСстьБЫТЦНТинцБЫТЦНТИНЦ ХОУРСОУТлдьСЛОТпхаОУТлдаСТАТУСЬЦХЕЦК СТАТУСандбеяОУТЛООП УНТИЛ РЕАДЫпластаДАТАЬОУТПУТ БЫТЕлдьСАЖЕъЬртс ЦХЕЦК ФОР ЦАРРИЕРЦХКДЦДстьСАЖЕъЬДОНТ КИЛЛ АНЫ РЕГСпхалдьСЛОТлдаСТАТУСЬРЕСЕТ ЦАРРИЕР ФЛАГлдаСТАТУСЬЦХЕЦК ЦАРРИЕРандцлцбнеЦХКДЦДОППС НО ЦАРРИЕРсецСЕЦ ВЕ ХАЖЕ ЦАРРИЕРЦХКДЦДплаРЕСТОРЕ РЕТУРНлдьСАЖЕъЬртс СЕТ ТХЕ РСЁ СПЕЕД шСПЕЕД ОФФСЕТ ИН ыщСЕТСПДлдаёФИНД ЦАЛЛЕР СПЕЕД ЬЁстаЦАЛЛСПДртс ВАИТ РОУТИНЕВАИТсецФРОМ АППЛЕ щш РЕФ МАН ПГ ВАИТпхаВАИТЁсбцёбнеВАИТЁпласбцёбнеВАИТртс АЖАИЛАБЛЕ СПЕЕДССАЖЕъЬДФБТИМЕЦНТДФБЦАРВАИТДФБАСЦмм
*--------------------------
*Internal Micromodem ][ //e
*--------------------------
* Date 12/09/86
*--------------------------
lst off
rel
dsk rel/mm2
data EQU $c087
status EQU $c086
cr1 EQU $c086
ringin EQU $c085
cr2 EQU $c085
cr3 EQU $c083
mm2 ent
org $e00
*-------------------------------
* jump table
slot dfb $20 ;serial card slot
dfb 0 ;transmit / receive
callspd dfb 0 ;speed of call
bytcnt dfb 0,0,0
JMP init
JMP ringset
JMP ring
JMP answer
JMP hangup
JMP inp
JMP out
JMP chkdcd
jmp setspd
jmp dummy ;raise dtr
jmp dummy ;clear buffer
jmp dummy ;quit
dummy rts
*-------------------------------
* init the modem card
init sei
LDX slot ;get slot offset
LDA %00000000 ;reset tone/speaker
STA cr3,x
RTS
*-------------------------------
* setup for call
ringset LDA #0 ;reset time-on
STA bytcnt
STA bytcnt+1
STA bytcnt+2
STA carwait ;reset wait flag
TAY set ;300 baud
JMP setspd
*-------------------------------
* scna for ring and handle it
ring LDX slot ;get offset
BIT carwait ;do they want manual-answer?
BMI ring2a ;yep
LDA ringin,x ;check for ring
AND %10000000
BNE ring4 ;nothing
ring2 LDA ringin,x ;wait for ring to clear
AND %10000000
BEQ ring2
ring2a LDA %00000011 ;reset uart
STA cr1,x
LDA %00010101 ;set for 8n1
STA cr1,x
LDA %00000000 ;reset modem
STA cr2,x
LDA %10001011 ;pick up phone [enable carrier]
STA cr2,x
LDA #$50 ;setup carrier wait time
STA carwait
LDA #$3c ;wait for things to settle
JSR wait
ring3 LDA #0 ;do big wait...
JSR wait
LDA data,x
LDA status,x ;reset carrier flag
LDA status,x ;do we have carrier?
AND %00000100
BEQ ring5 ;yep
DEC carwait ;loop until count is done
BNE ring3
JSR hangup
ring4 CLC ;nothing happened
RTS
ring5 LDA #-1 ;reset carrier timing
STA carwait
SEC
RTS
*-------------------------------
* send ata to phone
answer LDA #-1 ;signal we want manual-answer
STA carwait
RTS
*-------------------------------
* hangup phone
hangup LDX slot ;get offset
LDA %00000001
STA cr2,x ;hang up phone
RTS
*-------------------------------
* input data
inp STX save_x ;save X
LDX slot ;get offset
LDA status,x ;get status
AND %00000001
CLC
BEQ inp2 ;no data
LDA data,x ;get data
SEC
inp2 LDX save_x ;restore & return
RTS
*-------------------------------
* output data
out STX save_x ;save x
DEC timecnt ;count down bytes per second
BNE out1 ;not a seconds worth yet
PHA
LDA callspd ;reset counter
ASL
ASL
ASL ;time count = base.rate * 32
ASL
ASL
STA timecnt
PLA
INC bytcnt ;seconds - at 64 yet?
BIT bytcnt
BVC out1 ;nope
LDX #0 ;reset seconds
STX bytcnt
INC bytcnt+1 ;minutes - at 64 yet?
BIT bytcnt+1
BVC out1 ;nope
LDX #0 ;reset minutes
STX bytcnt+1
INC bytcnt+2 ;inc hours
out1 LDX slot
PHA
out2 LDA status,x ;check status
AND %00000110
BEQ out2 ;loop until ready
PLA
STA data,x ;output byte
LDX save_x
RTS
*-------------------------------
* check for carrier
chkdcd STX save_x ;dont kill any reg's
PHA
LDX slot
LDA status,x ;reset carrier flag
LDA status,x ;check carrier
AND %00000100
CLC
BNE chkdcd2 ;opps, no carrier
SEC ;sec = we have carrier
chkdcd2 PLA ;restore & return
LDX save_x
RTS
*-------------------------------
* set the rs-232 speed [speed offset in Y]
setspd LDA #1 ;find caller speed (x300)
STA callspd
RTS
*-------------------------------
* wait routine
wait SEC ;from apple ][+ ref man - pg 147
wait2 PHA
wait3 SBC #1
BNE wait3
PLA
SBC #1
BNE wait2
RTS
*-------------------------------
* available speeds
save_x dfb 0
timecnt dfb 0
carwait dfb 0
asc 'MM2'

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1,60 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD>
*-------------------------------
* Date 01/06/87
*-------------------------------
lst off
rel
dsk rel/nullmdm
nullmdm ent
org $e00
*-------------------------------
* jump table
dfb 0 ;serial card slot
dfb 0 ;init modem at?
dfb 0 ;speed of call
bytcnt dfb 0,0,0
JMP do_rts
JMP do_rts
JMP ring
JMP do_rts
JMP do_rts
JMP inp
JMP out
JMP chkdcd
jmp do_rts
jmp do_rts
jmp do_rts
jmp do_rts
; init the serial card
do_rts RTS
; scan for ring and handle it
ring CLC
RTS
; input data
inp LDA #0
CLC
RTS
; output data
out INC bytcnt ;do byte-counting
BNE out1
INC bytcnt+1
BNE out1
INC bytcnt+2
out1 RTS
; check for carrier
chkdcd CLC
RTS
asc 'NullModem'

View File

@ -1 +1,225 @@
<EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD>驿 <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Р<EFBFBD>Я<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
org $e00
slot dfb #$02
mde dfb #$00
baud dfb #$04 ; baudrate / 300 of caller's baud
initbaud dfb #$04 ; baudrate / 300 to init port at
mode dfb #$01 ; 1=DCD detection, 0=DSR detection
lockport dfb #$00 ; 1 = port locked at init speed - software
; 2 = port locked at init speed - cts
; 0 = follow callers rate (normal)
initit equ $fd0
jmp imdriver ; inits driver
jmp iport ; inits port, dtr on, sends init.txt to modem
jmp check ; for ring / connect / etc
jmp answer ; force answer
jmp hangup ; guess
jmp getchar ; checks for char. from modem, a= char got
; clc = no character, sec = got data
jmp mout ; sends data out to modem, purges buffer first
jmp chkcar ; figures out baud from returns
imdriver ; inits driver
lda #$04
sta hdwshk+1
lda lockport
cmp #$02
bne nohdwl
lda #$20
sta hdwshk+1
nohdwl lda #$08
sta chkmsk+1
lda mode
bne nodcd
lda #$20
sta chkmsk+1
nodcd lda $c038
rts
iport ; inits port
lda $c038
ldx #$00
iplp lda iptbl,x
beq ipdn
sta $c038
inx
lda iptbl,x
sta $c038
inx
jmp iplp
ipdn ldy #30
jsr wait
ldy #$05
lda #%01101010
jsr writereg
ldy initbaud
jsr setbaud
atzst ldx #$00
atzlp lda atz,x
beq atzdn
jsr mout
ldy #$04
jsr wait
inx
jmp atzlp
atzdn
ldy #$30
jsr wait
atzacc ldx #$00
initlp lda initit,x
beq initdn
jsr mout
ldy #$04
jsr wait
inx
jmp initlp
initdn rts
answer ldx #$00
anslp lda ata,x
beq ansdn
jsr mout
ldy #$04
jsr wait
inx
jmp anslp
ansdn rts
checklo ldy #$ff
jmp checka
check ldy #$01
checka jsr getchar
bcs norts
dey
cpy #$00
bne checka
clc
rts
norts
and #$7f
cmp #'1'
bne not1200
lda #$04
jmp gotbaud
not1200 cmp #'2'
bne not2400
lda #$08
jmp gotbaud
not2400 cmp #'9'
bne checklo
lda #$20
gotbaud sta $e02
ldy lockport
bne locked
tay
jsr setbaud
locked sec
rts
atz dfb #$0d
asc 'ATZ'
dfb #$0d,#$00
ata dfb #$0d
asc 'ATA'
dfb #$0d,#$00
bdtbl dfb #$01,#$04,#$08,#$20,#$40,#$00
iptbl dfb #$09,#%01000000
dfb #$04,#%01001100
dfb #$03,#%11000000
dfb #$05,#%01100000
dfb #$09,#%00000000
dfb #$0a,#%00000000
dfb #$0b,#%01010110
dfb #$0e,#%00000001
dfb #$03,#%11000001
dfb #$05,#%11101010
dfb #$0a,#%00000000
dfb #$0f,#%11010010
dfb #$00,#%00000000
chkcar ; check for carrier - clc=user gone
lda $c038
chkmsk and #$20
clc
beq chkcarb
sec
chkcarb rts
hangup ; what do you think?
ldy #$05
lda #%11100000
jmp writereg
getchar ; gets character from modem
; a=character got, clc = no character, sec=data got
lda $c038
and #$01
beq nodata
lda $c03a
sec
rts
nodata clc
rts
mout ; sends data to modem, makes sure no incoming 1st
pha
mouta lda $c038
and #$04
beq mouta
moutb lda $c038
hdwshk and #$20
beq moutb
pla
sta $c03a
rts
setbaud
tya
ldy #$00
setbdlp cmp bdtbl,y
beq gotit
iny
bne setbdlp
gotit
tya
asl
tax
lda sbtbl,x
ldy #$0c
jsr writereg
inx
iny
lda sbtbl,x
jmp writereg
sbtbl dfb #$7e,#$01
dfb #$5e,#$00
dfb #$2e,#$00
dfb #$0a,#$00
dfb #$04,#$00
writereg
sty $c038
sta $c038
rts
wait lda $c019
bpl wait
waita lda $c019
bmi waita
dey
bne wait
rts

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1,301 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>便<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> 秿<EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD> 怀<EFBFBD>
*-------------------------------
* Single Speed External
*-------------------------------
* 3/19/88 Andrew E. Nicholas
*-------------------------------
lst off
rel
dsk rel/singlespd
cr equ $0d
lf equ $0a
data equ $c088
status equ $c089
command equ $c08a
control equ $c08b
initstr equ $11d0
ansstr equ $11c0
cdbyte equ $11bf
singlespd ent ;(Start)
org $e00
*-------------------------------
* jump table
slot dfb $20 ;serial card slot
initspd dfb 0 ;transmit / receive
callspd dfb 0 ;speed of call
bytcnt dfb 0,0,0
JMP init
JMP ringset
JMP ring
JMP answer
JMP hangup
JMP inp
JMP out
JMP chkdcd
jmp setspd
jmp raisedtr
jmp dummy
jmp dummy
dummy rts
*-------------------------------
* init the serial card
init LDA #0 ;reset
LDX slot
STA status,x ;reset uart
STA command,x ;reset command
clc
txa
adc #<data
sta dataloc+1 ;make into absolute save
rts
*-------------------------------
* setup for call
ringset LDX slot ;get offset
LDA #%00001011 ;turn on DTR, RTS
STA command,x
sei ;disable ints
LDY initspd ;set init speed
JSR setspd
LDA data,x ;clear data strobe
LDA #0 ;long delay
JSR wait
jsr wait
LDX #-1 ;start at -1
rset2 INX ;do pre-inc
lda #$80
jsr wait
LDA initstr,x ;get modem init string
BEQ rset3 ;we are done
jmp rset2
rset3 lda #6
sta countlo
sta counthi
rset4 ldy #$FF
rset5 dey
beq decount
jsr inp
bcc rset5
and #$7f
cmp #'K' ;check for "OK"
beq leave
jmp rset5
decount dec countlo
bne rset4
dec counthi
bne rset4
jmp ringset
leave lda #0
sta bytcnt ;reset byte counter
sta bytcnt+1
sta bytcnt+2
clc
rts ;return
*-------------------------------
* scan for ring and handle it
ring LDX slot ;get offset
LDA status,x
AND cdbyte ;strip out CD byte
CLC
BNE ring3 ;nothing
SEC ;we have a connection
LDX #5
ring2 LDA #0 ;delay before going online
JSR wait
DEX
BNE ring2
JSR inp ;gobble extra
SEC
ring3 RTS
*-------------------------------
* send ata to phone
answer LDX #0
answer2 LDA ansstr,x ;get text
BEQ answer3 ;we are donw
JSR out ;send it
lda #$80 ;delay a little
jsr wait
INX
BNE answer2 ;loop
answer3 RTS
*-------------------------------
* hangup phone
hangup LDX slot ;get offset
LDA #0
STA command,x ;hang up phone
RTS
*-------------------------------
* input data
inp STX save_x ;save X
LDX slot ;get offset
LDA status,x ;get status
AND #%00001000
CLC
BEQ inp2 ;no data
LDA data,x
SEC
inp2 LDX save_x ;restore & return
RTS
*-------------------------------
* output data
out STX save_x ;save x
DEC timecnt ;count down bytes per second
BNE out1 ;not a seconds worth yet
PHA
LDA callspd ;reset counter
ASL
ASL
ASL ;time count = base.rate * 32
ASL
ASL
STA timecnt
PLA
INC bytcnt ;seconds - at 64 yet?
BIT bytcnt
BVC out1 ;nope
LDX #0 ;reset seconds
STX bytcnt
INC bytcnt+1 ;minutes - at 64 yet?
BIT bytcnt+1
BVC out1 ;nope
LDX #0 ;reset minutes
STX bytcnt+1
INC bytcnt+2 ;inc hours
out1 LDX slot
PHA
out2 LDA status,x ;check status
AND #%00010000
BEQ out2 ;loop until ready
PLA
dataloc STA data ;self-modified
LDX save_x
RTS
*-------------------------------
* check for carrier sec = we have carrier
chkdcd STX save_x ;dont kill any reg's
PHA
LDX slot ;get offset
LDA status,x
AND cdbyte ;check carrier
CLC
BNE chkdcd2
SEC
chkdcd2 PLA restore ;all & return
LDX save_x
RTS
*-------------------------------
* set the rs-232 speed [speed offset in Y]
setspd STX save_x
LDX slot ;get offset
LDA speed,y ;get speed
STA control,x ;set speed
LDA #1 ;find caller speed (x300)
STA callspd
CPY #0 ;at 300?
BEQ setspd3 ;yep
ASL callspd ;speed = speed * 2
setspd2 ASL callspd ;speed = speed * 2
DEY
BNE setspd2 ;loop until correct speed found
setspd3 LDX save_x ;restore & return
RTS
*-------------------------------
* turn on dtr/rts
raisedtr stx save_x
ldx slot
lda #%00001011 ;turn on DTR, RTS
sta command,x
sei ;re-disable
ldx save_x
rts
*-------------------------------
* wait routine
wait SEC ;from apple ][+ ref man - pg 147
wait2 PHA
wait3 SBC #1
BNE wait3
PLA
SBC #1
BNE wait2
RTS
*-------------------------------
* available speeds
speed dfb %00010110 ;300
dfb %00011000 ;1200
dfb %00011010 ;2400
dfb %00011100 ;4800
dfb %00011110 ;9600
dfb %00011111 ;19200
countlo db 0
counthi db 0
save_x dfb 0
timecnt dfb 0
asc 'SingleSpd'

View File

@ -1 +1,58 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> ΗΒΒΣ Πςο ­ Ξυμμ Νοδεν Δςιφες <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD> ΔατεΊ ³±±ΈΈ<EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD>ξυμμνδν οςη ¤°ε°°<EFBFBD><EFBFBD>» κυνπ ταβμε<EFBFBD><EFBFBD> δβ ° » σεςιαμ γαςδ σμοτ<EFBFBD> δβ ° » ιξιτ νοδεν ατΏ<EFBFBD> δβ ° » σπεεδ οζ γαμμ<EFBFBD><EFBFBD>βωτγξτ δβ °¬°¬°<EFBFBD><EFBFBD> κνπ δοίςτσ<EFBFBD> κνπ δοίςτσ<EFBFBD> κνπ ςιξη<EFBFBD> κνπ δοίςτσ<EFBFBD> κνπ δοίςτσ<EFBFBD> κνπ ιξπ<EFBFBD> κνπ ουτ<EFBFBD> κνπ γθλδγδ<EFBFBD><EFBFBD><EFBFBD>» ιξιτ τθε σεςιαμ γαςδ<EFBFBD>δοίςτσ ςτσ<EFBFBD><EFBFBD>» σγαξ ζος ςιξη αξδ θαξδμε ιτ<EFBFBD>ςιξη γμγ<EFBFBD> ςτσ<EFBFBD><EFBFBD>» ιξπυτ δατα<EFBFBD>ιξπ μδα £°<EFBFBD> γμγ<EFBFBD> ςτσ<EFBFBD><EFBFBD>» ουτπυτ δατα<EFBFBD>ουτ ιξγ βωτγξτ » δο βωτε­γουξτιξη<EFBFBD> βξε ουτ±<EFBFBD> ιξγ βωτγξτ«±<EFBFBD> βξε ουτ±<EFBFBD> ιξγ βωτγξτ«²<EFBFBD><EFBFBD>ουτ± ςτσ<EFBFBD><EFBFBD>» γθεγλ ζος γαςςιες<EFBFBD>γθλδγδ γμγ<EFBFBD> ςτσ<EFBFBD><EFBFBD> οςη<EFBFBD><EFBFBD><EFBFBD>
********************************
* *
* GBBS Pro - Null Modem Driver *
* *
********************************
*-------------------------------
* Date: 3/11/88
*-------------------------------
nullmdm org $0e00
; jump table
db 0 ; serial card slot
db 0 ; init modem at?
db 0 ; speed of call
bytcnt db 0,0,0
jmp do_rts
jmp do_rts
jmp ring
jmp do_rts
jmp do_rts
jmp inp
jmp out
jmp chkdcd
; init the serial card
do_rts rts
; scan for ring and handle it
ring clc
rts
; input data
inp lda #0
clc
rts
; output data
out inc bytcnt ; do byte-counting
bne out1
inc bytcnt+1
bne out1
inc bytcnt+2
out1 rts
; check for carrier
chkdcd clc
rts
org

File diff suppressed because one or more lines are too long

View File

@ -1 +1,284 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> Γοξζιη ­ ΠςοΔΟΣ δισλ ΙΟ <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD> ΔατεΊ ³±±ΈΈ<EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD>γςεατε² ερυ <EFBFBD> » εξτςω ζος εψτεςξαμ ζιμεσ<EFBFBD>γςεατε στω πίγςεατ«΄ » σαφε ζιμετωπε<EFBFBD> κσς νμι<EFBFBD> δβ ¤γ°<EFBFBD> δχ πίγςεατ<EFBFBD> ςτσ<EFBFBD><EFBFBD><EFBFBD>οπεξ μδω £°<EFBFBD>βζοπεξ μδα βυζαδς¬ω » ποιξτ ατ βυζζες<EFBFBD> στα πίοπεξ«΄<EFBFBD><EFBFBD> κσς νμι<EFBFBD> δβ ¤γΈ » οπεξ<EFBFBD> δχ πίοπεξ<EFBFBD> βξε οπεξ²<EFBFBD><EFBFBD> μδα πίοπεξ«µ » σαφε ςεζξυν<EFBFBD> στα ςεζξυν<EFBFBD> γμγ<EFBFBD> ςτσ<EFBFBD><EFBFBD>οπεξ² μδα £­± » ναλε συςε ςεζξυν ισ ιμμεηαμ<EFBFBD> στα ςεζξυν<EFBFBD> σεγ<EFBFBD> ςτσ<EFBFBD><EFBFBD>βυζαδς δβ Ύζβυ汬Ύζβυ沬Ύνσηβυζ<EFBFBD><EFBFBD><EFBFBD>γμοσε μδα ςεζξυν » υσε ςεζξυν<EFBFBD> στα πίγμοσε«±<EFBFBD> κσς νμι<EFBFBD> δβ ¤γγ » γμοσε<EFBFBD> δχ πίγμοσε<EFBFBD> ςτσ<EFBFBD><EFBFBD>ζμυσθ μδα ςεζξυν » υσε ςεζξυν<EFBFBD> στα πίγμοσε«±<EFBFBD> κσς νμι<EFBFBD> δβ ¤γδ » ζμυσθ<EFBFBD> δχ πίγμοσε<EFBFBD> ςτσ<EFBFBD><EFBFBD><EFBFBD>» σετυπ ζος σιξημε μιξε ςεαδ<EFBFBD>ςδμξσετ μδα ςεζξυν<EFBFBD> στα πίξεχ°«± » σαφε ςεζξυν<EFBFBD> στα πίξεχ±«±<EFBFBD> στα πίςδμξ«±<EFBFBD><EFBFBD> κσς νμι<EFBFBD> δβ ¤γΉ » εξαβμε ξεχμιξε<EFBFBD> δχ πίξεχ±<EFBFBD> ςτσ<EFBFBD><EFBFBD><EFBFBD>» ςεαδ α μιξε ζςον α ζιμε<EFBFBD>ςδμιξε κσς νμι<EFBFBD> δβ ¤γα » ςεαδ<EFBFBD> δχ πίςδμξ<EFBFBD> βξε ςδμιξε² » ςεαδ εςςος<EFBFBD><EFBFBD> μδψ πίςδμξ« » ισ τθεςε α γς ατ εξδ οζ μιξεΏ<EFBFBD> μδα μξβυζ­±¬ψ<EFBFBD> αξδ £¤·ζ<EFBFBD> γνπ £γς<EFBFBD> βξε ςδμιξε² » ξο νοςε στυζζ<EFBFBD> γμγ<EFBFBD> ςτσ<EFBFBD><EFBFBD>ςδμιξε² μδα £° » ξο δατα ιξ μιξε<EFBFBD> στα μξβυζ<EFBFBD> σεγ  » εοζ<EFBFBD> ςτσ<EFBFBD><EFBFBD><EFBFBD>» ςεαδ α σιξημε βωτε<EFBFBD>ςδβωτε μδα ςεζξυν » σαφε ςεζξυν<EFBFBD> βερ ςδβωτε²<EFBFBD><EFBFBD> στα πίςβωτ«±<EFBFBD> κσς νμι<EFBFBD> δβ ¤γα » ςεαδ ± βωτε<EFBFBD> δχ πίςβωτ<EFBFBD> βξε ςδβωτε²<EFBFBD><EFBFBD> μδα πίβωτε » ηετ βωτε<EFBFBD> γμγ  » χεςε δοξε<EFBFBD> ςτσ<EFBFBD><EFBFBD>ςδβωτε² μδα £° » ζαλε δατα<EFBFBD> σεγ<EFBFBD> ςτσ<EFBFBD><EFBFBD><EFBFBD>» χςιτε α βμογλ ζος τθε νση ςουτιξεσ<EFBFBD>χςβμλ πθα<EFBFBD> μδα £¤γβ » υσε χςιτε γαμμ<EFBFBD> στα ςχτωπε » ­­­ δοεσ νοδιζω<EFBFBD> πμα<EFBFBD> κνπ ςχβμλ<EFBFBD><EFBFBD>» ςεαδ α βμογλ ζος τθε νση ςουτιξεσ<EFBFBD>ςδβμλ πθα<EFBFBD> μδα £¤γα » υσε ςεαδ γαμμ<EFBFBD> στα ςχτωπε » ­­­ δοεσ νοδιζω<EFBFBD> πμα<EFBFBD><EFBFBD>ςχβμλ στψ πίςδβμλ«²<EFBFBD> στα πίςδβμλ«³ » σαφε ςεαδ αδδςεσσ<EFBFBD><EFBFBD> μδα £°<EFBFBD> στα πίςδβμλ«΄<EFBFBD> στω πίςδβμλ«µ » σαφε ξυνβες οζ βμογλσ το ςεαδ<EFBFBD><EFBFBD> μσς πίςδβμλ«µ » διφιδε βω ²<EFBFBD> ςος πίςδβμλ«΄<EFBFBD><EFBFBD> μδα ςεζξυν » ηετ ςεζξυν<EFBFBD> στα πίςδβμλ«±<EFBFBD><EFBFBD> κσς νμι » γαμμ νμι<EFBFBD>ςχτωπε δβ ¤γα » <EFBFBD><EFBFBD><EFBFBD> νοδιζιεδ <EFBFBD><EFBFBD><EFBFBD><EFBFBD> δχ πίςδβμλ<EFBFBD> ςτσ<EFBFBD><EFBFBD><EFBFBD>» χςιτε α βωτε οζ δατα<EFBFBD>χςβωτε στα πίβωτε » σαφε δατα<EFBFBD> πθα<EFBFBD> μδα ςεζξυν<EFBFBD> βερ χςβωτε² » ιζ ξο ςεζξυν<EFBFBD><EFBFBD> στα πίςβωτ«±<EFBFBD> κσς νμι<EFBFBD> δβ ¤γβ » χςιτε βωτε<EFBFBD> δχ πίςβωτ<EFBFBD> γμγ  » αμμ ισ χεμμ<EFBFBD> βερ χςβωτε³<EFBFBD><EFBFBD>χςβωτε² σεγ  » οππσ¬ πςοβμεν<EFBFBD>χςβωτε³ πμα  » ηετ βαγλ δατα<EFBFBD> ςτσ<EFBFBD><EFBFBD><EFBFBD>» ποσιτιοξ ζιμε<EFBFBD>ποσνση μδω νσηςεζ » σαφε ςεζξυν<EFBFBD> στω ςεζξυν<EFBFBD><EFBFBD> μσς α » σετυπ Ω¬Α¬Ψ χεψαγτ βωτε<EFBFBD> ταω<EFBFBD> τψα<EFBFBD> ςος α<EFBFBD> πθα<EFBFBD> μδα £±<EFBFBD> ςος α<EFBFBD> ταψ<EFBFBD> πμα<EFBFBD> κνπ σετποσ<EFBFBD><EFBFBD><EFBFBD>» ζιξδ τθε εξδ οζ ζιμε<EFBFBD>ηετεοζ μδα ςεζξυν » σαφε ςεζξυν<EFBFBD> στα πίναςλ«±<EFBFBD> κσς νμι<EFBFBD> δβ ¤δ± » ηετ εοζ<EFBFBD> δχ πίναςλ<EFBFBD> μδψ πίναςλ«²<EFBFBD> μδα πίναςλ«³ » ηετ μεξητθ<EFBFBD> μδω πίναςλ«΄<EFBFBD> ςτσ<EFBFBD><EFBFBD>» σετ α ναςλ ιξτο α ζιμε<EFBFBD>σετναςλ μδω £°<EFBFBD><EFBFBD>» δο αγτυαμ ποσιτιοξ σετ χιτθιξ ζιμε<EFBFBD>σετποσ στψ πίναςλ«²<EFBFBD> στα πίναςλ«³ » ποιξτ το ξεχ μογατιοξ<EFBFBD> στω πίναςλ«΄<EFBFBD><EFBFBD> μδα ςεζξυν<EFBFBD> στα πίναςλ«± » σαφε ςεζξυν<EFBFBD><EFBFBD>σετποσ² κσς νμι<EFBFBD> δβ ¤γε » σετ ναςλ<EFBFBD> δχ πίναςλ<EFBFBD> γν𠣤΄δ » γθεγλ ζος ουτ­οζ­ςαξηε<EFBFBD> βξε σετποσ³<EFBFBD><EFBFBD> κσς νμι<EFBFBD> δβ ¤δ° » σετ εοζ<EFBFBD> δχ πίναςλ<EFBFBD> βερ σετποσ² » ποσιτιοξ αηαιξ<EFBFBD><EFBFBD>σετποσ³ ςτσ<EFBFBD><EFBFBD><EFBFBD>» ηετ γυςςεξτ ζιμε ναςλες<EFBFBD>ηετναςλ μδα ςεζξυν » σαφε ςεζξυν<EFBFBD> στα πίναςλ«±<EFBFBD> κσς νμι<EFBFBD> δβ ¤γζ » ηετ ναςλ<EFBFBD> δχ πίναςλ<EFBFBD> σεγ<EFBFBD> βξε ηετνςλ² » οππσ¬ εςςος<EFBFBD><EFBFBD> γμγ<EFBFBD> μδψ πίναςλ«² » αμμ ισ χεμμ<EFBFBD> μδα πίναςλ«³<EFBFBD>ηετνςλ² ςτσ<EFBFBD><EFBFBD>δεμζιμε κσς νμι<EFBFBD> δβ ¤γ± » δεμετε ζιμε<EFBFBD> δχ πίδεμ<EFBFBD> ςτσ<EFBFBD><EFBFBD>» ­­­­­­ παςνσ ­­­­­­<EFBFBD><EFBFBD>πίοπεξ δβ ³<EFBFBD> δχ ζμξανε<EFBFBD> δχ ζβυζ±<EFBFBD> δβ °<EFBFBD><EFBFBD>πίγμοσε δβ ±<EFBFBD> δβ °<EFBFBD><EFBFBD>πίςβωτ δβ ΄<EFBFBD> δβ °<EFBFBD> δχ πίβωτε<EFBFBD> δχ ±<EFBFBD> δχ °<EFBFBD><EFBFBD>πίβωτε δβ °<EFBFBD><EFBFBD>πίναςλ δβ ²<EFBFBD> δβ °<EFBFBD> δβ °¬°¬°<EFBFBD><EFBFBD>πίξεχ° δβ ³<EFBFBD> δβ °<EFBFBD> δβ °<EFBFBD> δβ °<EFBFBD><EFBFBD>πίξεχ± δβ ³<EFBFBD> δβ °<EFBFBD> δβ ¤·ζ<EFBFBD> δβ ¤°δ<EFBFBD><EFBFBD>πίςδμξ δβ ΄<EFBFBD> δβ °<EFBFBD> δχ μξβυζ<EFBFBD> δχ ¤°°ζζ<EFBFBD> δχ ¤°°°°<EFBFBD><EFBFBD>πίςδβμλ δβ ΄<EFBFBD> δβ °<EFBFBD> δχ ¤°°°°<EFBFBD> δχ ¤°°Έ°<EFBFBD> δχ ¤°°°°<EFBFBD><EFBFBD>πίδεμ δβ ±<EFBFBD> δχ ζμξανε<EFBFBD><EFBFBD>πίγςεατ δβ ·<EFBFBD> δχ ζμξανε<EFBFBD> δβ ¤γ³<EFBFBD> δβ °<EFBFBD> δχ °<EFBFBD> δβ ¤°±<EFBFBD> δχ ¤°°°°<EFBFBD> δχ ¤°°°°<EFBFBD><EFBFBD><EFBFBD>
********************************
* *
* Config - ProDOS disk I/O *
* *
********************************
*-------------------------------
* Date: 3/11/88
*-------------------------------
create2 equ * ; entry for external files
create sty p_creat+4 ; save filetype
jsr mli
db $c0
dw p_creat
rts
open ldy #0
bfopen lda bufadr,y ; point at buffer
sta p_open+4
jsr mli
db $c8 ; open
dw p_open
bne open2
lda p_open+5 ; save refnum
sta refnum
clc
rts
open2 lda #-1 ; make sure refnum is illegal
sta refnum
sec
rts
bufadr db >fbuf1,>fbuf2,>msgbuf
close lda refnum ; use refnum
sta p_close+1
jsr mli
db $cc ; close
dw p_close
rts
flush lda refnum ; use refnum
sta p_close+1
jsr mli
db $cd ; flush
dw p_close
rts
; setup for single line read
rdlnset lda refnum
sta p_new0+1 ; save refnum
sta p_new1+1
sta p_rdln+1
jsr mli
db $c9 ; enable newline
dw p_new1
rts
; read a line from a file
rdline jsr mli
db $ca ; read
dw p_rdln
bne rdline2 ; read error
ldx p_rdln+6 ; is there a cr at end of line?
lda lnbuf-1,x
and #$7f
cmp #cr
bne rdline2 ; no more stuff
clc
rts
rdline2 lda #0 ; no data in line
sta lnbuf
sec ; eof
rts
; read a single byte
rdbyte lda refnum ; save refnum
beq rdbyte2
sta p_rbyt+1
jsr mli
db $ca ; read 1 byte
dw p_rbyt
bne rdbyte2
lda p_byte ; get byte
clc ; were done
rts
rdbyte2 lda #0 ; fake data
sec
rts
; write a block for the msg routines
wrblk pha
lda #$cb ; use write call
sta rwtype ; --- does modify
pla
jmp rwblk
; read a block for the msg routines
rdblk pha
lda #$ca ; use read call
sta rwtype ; --- does modify
pla
rwblk stx p_rdblk+2
sta p_rdblk+3 ; save read address
lda #0
sta p_rdblk+4
sty p_rdblk+5 ; save number of blocks to read
lsr p_rdblk+5 ; divide by 2
ror p_rdblk+4
lda refnum ; get refnum
sta p_rdblk+1
jsr mli ; call mli
rwtype db $ca ; *** modified ***
dw p_rdblk
rts
; write a byte of data
wrbyte sta p_byte ; save data
pha
lda refnum
beq wrbyte2 ; if no refnum
sta p_rbyt+1
jsr mli
db $cb ; write byte
dw p_rbyt
clc ; all is well
beq wrbyte3
wrbyte2 sec ; opps, problem
wrbyte3 pla ; get back data
rts
; position file
posmsg ldy msgref ; save refnum
sty refnum
lsr a ; setup Y,A,X w/exact byte
tay
txa
ror a
pha
lda #16
ror a
tax
pla
jmp setpos
; find the end of file
geteof lda refnum ; save refnum
sta p_mark+1
jsr mli
db $d1 ; get eof
dw p_mark
ldx p_mark+2
lda p_mark+3 ; get length
ldy p_mark+4
rts
; set a mark into a file
setmark ldy #0
; do actual position set within file
setpos stx p_mark+2
sta p_mark+3 ; point to new location
sty p_mark+4
lda refnum
sta p_mark+1 ; save refnum
setpos2 jsr mli
db $ce ; set mark
dw p_mark
cmp #$4d ; check for out-of-range
bne setpos3
jsr mli
db $d0 ; set eof
dw p_mark
beq setpos2 ; position again
setpos3 rts
; get current file marker
getmark lda refnum ; save refnum
sta p_mark+1
jsr mli
db $cf ; get mark
dw p_mark
sec
bne getmrk2 ; opps, error
clc
ldx p_mark+2 ; all is well
lda p_mark+3
getmrk2 rts
delfile jsr mli
db $c1 ; delete file
dw p_del
rts
; ------ parms ------
p_open db 3
dw flname
dw fbuf1
db 0
p_close db 1
db 0
p_rbyt db 4
db 0
dw p_byte
dw 1
dw 0
p_byte db 0
p_mark db 2
db 0
db 0,0,0
p_new0 db 3
db 0
db 0
db 0
p_new1 db 3
db 0
db $7f
db $0d
p_rdln db 4
db 0
dw lnbuf
dw $00ff
dw $0000
p_rdblk db 4
db 0
dw $0000
dw $0080
dw $0000
p_del db 1
dw flname
p_creat db 7
dw flname
db $c3
db 0
dw 0
db $01
dw $0000
dw $0000

View File

@ -1 +1,259 @@
дАТЕ Ё ПРОФАНИТЫ ФИЛТЕР ЦХАНГЕ ПРОФАНИТЫ ФИЛТЕР ЫУКДОъФИЛТЙСРЛОГПРГ ЛОГ ТО АЦОСОБЙ ДРИЖЕЛДЬёГНАМЕЛДАёГНАМЕ ПОИНТ ТО ФИЛЕНАМЕЙСРМОЖНАМЕЙСРОПЕН ОПЕН ФИЛЕЛДЬёЛДАФИЛТЕР ПОИНТ АТ ФИЛТЕР ТАБЛЕЙСРСЕТМАРКЛДЬёХДРБУФЛДАёХДРБУФЛДЫё РЕАД ПАГЕ БЛОЦКСЙСРРДБЛКЙСРЦЛОСЕ ТХАТС ИТ ФОР НОВФИЛТЙСРтОПбОЬЙСРПРИНТДБЁАСЦ еДИТ пРОФАНИТЫ фИЛТЕР ЙСРЦЛСЛДАё СТАРТ АТ ёСТАТЕМПФИЛТЁЛДЬТЕМП ГЕТ ЕНТРЫ НУМБЕРЙСРФНДВОРД ФИНД ТХЕ ВОРДБЦСФИЛТ ОППС ЕНД ОФ ТАБЛЕЛДАЦХ САЖЕ ЦУРРЕНТ ХОРИЗПХАЛДАТЕМП ПРИНТ ЕНТРЫ ЛЕТТЕРЦЛЦАДЦёаЙСРЦОУТИНЦТЕМП ГОТО НЕЬТ ЕНТРЫ НЕЬТ ПАССЛДАё СХОВ А БОРДЕРЙСРЦОУТИНЦЦХ МОЖЕ ОЖЕР СПАЦЕФИЛТЛДАХДРБУФЫ ГЕТ ДАТАПХПЙСРЦОУТ ПРИНТ ДАТАИНЫПЛПБПЛФИЛТ КЕЕП СХОВИНГПЛАЦЛЦАДЦёСТАЦХ МОЖЕ ОЖЕР ХОРИЗ ПОСИТИОНЛДАё ЕИТХЕР ВРАП ОР МОЖЕ СПАЦЕЙСРЦОУТЙМПФИЛТЁФИЛТЙСРПРИНТДБАСЦцМД ааДД ддЕЛЕТЕ яяУИТ © ЛДАёСТАМАЬЛЕН ГЕТ ЦОММАНДЛДАёСТАИНПМОДЕЙСРИНПЛНЛДАЛНБУФЦМПёаБНЕТРЫДЙМПФЛъАДДТРЫДЦМПёдБЕЯФЛъДЕЛТРЫЯЦМПёяБНЕФИЛТЙМПФЛъЯУИТ ДЕЛЕТЕ А ВОРД ФРОМ ЛИСТФЛъДЕЛЛДЬёЙСРЦЛЕОС ЦЛЕАР ЛИНЕЙСРПРИНТДБАСЦдЕЛЕТЕ шаЦЛЦЛДАТЕМПАДЦёюЙСРЦОУТ ПРИНТ РАНГЕЙСРПРИНТАСЦщ © ЛДАёСТАИНПМОДЕ СЕТ МОДЕЙСРИНПЛН ГЕТ ДАТАЛДАЛНБУФЦМПёаБЦЦФИЛТ МОЖЕ БАЦК ЕРРОРСЕЦСБЦёа МАКЕ ИНТО шЬЬЬщ РАНГЕЦМПТЕМПБЦЦЙМПФИЛТ ОУТ ОФ РАНГЕПХАТАЬИНЬЙСРФНДВОРД ЛОЦАТЕ СЕЦОНД ВОРДСТЫТЕМП САЖЕ ОФФСЕТПЛАТАЬЙСРФНДВОРД ЛОЦАТЕ ФИРСТ ВОРДЛДЬТЕМП ПОИНТ ТО СЕЦОНД ВОРДФЛъДЕЛЛДАХДРБУФЬ МОЖЕ ДАТАСТАХДРБУФЫИНЫИНЬБНЕФЛъДЕЛ ЛООПЙМПФИЛТ СХОВ НЕВ СЦРЕЕН АДД А ВОРД ТО ЛИСТФЛъАДДЛДЬёЙСРЦЛЕОС ЦЛЕАР ЛИНЕЙСРПРИНТДБАСЦеНТЕР НЕВ ВОРД ЛДАё ЦХАРС МАЬ ЛЕНГТХСТАМАЬЛЕНЛДАёСТАИНПМОДЕ СЕТ ИНПУТ МОДЕЙСРИНПЛН ГЕТ ТХЕ ДАТАЛДАЛНБУФЦМПёаБЦЦФЛъАДД АБОРТЛДЬТЕМП ГЕТ ЛАСТ ВОРДЙСРФНДВОРД ФИНД ЕНДСТЫТЕМП САЖЕ ЦУРРЕНТ ЕНДЛДЬёФЛъАДДЛДАЛНБУФЬЦМПёаБЦЦФЛъАДДЁСТАХДРБУФЫ АДД БЫТЕИНЬИНЫБНЕФЛъАДД АНД ЛООПЛДАёЛДЫТЕМП МАРК ОЛД ЕНД ОФ ТАБЛЕСТАХДРБУФЫЙСРПРИНТДБАСЦеРРОР фИЛТЕР тАБЛЕ оЖЕРРУН пРЕСС шретурнщ ЙСРГЕТЦР ВАИТ ФОР ЦРФЛъАДДЙМПФИЛТ ГЕТ НЕВ ДАТАФЛъАДДЁЛДАё МАРК ЕНД ОФ ТАБЛЕСТАХДРБУФЫДЕЫЛДАХДРБУФЫ МАРК АС ЛАСТ ЦХАРОРАёСТАХДРБУФЫЙМПФИЛТ СХОВ НЕВ ТАБЛЕ ЯУИТ ФРОМ ФИЛТЕР ЦХАНГЕРФЛъЯУИТЛДЬёЙСРЦЛЕОС ЦЛЕАР БОТТОМ ОФ СЦРЕЕНЙСРПРИНТДБАСЦиС ТХЕ АБОЖЕ ТАБЛЕ ЦОРРЕЦТ шынщ © ЙСРИНПЫНБЦЦФЛъСАЖЕЙМПСТАРТ НОПЕФЛъСАЖЕЙСРЛОГПРГ ЛОГ ТО АЦОСОБЙ ДРИЖЕЛДЬёГНАМЕЛДАёГНАМЕ СЕТУП НАМЕ БУФФЕРЙСРМОЖНАМЕЙСРОПЕН ОПЕН ФИЛЕЛДЬёЛДАФИЛТЕР ПОСИТИОН ТО ФИЛТЕР ТАБЛЕЙСРСЕТМАРКЛДЬёХДРБУФЛДАёХДРБУФЛДЫё ВРИТЕ ПАГЕ БЛОЦКСЙСРВРБЛКЙСРЦЛОСЕ ТХАТС ИТ ФОР НОВЙМПСТАРТ ЛОЦАТЕ А ВОРД шИНДЕЬЕД БЫ ЬщФНДВОРДЛДЫёЦПЬё ВЕ ДОНЕ©БЕЯФНДВД ЫЕПФНДВДЛДАХДРБУФЫ ЛООП УНТИЛ НЕЬТ ВОРДБЕЯФНДВД ЕНД ОФ ТАБЛЕИНЫ ГОТО НЕЬТ БЫТЕАСЛА ЦХЕЦК ХИГХ БИТБЦЦФНДВДДЕЬ ЦОУНТ ДОВН ЕНТРИЕСБНЕФНДВДФНДВДЛДАХДРБУФЫБЕЯФНДВД ОППС ТХАТ ИС ЕНД МАРКЕРФНДВДЁЦЛЦРТС ВЕ АРЕ ДОНЕФНДВДСЕЦ ОППС ЕНД ОФ ТАБЛЕРТС яУИТ ЯУИТ ТХЕ ПРОГРАМДОъЯУИТЙСРФЦ ЦЛЕАР СЦРЕЕНСТАЦ ГОТО ТЕЬТ МОДЕЛДАёФФ РЕСЕТ ИНЖЕРСЕ ФЛАГСТАЁЙСРМЛИДБ ЯУИТДВПъЯУИТРТСПъЯУИТДБДБДВДБДВ
* Date: 3/11/88
*-------------------------------
*-------------------------------
* profanity filter
*-------------------------------
; change profanity filter (yuk)
do_filt jsr logprg ; log to 'acos.obj' drive
ldx #<gname
lda #>gname ; point to filename
jsr movname
jsr open ; open file
ldx #00
lda filter ; point at filter table
jsr setmark
ldx #<hdrbuf
lda #>hdrbuf
ldy #2 ; read 1 page (2 blocks)
jsr rdblk
jsr close ; thats it for now
filt2 jsr TopBox
jsr print
db 1,3,7
asc '- Edit Profanity Filter -',00
jsr cls
lda #0 ; start at #1
sta temp2
filt3 ldx temp2 ; get entry number
jsr fndword ; find the word
bcs filt5 ; opps, end of table
lda ch ; save current horiz
pha
lda temp2 ; print entry letter
clc
adc #'A'
jsr cout
inc temp2 ; goto next entry next pass
lda #')' ; show a border
jsr cout
inc ch ; move over 1 space
filt4 lda hdrbuf,y ; get data
php
jsr cout ; print data
iny
plp
bpl filt4 ; keep showing
pla
clc
adc #19
sta ch ; move over horiz position
lda #' ' ; either wrap or move 1 space
jsr cout
jmp filt3
filt5 jsr print
db 1,20,0
asc 'Cmd: A=Add, D=Delete, Q=Quit ? ',00
lda #1
sta maxlen ; get command
lda #%10000000
sta inpmode
jsr inpln
lda lnbuf
cmp #'A'
bne :tryd
jmp fl_add
:tryd cmp #'D'
beq fl_del
:tryq cmp #'Q'
bne filt5
jmp fl_quit
*-------------------------------
* delete a word from list
fl_del ldx #20
jsr cleos ; clear line
jsr print
db 1,20,0
asc 'Delete [A-',00
clc
lda temp2
adc #'@'
jsr cout ; print range
jsr print
asc '] ? ',00
lda #%10000000
sta inpmode ; set mode
jsr inpln ; get data
lda lnbuf
cmp #'A'
bcc filt5 ; move back, error
sec
sbc #'A' ; make into [0-xxx] range
cmp temp2
bcc *+5
jmp filt5 ; out of range
pha
tax
inx
jsr fndword ; locate second word
sty temp2+1 ; save offset
pla
tax
jsr fndword ; locate first word
ldx temp2+1 ; point to second word
fl_del2 lda hdrbuf,x ; move data
sta hdrbuf,y
iny
inx
bne fl_del2 ; loop
jmp filt2 ; show new screen
; add a word to list
fl_add ldx #20
jsr cleos ; clear line
jsr print
db 1,20,0
asc 'Enter new word: ',00
lda #16 ; 16 chars max length
sta maxlen
lda #%10000000
sta inpmode ; set input mode
jsr inpln ; get the data
lda lnbuf
cmp #'A'
bcc fl_add4 ; abort
ldx temp2 ; get last word
jsr fndword ; find end
sty temp2+1 ; save current end
ldx #0
fl_add2 lda lnbuf,x
cmp #'A'
bcc fl_add3
sta hdrbuf,y ; add byte
inx
iny
bne fl_add2 ; and loop
lda #0
ldy temp2+1 ; mark old end of table
sta hdrbuf,y
jsr print
db 1,20,0
asc 'Error: Filter Table Overrun. Press [RETURN] ',00
jsr getcr ; wait for cr
fl_add4 jmp filt5 ; get new data
fl_add3 lda #0 ; mark end of table
sta hdrbuf,y
dey
lda hdrbuf,y ; mark as last char
ora #$80
sta hdrbuf,y
jmp filt2 ; show new table
; quit from filter changer
fl_quit ldx #20
jsr cleos ; clear bottom of screen
jsr print
db 1,20,0
asc 'Is the above table correct [Y/N] ? ',00
jsr inpyn
bcc fl_save
jmp start ; nope!
fl_save jsr logprg ; log to 'acos.obj' drive
ldx #<gname
lda #>gname ; setup name buffer
jsr movname
jsr open ; open file
ldx #00
lda filter ; position to filter table
jsr setmark
ldx #<hdrbuf
lda #>hdrbuf
ldy #2 ; write 1 page (2 blocks)
jsr wrblk
jsr close ; thats it for now
jmp start
; locate a word [indexed by x]
fndword ldy #0
cpx #0 ; we done?
beq fndwd2 ; yep
fndwd1 lda hdrbuf,y ; loop until next word
beq fndwd4 ; end of table
iny ; goto next byte
asl a ; check high bit
bcc fndwd1
dex ; count down entries
bne fndwd1
fndwd2 lda hdrbuf,y
beq fndwd4 ; opps, that is end marker
fndwd3 clc
rts ; we are done
fndwd4 sec ; opps, end of table
rts
*-------------------------------
* Quit
*-------------------------------
; quit the program
do_quit jsr $fc58 ; clear screen
sta $c051 ; goto text mode
lda #$ff ; reset inverse flag
sta $32
jsr mli
db $65 ; quit
dw p_quit
rts
p_quit db 4
db 0
dw 0
db 0
dw 0

View File

@ -1 +1,89 @@
<EFBFBD> Πςιξτες ςε­γοξζιηυςατιοξ<EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD>ξυμμπςιξτ εψτ  »ξυμμ πςιξτες δςιφες<EFBFBD>σεςιαμ εψτ  »σεςιαμγουτ πςιξτες δςιφες<EFBFBD>ηςαππμες εψτ  »παςαμμεμ ηςαππμες πςιξτες δςιφες<EFBFBD>παςαμμεμ εψτ  »παςαμμεμ πςιξτες δςιφες<EFBFBD><EFBFBD>ςείπς κσς ΤοπΒοψ<EFBFBD> κσς πςιξτ<EFBFBD> δβ ±¬³¬±°<EFBFBD> ασγ §­ Πςιξτες Ιξτεςζαγεσ ­§¬°°<EFBFBD><EFBFBD> κσς γμσ<EFBFBD> μδψ £Όσταςτ » σετυπ εσγ θαξδμες<EFBFBD> μδα £Ύσταςτ<EFBFBD> κσς εσγαπε<EFBFBD><EFBFBD> κσς πςιξτ<EFBFBD> δβ ±¬·¬°<EFBFBD> ασγ § ± ­ Αππμε γ βυιμτ­ιξ ποςτ§¬°δ<EFBFBD> ασγ § ² ­ Αππμε Συπες Σεςιαμ Γαςδ ¨ΣΣΓ©§¬°δ<EFBFBD> ασγ § ³ ­ Αππμε ΙΙησ βυιμτ­ιξ ποςτ§¬°δ<EFBFBD> ασγ § ΄ ­ Ηεξεςιγ Πςιξτες Δςιφες§¬°δ<EFBFBD> ασγ § µ ­ Στας Νιγςοξιγσ Ηςαζστας§¬°δ<EFBFBD> ασγ § ­ Οςαξηε Νιγςο Ηςαππμες γας䧬°δ<EFBFBD> ασγ § · ­ Αππμε Παςαμμεμ ιξτεςζαγ姬°δ<EFBFBD> ασγ § Έ ­ Επσοξ ΑΠΜ πςιξτες γας䧬°δ<EFBFBD> ασγ § Ή ­ Αππςιγοςξ Παςαμμεμ γας䧬°δ<EFBFBD> ασγ §±° ­ Τωφεγ Πςιξτες Ιξτεςζαγ姬°δ<EFBFBD> ασγ §±± ­ Ξο Πςιξτες ιξ σωστεν§¬°δ¬°δ<EFBFBD> ασγ §ΧθιγθΏ Ϋ±­±±έ §¬°°<EFBFBD><EFBFBD> μδψ £±± »ηετ πςιξτες £<EFBFBD> κσς ιξπξυν<EFBFBD><EFBFBD> γνπ £µ<EFBFBD> βμτ Ίσεςιαμ<EFBFBD> γνπ £·<EFBFBD> βμτ Ίηςαππμες<EFBFBD> γνπ £±±<EFBFBD> βμτ Ίπαςαμμεμ<EFBFBD><EFBFBD>Ίξυμμ μδα £Όξυμμπςιξτ<EFBFBD> στα ποιξτ°<EFBFBD> μδα £Ύξυμμπςιξτ<EFBFBD> στα ποιξτ°«±<EFBFBD> κνπ Ίξοσμοτ<EFBFBD><EFBFBD>Ίσεςιαμ μδα £Όσεςιαμ<EFBFBD> μδψ £Ύσεςιαμ<EFBFBD> κνπ Ίηετσμοτ<EFBFBD><EFBFBD>Ίηςαππμες μδα £Όηςαππμες<EFBFBD> μδψ £Ύηςαππμες<EFBFBD> κνπ Ίηετσμοτ<EFBFBD><EFBFBD>Ίπαςαμμεμ μδα £Όπαςαμμεμ<EFBFBD> μδψ £Ύπαςαμμεμ<EFBFBD><EFBFBD>Ίηετσμοτ στα ποιξτ°<EFBFBD> στψ ποιξτ°«±<EFBFBD><EFBFBD> κσς πςιξτ<EFBFBD> δβ ±¬²°¬°<EFBFBD> ασγ §Χθιγθ σμοτποςτ δοεσ ωους πςιξτες§¬°δ<EFBFBD> ασγ §υσεΏ Ϋ±­·έ §¬°°<EFBFBD><EFBFBD> μδψ £· » ηετ σμοτ<EFBFBD> κσς ιξπξυν<EFBFBD> ασμ α<EFBFBD> ασμ α<EFBFBD> ασμ α<EFBFBD> ασμ α<EFBFBD>Ίξοσμοτ πθα  »σαφε σμοτ<EFBFBD><EFBFBD> μδω £° »νοφε τθε σιξημε παηε<EFBFBD>Ίμοοπ μδα ¨ποιξτ°©¬ω »σουςγε<EFBFBD> στα πςδςφ¬ω »δεστιξατιοξ<EFBFBD> ιξω<EFBFBD> βξε Ίμοοπ<EFBFBD><EFBFBD> πμα  »ηετ τθε σμοτ βαγλ<EFBFBD> στα πςδςφ<EFBFBD><EFBFBD> κσς γθιξιτ » γθεγλ ζος ιξιτ<EFBFBD> κνπ χςτγθη » χςιτε τθε γθαξηεσ<EFBFBD><EFBFBD><EFBFBD>
* Printer re-configuration
*-------------------------------
nullprint ext ;null printer driver
serial ext ;serial/cout printer driver
grappler ext ;parallel grappler printer driver
parallel ext ;parallel printer driver
re_pr jsr TopBox
jsr print
db 1,3,10
asc '- Printer Interfaces -',00
jsr cls
ldx #<start ; setup esc handler
lda #>start
jsr escape
jsr print
db 1,7,0
asc ' 1 - Apple //c built-in port',0d
asc ' 2 - Apple Super Serial Card (SSC)',0d
asc ' 3 - Apple IIgs built-in port',0d
asc ' 4 - Generic Printer Driver',0d
asc ' 5 - Star Micronics Grafstar',0d
asc ' 6 - Orange Micro Grappler card',0d
asc ' 7 - Apple Parallel interface',0d
asc ' 8 - Epson APL printer card',0d
asc ' 9 - Appricorn Parallel card',0d
asc '10 - Tyvec Printer Interface',0d
asc '11 - No Printer in system',0d,0d
asc 'Which? [1-11] ',00
ldx #11 ;get printer #
jsr inpnum
cmp #5
blt :serial
cmp #7
blt :grappler
cmp #11
blt :parallel
:null lda #<nullprint
sta point0
lda #>nullprint
sta point0+1
jmp :noslot
:serial lda #<serial
ldx #>serial
jmp :getslot
:grappler lda #<grappler
ldx #>grappler
jmp :getslot
:parallel lda #<parallel
ldx #>parallel
:getslot sta point0
stx point0+1
jsr print
db 1,20,0
asc 'Which slot/port does your printer',0d
asc 'use? [1-7] ',00
ldx #7 ; get slot
jsr inpnum
asl a
asl a
asl a
asl a
:noslot pha ;save slot
ldy #0 ;move the single page
:loop lda (point0),y ;source
sta prdrv,y ;destination
iny
bne :loop
pla ;get the slot back
sta prdrv
jsr chinit ; check for init
jmp wrtchg ; write the changes

View File

@ -1 +1,68 @@
гРАППЛЕР пРИНТЕР дРИЖЕР дАТЕ ЛСТОФФРЕЛДСКРЕЛГРАППЛЕРЦРЕЯУДЛФЕЯУАГРАППЛЕРЕНТОРГЦ ЙУМП ТАБЛЕСЛОТДБЙМПИНИТЙМППРИНТЙМПЦЛЕАР ИНИТ ПРИНТЕРИНИТРТС НО ИНИТ ЦОДЕ НЕЕДЕД ПРИНТ ЦХАРАЦТЕР а ЦХАРАЦТЕРПРИНТПХАСТЬСАЖЕъЬЛДЬСЛОТПРИНТЛДАЦЬ ЦХЕЦК ПРИНТЕР СТАТУСАНДё ЦХЕЦК БУСЫВАИТ БИТСЕОРё ТУРН АЛЛ БИТС ОФФБНЕПРИНТ ВАИТ ТО ЦОМЕ РЕАДЫПЛАПХААНДёФСТАЦЬ ПРИНТ ДАТАЦМПёЦРБНЕПРИНТЁЛДАёЛФ АДД ЛФ ТО ЦРЛДЬСАЖЕъЬЙСРПРИНТПРИНТЁЛДЬСАЖЕъЬ ФИНИСХ УППЛАРТС ЦЛЕАР ПРИНТ БУФФЕР НОТ АЖАИЛАБЛЕЦЛЕАРРТССАЖЕъЬДБ
********************************
* *
* Grappler Printer Driver *
* *
********************************
*-------------------------------
* Date: 12/07/86
*-------------------------------
lst off
rel
dsk rel/grappler
cr equ $0d
lf equ $0a
grappler ent
*-------------------------------
org $c00
; jump table
slot db $10
jmp init
jmp print
jmp clear
*-------------------------------
* init printer
init rts ; no init code needed
*-------------------------------
* print character: A = character
print pha
stx save_x
ldx slot
print2 lda $c080,x ; check printer status
and #%00000111 ; check busy/wait bits
eor #%00000011 ; turn all bits off
bne print2 ; wait to come ready
pla
pha
and #$7f
sta $c080,x ; print data
cmp #cr
bne print3
lda #lf ; add lf to cr
ldx save_x
jsr print
print3 ldx save_x ; finish up
pla
rts
*-------------------------------
* clear print buffer (not available)
clear rts
save_x db 0

View File

@ -1 +1,32 @@
нО пРИНТЕР дРИЖЕР дАТЕ ЁЛСТОФФРЕЛДСКРЕЛНУЛЛНУЛЛПРИНТЕНТОРГЦ ЙУМП ТАБЛЕСЛОТДБЙМПИНИТЙМППРИНТЙМПЦЛЕАР ИНИТ ПРИНТЕРИНИТРТС ПРИНТ ЦХАРАЦТЕР а ЦХАРАЦТЕРПРИНТРТС ЦЛЕАР ПРИНТ БУФФЕР НОТ АЖАИЛАБЛЕЦЛЕАРРТС
********************************
* *
* No Printer Driver *
* *
********************************
*-------------------------------
* Date: 01/03/86
*-------------------------------
lst off
rel
dsk rel/null
nullprint ent
org $c00
; jump table
slot db $10
jmp init
jmp print
jmp clear
; init printer
init rts
; print character: A = character
print rts
; clear print buffer (not available)
clear rts

View File

@ -1 +1,68 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> Πςιξτες Θεαδες Βμογλ <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD> ΔατεΊ °±°Έ·<EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD><EFBFBD><EFBFBD> μοαδ ιξζοΊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> ¤Έ°° ½ θεαδες »οζζσετ<EFBFBD><EFBFBD> ¤α°° ½ παςαμμεμ πςιξτες »²<EFBFBD><EFBFBD> ¤β°° ½ ηςαππμες »³<EFBFBD><EFBFBD> ¤γ°° ½ γουτ βασεδ »΄<EFBFBD><EFBFBD> ¤δ°° ½ ξο πςιξτες »µ<EFBFBD><EFBFBD> οςη ¤°Έ°°<EFBFBD><EFBFBD><EFBFBD> Ερυατεσ<EFBFBD><EFBFBD> ώώώώώώώ<EFBFBD><EFBFBD>γς ερυ ¤°δ<EFBFBD>μζ ερυ ¤°α<EFBFBD><EFBFBD> δβ ¤°΄¬¤°±<EFBFBD> ασγ §Αππμε γ Πςιξτες Ποςτ §<EFBFBD> δβ ¤°²¬¤°±<EFBFBD> ασγ §Αππμε Παςαμμεμ Ιξτεςζαγε §<EFBFBD> δβ ¤°΄¬¤°±<EFBFBD> ασγ §Αππμε Συπες Σεςιαμ Γαςδ §<EFBFBD> δβ ¤°²¬¤°±<EFBFBD> ασγ §Επσοξ ΑΠΜ Πςιξτες Γαςδ §<EFBFBD> δβ ¤°²¬¤°±<EFBFBD> ασγ §Τωφεγ Πςιξτες Ιξτεςζαγε §<EFBFBD> δβ ¤°²¬¤°±<EFBFBD> ασγ §Αππςιγοςξ Παςαμμεμ Γαςδ §<EFBFBD> δβ ¤°³¬¤°±<EFBFBD> ασγ §Στας Νιγςοξιγσ Ηςαζστας §<EFBFBD> δβ ¤°³¬¤°±<EFBFBD> ασγ §Οςαξηε Νιγςο Ηςαπμες Γαςδ §<EFBFBD> δβ ¤°΄¬¤°±<EFBFBD> ασγ §Ηεξεςιγ Πςιξτες Δςιφες §<EFBFBD> δβ ¤Έµ¬¤°±<EFBFBD> ασγ §Ξο Πςιξτες ιξ Σωστεν §<EFBFBD> δβ °°¬°°<EFBFBD> δσ ά<EFBFBD><EFBFBD> οςη ¤°α°°<EFBFBD> οςη ¤°γ°°<EFBFBD> πυτ νεςμιξηββσπςιξτεςπαςαμμεμ<EFBFBD> δσ ά<EFBFBD> οςη ¤°β°°<EFBFBD> οςη ¤°γ°°<EFBFBD> πυτ νεςμιξηββσπςιξτεςηςαππμες<EFBFBD> δσ ά<EFBFBD> οςη ¤°γ°°<EFBFBD> οςη ¤°γ°°<EFBFBD> πυτ νεςμιξηββσπςιξτεςσεςιαμ<EFBFBD> δσ ά<EFBFBD> οςη ¤°δ°°<EFBFBD> οςη ¤°γ°°<EFBFBD> πυτ νεςμιξηββσπςιξτεςξυμμ<EFBFBD><EFBFBD> σαφ ηββσ®πςοπςιξτεςσ<EFBFBD><EFBFBD><EFBFBD>
********************************
* *
* Printer Header Block *
* *
********************************
*-------------------------------
* Date: 01/06/87
*-------------------------------
*
* load info:
*
* $800 = header ;offset
* $a00 = parallel printer ;2
* $b00 = grappler ;3
* $c00 = cout based ;4
* $d00 = no printer ;5
org $0800
* Equates
* ~~~~~~~
cr equ $0d
lf equ $0a
db $04,$01
asc 'Apple //c Printer Port '
db $02,$01
asc 'Apple Parallel Interface '
db $04,$01
asc 'Apple Super Serial Card '
db $02,$01
asc 'Epson APL Printer Card '
db $02,$01
asc 'Tyvec Printer Interface '
db $02,$01
asc 'Appricorn Parallel Card '
db $03,$01
asc 'Star Micronics Grafstar '
db $03,$01
asc 'Orange Micro Grapler Card '
db $04,$01
asc 'Generic Printer Driver '
db $85,$01
asc 'No Printer in System '
db 00,00
ds \
org $0a00
org $0c00
put /merlin/gbbs/printer/parallel
ds \
org $0b00
org $0c00
put /merlin/gbbs/printer/grappler
ds \
org $0c00
org $0c00
put /merlin/gbbs/printer/serial
ds \
org $0d00
org $0c00
put /merlin/gbbs/printer/null
sav /gbbs.pro/printers

View File

@ -1 +1,70 @@
пАРАЛЛЕЛ пРИНТЕР дРИЖЕР дАТЕ ЛСТОФФРЕЛДСКРЕЛПАРАЛЛЕЛЦРЕЯУДЛФЕЯУАПАРАЛЛЕЛЕНТОРГЦСЛОТДБЙМПИНИТЙМППРИНТЙМПЦЛЕАРИНИТЛДАСЛОТЛУПЛСРАчЦЛЦАДЦёЦ ГЕТ цЬ ЖАЛУЕСТАПРИНТРТС ПРИНТ ЦХАРАЦТЕР а ЦХАРАЦТЕРПРИНТПХАСТЬСАЖЕъЬПРИНТЛДАЦЦ ИС ПРИНТЕР РЕАДЫ©БМИПРИНТ НОПЕПЛАПХАЛДЬСЛОТ ГЕТ ОФФСЕТАНДёФСТАЦЬ ПРИНТ ДАТАЦМПёЦРБНЕПРИНТЁЛДАёЛФ АДД ЛФ ТО ЦРЛДЬСАЖЕъЬЙСРПРИНТПРИНТЁЛДЬСАЖЕъЬ ФИНИСХ УППЛАРТСЦЛЕАРРТССАЖЕъЬДБ
********************************
* *
* Parallel Printer Driver *
* *
********************************
*-------------------------------
* Date: 12/07/86
*-------------------------------
lst off
rel
dsk rel/parallel
cr equ $0d
lf equ $0a
parallel ent
*-------------------------------
org $c00
slot db $10
jmp init
jmp print
jmp clear
*-------------------------------
init lda slot
lup 4
lsr a
--^
clc
adc #$c0 ; get $Cx value
sta print2+2
rts
*-------------------------------
* print character: A = character
print pha
stx save_x
print2 lda $c1c1 ; is printer ready?
bmi print2 ; nope
pla
pha
ldx slot ; get offset
and #$7f
sta $c080,x ; print data
cmp #cr
bne print3
lda #lf ; add lf to cr
ldx save_x
jsr print
print3 ldx save_x ; finish up
pla
rts
*-------------------------------
clear rts
save_x db 0

View File

@ -1 +1,124 @@
сЕРИАЛ пРИНТЕР дРИЖЕР дАТЕ ЛСТОФФРЕЛДСКРЕЛСЕРИАЛЦРЕЯУДЛФЕЯУАСЕРИАЛЕНТОРГЦ ЙУМП ТАБЛЕСЛОТДБЙМПИНИТЙМППРИНТЙМПЦЛЕАР ФЛАГ ИНИТ СТАТУС ФОР ОУТПУТИНИТПХАЛДАё СИГНАЛ ТХАТ ПРИНТЕР НОТ ИНИТЕДСТАИНИТФЛГПЛАРТС ПРИНТ ЦХАРАЦТЕР а ЦХАРАЦТЕРПРИНТПХП ДИСАБЛЕ ИНТССЕИПХА САЖЕ АЛЛ РЕГССТЬСАЖЕъЬСТЫСАЖЕъЫЛДАЦ ЕНАБЛЕ РОМСЛДЬёЁПРИНТЛДАЬ САЖЕ ЗЕРО ПАГЕ СТУФФСТАЗЕРОЬДЕЬБПЛПРИНТБИТИНИТФЛГ ХАС ПРИНТЕР БЕЕН УСЕД©БМИПРИНТЁ ЫЕПЛДАСЛОТСТА САЖЕ СЛОТ ФОР ЦАРДЛУПЛСРА МОЖЕ ДОВН СЛОТчЦЛЦАДЦёЦСТАПРИНТСТАЁ ПОИНТ Ё АТ ЦЛДАё ИНИТ ПРИНТЕР ЦАРДТАЬТАЫСТА ЗЕРО ХОРИЗ ОФФСЕТСТА ЗЕРО ЦХАРАЦТЕР БУФФЕРСТАЁПРИНТЙСРЦЛДАЁ ПОИНТ ТО ОУТПУТ РОУТИНЕСТАЙПРИНТЛДАЁСТАЙПРИНТДЕЦИНИТФЛГ СХОВ ВЕ ХАЖЕ ДОНЕ ИНИТЛДАёи СЕНД ЦТРЛи НЙСРДОПРИНТЛДАёЙСРДОПРИНТЛДАёЙСРДОПРИНТЛДАёнЙСРДОПРИНТЛДАёЦРЙСРДОПРИНТПРИНТЁЛДАё СЕТ ЦХ ОЖЕР ТО БОРДЕРСТАПЛА ГЕТ БЫТЕ ТО ПРИНТПХАЙСРДОПРИНТЛДЬёЁПРИНТЛДАЗЕРОЬ РЕСТОРЕ ЗЕРО ПАГЕСТАЬДЕЬБПЛПРИНТЛДАЦЁ ЕНАБЛЕ РАМ ЦАРДЛДАЦЁЛДЬСАЖЕъЬ РЕСТОРЕ РЕГСЛДЫСАЖЕъЫПЛАПЛП РЕСТОРЕ ИНТ СТАТУСРТСДОПРИНТОРАё ПРИНТ ВИТХ ХИГХБИТ СЕТЙПРИНТЙМПЦ ДО ОУТПУТ РОУТИНЕ ЦЛЕАР ПРИНТ БУФФЕР НОТ АЖАИЛАБЛЕЦЛЕАРРТССАЖЕъЬДБСАЖЕъЫДБИНИТФЛГДБЗЕРОДС
********************************
* *
* Serial Printer Driver *
* *
********************************
*-------------------------------
* Date: 12/07/86
*-------------------------------
lst off
rel
dsk rel/serial
cr equ $0d
lf equ $0a
serial ent
org $c00
*-------------------------------
; jump table
slot db $10
jmp init
jmp print
jmp clear
*-------------------------------
* flag init status for output
init pha
lda #0 ; signal that printer not init'ed
sta initflg
pla
rts
*-------------------------------
* print character: A = character
print php ; disable int's
sei
pha ; save all reg's
stx save_x
sty save_y
lda $c082 ; enable roms
ldx #$13
print1 lda $24,x ; save zero page stuff
sta zero,x
dex
bpl print1
bit initflg ; has printer been used?
bmi print3 ; yep
lda slot
sta $26 ; save slot for card
lup 4
lsr a ; move down slot
--^
clc
adc #$c0
sta print2+2
sta $37 ; point ($0036) at $c100
lda #0 ; init printer card
tax
tay
sta $24 ; zero horiz offset
sta $27 ; zero character buffer
sta $36
print2 jsr $c100
lda $36 ; point to output routine
sta jprint+1
lda $37
sta jprint+2
dec initflg ; show we have done init
lda #'I'-$40 ; send ctrl-I 80 n
jsr doprint
lda #'8'
jsr doprint
lda #'0'
jsr doprint
lda #'N'
jsr doprint
lda #cr
jsr doprint
print3 lda #0 ; set ch over to border
sta $24
pla ; get byte to print
pha
jsr doprint
ldx #$13
print4 lda zero,x ; restore zero page
sta $24,x
dex
bpl print4
lda $c083 ; enable ram card
lda $c083
ldx save_x ; restore reg's
ldy save_y
pla
plp ; restore int status
rts
doprint ora #$80 ; print with high-bit set
jprint jmp $c000 ; do output routine
; clear print buffer (not available)
clear rts
save_x db 0
save_y db 0
initflg db 0
zero ds $14

View File

@ -1 +1,250 @@
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD> ΗΒΒΣ Γοξζιη ­ Πςοδοσ Στοςαηε <EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD> ΔατεΊ ³±±ΈΈ<EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD>ςείστος κσς γμσ » γμεας σγςεεξ<EFBFBD><EFBFBD> μδα £Όθδςβυζ<EFBFBD> στα τενπ<EFBFBD> μδα £Ύθδςβυζ<EFBFBD> στα τενπ«±<EFBFBD><EFBFBD> μδψ £° » σταςτ ποιξτεςσ<EFBFBD> μδω £°<EFBFBD> στω τενπ² » σετ δεφιγε γουξτ ατ ϊεςο<EFBFBD>στος² μδα δεφξαν¬ψ » ηετ δςιφε ιξζο<EFBFBD> στα τεν𲫱<EFBFBD><EFBFBD>στος³ μδα δεφξαν¬ψ » γοπω πατθξανε<EFBFBD> στα ¨τενπ©¬ω<EFBFBD> ιξψ<EFBFBD> ιξω<EFBFBD> δεγ τεν𲫱<EFBFBD> βπμ στος³<EFBFBD><EFBFBD> γμγ<EFBFBD> μδα τενπ » ηο το ξεψτ αδδςεσσ<EFBFBD> αδγ £±²Έ<EFBFBD> στα τενπ<EFBFBD> μδα τενπ«±<EFBFBD> αδγ £°<EFBFBD> στα τενπ«±<EFBFBD><EFBFBD> μδω £°<EFBFBD> ιξγ τενπ² » ιξγ ξυνβες οζ πατθξανεσ<EFBFBD> μδα τενπ²<EFBFBD> γνπ £±² » δοξε αμμ ±²Ώ<EFBFBD> βξε στος² » ξοπε<EFBFBD><EFBFBD>στος΄ κσς ΤοπΒοψ<EFBFBD> κσς πςιξτ<EFBFBD> δβ ±¬³¬²<EFBFBD> ασγ §­ Εδιτ Δςιφε Σπεγιζιες Αμμογατιοξ ­§¬°°<EFBFBD> κσς γμσ<EFBFBD><EFBFBD> μδψ £­±<EFBFBD>στοςµ ιξψ<EFBFBD> κσς σθχπζψ » σθοχ δςιφε<EFBFBD> μδα £γς » αδδ εξδ οζ μιξε<EFBFBD> κσς γουτ<EFBFBD> γπψ £±±<EFBFBD> βγγ στοςµ » σθοχ αμμ ±² εξτςιεσ<EFBFBD><EFBFBD>στος κσς πςιξτ<EFBFBD> δβ ±¬²°¬°<EFBFBD> ασγ §ΕδιτΊ ΫΑ­Μέ ος Ρ½Ρυιτ Ώ §¬°°<EFBFBD><EFBFBD> μδα £¥±°°°°°°°<EFBFBD> στα ιξπνοδε » σετ νοδε °<EFBFBD> μδα £±<EFBFBD> στα ναψμεξ » σετ μεξητθ το ±<EFBFBD><EFBFBD> κσς ιξπμξ » ηετ ιξπυτ<EFBFBD> μδα μξβυζ<EFBFBD> γν𠣧ѧ » ρυιτΏ<EFBFBD> βξε στος· » ωεπ<EFBFBD><EFBFBD> κνπ στοςΉ » θαξδμε ρυιτ<EFBFBD><EFBFBD>στος· σεγ<EFBFBD> σβγ £§Α§ » ναλε ιξτο ςαξηε<EFBFBD> γνπ £±² » ισ ιτ ολΏ<EFBFBD> βγσ στος » ξοπε<EFBFBD><EFBFBD> πθα<EFBFBD> ταψ<EFBFBD> κσς ζιξδδςφ » ζιξδ τθε δςιφε μογατιοξ<EFBFBD><EFBFBD> μδψ £²°<EFBFBD> κσς γμεοσ » γμαες μαστ μιξε<EFBFBD><EFBFBD> μδψ £²° » ποσιτιοξ<EFBFBD> στψ γφ<EFBFBD> μδψ £°<EFBFBD> στψ γθ<EFBFBD><EFBFBD> πμα<EFBFBD> γμγ<EFBFBD> αδγ £§Α§ » σθοχ δςιφε σπεγιζιες<EFBFBD> κσς γουτ<EFBFBD> κσς πςιξτ<EFBFBD> ασγ §Ί §¬°°<EFBFBD><EFBFBD> μδα £³° » ναλε ναψ μεξητθ ³² τοταμ<EFBFBD> στα ναψμεξ<EFBFBD> μδα £¥±°±°°°°±<EFBFBD> στα ιξπνοδε<EFBFBD><EFBFBD> κσς ιξπμξ<EFBFBD> μδα μξβυζ­±¬ω<EFBFBD> γν𠣧§ » γθεγλ ζος εξδιξη σμασθ<EFBFBD> βξε στος·ζ<EFBFBD><EFBFBD> μδα £γς » δεμετε εξδιξη σμασθ<EFBFBD> στα μξβυζ­±¬ω<EFBFBD><EFBFBD>στος·ζ μδα μξβυζ » διδ τθεω κυστ δο α ςετυςξΏ<EFBFBD> γνπ £γς<EFBFBD> βξε στοςΈ »ξοπε<EFBFBD><EFBFBD> κσς πςιξτ<EFBFBD> δβ ±¬²°¬°<EFBFBD> ασγ §Γμεας γοξτεξτσ οζ τθισ μιξε ΫΩΞέ Ώ §¬°°<EFBFBD><EFBFBD> κσς ιξπωξ » ηετ αξσχες<EFBFBD> βγσ στος·α » ξοπε<EFBFBD><EFBFBD> μδω £°<EFBFBD> τωα  » ξυμμιζω αξ εξτςω<EFBFBD> στα ¨τεν𴩬ω<EFBFBD>στος·α κνπ στος΄ » δο αξοτθες<EFBFBD><EFBFBD>στοςΈ μδψ £°<EFBFBD> μδω £²<EFBFBD>στοςΈα μδα μξβυζ¬ψ » γοπω πατθξανε<EFBFBD> στα ¨τεν𴩬ω<EFBFBD> ιξψ<EFBFBD> ιξω<EFBFBD> γνπ £γς<EFBFBD> βξε στοςΈα<EFBFBD><EFBFBD> μδω £° » σαφε μεξητθ<EFBFBD> τψα<EFBFBD> στα ¨τεν𴩬ω<EFBFBD> ιξω<EFBFBD> μδα £§§ » αδδ μεαδιξη σμασθ<EFBFBD> στα ¨τεν𴩬ω<EFBFBD> κνπ στος΄ » σθοχ ςεσυμτσ<EFBFBD><EFBFBD><EFBFBD>στοςΉα κνπ σταςτ » αβοςτ ουτ<EFBFBD><EFBFBD>στοςΉ μδψ £²°<EFBFBD> κσς γμεοσ » γμεας βοττον<EFBFBD> κσς πςιξτ<EFBFBD> δβ ±¬²°¬°<EFBFBD> ασγ §Ισ τθε αβοφε γοςςεγτ ΫΩΞέ Ώ §¬°°<EFBFBD> κσς ιξπωξ<EFBFBD> βγσ στοςΉα » ξοπε<EFBFBD><EFBFBD> μδα £Όθδςβυζ<EFBFBD> στα τενπ » ποιξτ ατ πατθξανεσ<EFBFBD> μδα £Ύθδςβυζ<EFBFBD> στα τενπ«±<EFBFBD><EFBFBD> μδψ £°<EFBFBD> μδω £°<EFBFBD> στω τενπ² » σταςτ χιτθ δςιφε ΑΊ<EFBFBD>στοςΉβ μδα ¨τενπ©¬ω<EFBFBD> στα τεν𲫱 » σαφε μεξητθ<EFBFBD><EFBFBD>στοςΉγ μδα ¨τενπ©¬ω » ηετ δατα<EFBFBD> στα δεφξαν¬ψ<EFBFBD> ιξψ<EFBFBD> γπψ £¤ζ° » ισ ταβμε ολΏ<EFBFBD> βερ στοςΉδ » ξοπε¬ ιτ ισ τοο βιη<EFBFBD><EFBFBD> ιξω<EFBFBD> δεγ τεν𲫱 » γουξτ δοχξ μεξητθ<EFBFBD> βπμ στοςΉγ<EFBFBD><EFBFBD> γμγ<EFBFBD> μδα τενπ<EFBFBD> αδγ £¤Έ° » ηο το ξεψτ ζιεμδ<EFBFBD> στα τενπ<EFBFBD> μδα τενπ«±<EFBFBD> αδγ £°<EFBFBD> στα τενπ«±<EFBFBD><EFBFBD> μδω £° » ςεσετ ποιξτες χιτθιξ ζιεμδ<EFBFBD> ιξγ τενπ²<EFBFBD> μδα τενπ² » δοξε αμμ ±² ωετΏ<EFBFBD> γνπ £±²<EFBFBD> βξε στοςΉβ » ξοπε¬ μοοπ<EFBFBD> κνπ χςτγθη » χςιτε γθαξηεσ το δισλ<EFBFBD><EFBFBD>στοςΉδ κσς γμσ<EFBFBD> κσς πςιξτ<EFBFBD> ασγ §Ε<EFBFBD><EFBFBD>Ο<EFBFBD> ΅§¬°δ¬°δ<EFBFBD> ασγ §Οφεςζμοχ εςςος® Τοο νυγθ δατα χιτθιξ §<EFBFBD> ασγ §δςιφε ταβμε® Γυτ δοχξ οξ τθε ανουξτ§¬°δ¬°δ<EFBFBD> ασγ §οζ δατα χιτθιξ τθε ταβμ宧<EFBFBD> δβ ±¬²°¬°<EFBFBD> ασγ §Πςεσσ Ϋ<EFBFBD>ΕΤΥ<EFBFBD>Ξέ το γοξτιξυε®®® §¬°°<EFBFBD><EFBFBD>στοςΉε κσς ςδλεω » χαιτ ζος α ςετυςξ<EFBFBD> γνπ £γς<EFBFBD> βξε στοςΉε<EFBFBD> κνπ στος΄ » ηετ ξεχ στυζζ<EFBFBD><EFBFBD><EFBFBD>» ποιξτ το τθε πατθξανε οζ α δεφιγε<EFBFBD>ζιξδδςφ μδα £° » σετ μοχες το °<EFBFBD> στα τενπ΄<EFBFBD> τψα<EFBFBD> μσς α<EFBFBD> ςος τενπ΄ » πυτ εψτςα ιξτο μοχ<EFBFBD> γμγ<EFBFBD> αδγ £Ύθδςβυζ<EFBFBD> στα τενπ΄«± » σετυπ θιηθ<EFBFBD> ςτσ<EFBFBD><EFBFBD><EFBFBD>» σθοχ α πατθξανε οζ α δεφιγε<EFBFBD>σθχπζψ κσς ζιξδδςφ » ποσιτιοξ<EFBFBD> τψα<EFBFBD> γμγ<EFBFBD> αδγ £§Α§ » σθοχ δςιφε ξανε<EFBFBD> κσς γουτ<EFBFBD><EFBFBD> μδα £§Ί§ » αδδ γομοξ<EFBFBD> κσς γουτ<EFBFBD><EFBFBD> μδα £§ § » πυτ ιξ σπαγε<EFBFBD> κσς γουτ<EFBFBD><EFBFBD> μδω £° » γθεγλ ζος δατα<EFBFBD> μδα ¨τεν𴩬ω<EFBFBD> στα τεν𲫱<EFBFBD> βερ πςδςφ³ » ξοπε¬ τθεςε ισξτ αξω<EFBFBD><EFBFBD>πςδςφ² ιξω<EFBFBD> μδα ¨τεν𴩬ω » ηετ βωτε οζ ξανε<EFBFBD> κσς γοξφ<EFBFBD> κσς γουτ » σθοχ ιτ<EFBFBD> δεγ τεν𲫱<EFBFBD> βξε πςδςφ² » λεεπ ηοιξη<EFBFBD><EFBFBD> γμγ<EFBFBD> ςτσ<EFBFBD><EFBFBD>πςδςφ³ σεγ  » ξο δατα<EFBFBD> ςτσ<EFBFBD><EFBFBD><EFBFBD>
********************************
* *
* GBBS Config - Prodos Storage *
* *
********************************
*-------------------------------
* Date: 3/11/88
*-------------------------------
re_stor jsr cls ; clear screen
lda #<hdrbuf
sta temp
lda #>hdrbuf
sta temp+1
ldx #0 ; start pointers
ldy #0
sty temp2 ; set device count at zero
stor2 lda devnam,x ; get drive info
sta temp2+1
stor3 lda devnam,x ; copy pathname
sta (temp),y
inx
iny
dec temp2+1
bpl stor3
clc
lda temp ; go to next address
adc #128
sta temp
lda temp+1
adc #0
sta temp+1
ldy #0
inc temp2 ; inc number of pathnames
lda temp2
cmp #12 ; done all 12?
bne stor2 ; nope
stor4 jsr TopBox
jsr print
db 1,3,2
asc '- Edit Drive Specifier Allocation -',00
jsr cls
ldx #-1
stor5 inx
jsr shwpfx ; show drive
lda #cr ; add end of line
jsr cout
cpx #11
bcc stor5 ; show all 12 entries
stor6 jsr print
db 1,20,0
asc 'Edit: [A-L] or Q=Quit ? ',00
lda #%10000000
sta inpmode ; set mode 0
lda #1
sta maxlen ; set length to 1
jsr inpln ; get input
lda lnbuf
cmp #'Q' ; quit?
bne stor7 ; yep
jmp stor9 ; handle quit
stor7 sec
sbc #'A' ; make into range
cmp #12 ; is it ok?
bcs stor6 ; nope
pha
tax
jsr finddrv ; find the drive location
ldx #20
jsr cleos ; claer last line
ldx #20 ; position
stx cv
ldx #0
stx ch
pla
clc
adc #'A' ; show drive specifier
jsr cout
jsr print
asc ': /',00
lda #30 ; make max length 32 total
sta maxlen
lda #%10100001
sta inpmode
jsr inpln
lda lnbuf-1,y
cmp #'/' ; check for ending slash
bne stor7f
lda #cr ; delete ending slash
sta lnbuf-1,y
stor7f lda lnbuf ; did they just do a return?
cmp #cr
bne stor8 ;nope
jsr print
db 1,20,0
asc 'Clear contents of this line [Y/N] ? ',00
jsr inpyn ; get answer
bcs stor7a ; nope
ldy #0
tya ; nullify an entry
sta (temp4),y
stor7a jmp stor4 ; do another
stor8 ldx #0
ldy #2
stor8a lda lnbuf,x ; copy pathname
sta (temp4),y
inx
iny
cmp #cr
bne stor8a
ldy #0 ; save length
txa
sta (temp4),y
iny
lda #'/' ; add leading slash
sta (temp4),y
jmp stor4 ; show results
stor9a jmp start ; abort out
stor9 ldx #20
jsr cleos ; clear bottom
jsr print
db 1,20,0
asc 'Is the above correct [Y/N] ? ',00
jsr inpyn
bcs stor9a ; nope
lda #<hdrbuf
sta temp ; point at pathnames
lda #>hdrbuf
sta temp+1
ldx #0
ldy #0
sty temp2 ; start with drive A:
stor9b lda (temp),y
sta temp2+1 ; save length
stor9c lda (temp),y ; get data
sta devnam,x
inx
cpx #$f0 ; is table ok?
beq stor9d ; nope, it is too big
iny
dec temp2+1 ; count down length
bpl stor9c
clc
lda temp
adc #$80 ; go to next field
sta temp
lda temp+1
adc #0
sta temp+1
ldy #0 ; reset pointer within field
inc temp2
lda temp2 ; done all 12 yet?
cmp #12
bne stor9b ; nope, loop
jmp wrtchg ; write changes to disk
stor9d jsr cls
jsr print
asc 'ERROR !',0d,0d
asc 'Overflow error. Too much data within '
asc 'drive table. Cut down on the amount',0d,0d
asc 'of data within the table.'
db 1,20,0
asc 'Press [RETURN] to continue... ',00
stor9e jsr rdkey ; wait for a return
cmp #cr
bne stor9e
jmp stor4 ; get new stuff
; point to the pathname of a device
finddrv lda #0 ; set lower to 0
sta temp4
txa
lsr a
ror temp4 ; put extra into low
clc
adc #>hdrbuf
sta temp4+1 ; setup high
rts
; show a pathname of a device
shwpfx jsr finddrv ; position
txa
clc
adc #'A' ; show drive name
jsr cout
lda #':' ; add colon
jsr cout
lda #' ' ; put in space
jsr cout
ldy #0 ; check for data
lda (temp4),y
sta temp2+1
beq prdrv3 ; nope, there isnt any
prdrv2 iny
lda (temp4),y ; get byte of name
jsr conv
jsr cout ; show it
dec temp2+1
bne prdrv2 ; keep going
clc
rts
prdrv3 sec ; no data
rts

File diff suppressed because one or more lines are too long

View File

@ -1 +1,126 @@
цОНФИГ пРОГРАМ сТАРТ дАТЕ БЕГИНСТАЦТЕЬТ МОДЕСТАцетУРН мОУСЕтЕЬТ ОФФБИТцЛДАёДОъЯУИТФУДГЕ РЕСЕТ ЖЕЦТОРСТАРЕСЕТЛДАёДОъЯУИТСТАРЕСЕТЕОРёаСТАРЕСЕТЛДЬёфРЕСЕТ СТАЦКТЬСЙСРФИНДЦОНФИНД ТХЕ ЦОНФИГ ДИСКЛОГИТЙСРжИДЕОсТАРТУП иНИТ ТХЕ ЖИДЕО ДРИЖЕРЙСРДОъМАИН ЙМП ЛОАДГ ФОРЦЕ ТО РЕЦОНФИГЙСРЦЛС ЦЛЕАР СЦРЕЕНЙСРПРИНТДБАСЦвХЕН ЫОУ ДО АН ИНИТИАЛ ЦОНФИГУРЕ АЛЛДАСЦПРЕЖИОУС ДАТА ВИЛЛ БЕ ДЕСТРОЫЕД АНДДАСЦРЕПЛАЦЕД ВИТХ ТХЕ НЕВ ЦОНФИГУРАТИОНДДАСЦалл олд цонфигуратион дата вилл бе лостДДДАСЦдО ЫОУ ВАНТ ТО ДО АН иНИТИАЛ цОНФИГУРЕ©ДАСЦшынщ ЙСРИНПЫН ИНПУТ ЫЕСНОБЦСЛОАДГЙСРЛДАЦОС ЛОАД ИН АЦОС ФИЛЕЙМПДОИНИТ ДО ИНИТИАЛ ЦОНФИГЛОАДГЙСРЛДЦОНФГ ЛОАД ЦОНФИГ СЕГМЕНТСТАРТЛДАё ТУРН ОФФ ЕСЦАПЕ ХАНДЛЕРСТАРЕФНУМЙСРЕСЦАПЕЙСРЦЛОСЕ ЦЛОСЕ АЛЛ ФИЛЕСЙСРЛОГЦОНЙСРДОъМАИНЙСРЦЛС ЦЛЕАР СЦРЕЕНЙСРПРИНТАСЦсЕЛЕЦТ АН оПТИОНДДАСЦ рЕЦОНФИГУРЕ мОДЕМДАСЦ рЕЦОНФИГУРЕ жИДЕОДАСЦ Ё рЕЦОНФИГУРЕ пРИНТЕРДАСЦ рЕЦОНФИГУРЕ цЛОЦКДАСЦ рЕЦОНФИГУРЕ сТОРАГЕДАСЦ еДИТ пРОФАНИТЫ фИЛТЕРДАСЦ еДИТ бУЛЛЕТИН бОАРД иНФОДАСЦ сОРТ АНД пРИНТ уСЕРЛИСТДАСЦ пУРГЕ уСЕРС фРОМ сЫСТЕМДАСЦ еЬИТ цОНФИГУРЕДДАСЦвХИЦХ© шщ ЛДЬё ГЕТ А НУМБЕР шщЙСРИНПНУМПХАЛДЬёСТАРТЛДАёСТАРТЙСРЕСЦАПЕЕСЦ ГОЕС БАЦК ТО ХЕРЕПЛААСЛАТАЬЛДАЙУМПТАБЛЕЬСТАПРНИНЬПУСХ ЛОВЛДАЙУМПТАБЛЕЬСТАПРНЙМППРНЙУМПТАБЛЕДВДАРЕъМДМДАРЕъЖИДДАРЕъПРДАРЕъЦЛКДАРЕъСТОРДАДОъФИЛТДАБРДЕДИТДАУСРЛИСТДАУСРКИЛЛДАДОъЯУИТ ПРИНТ ТХЕ ТОП БОЬДОъМАИНЙСРтОПбОЬЙСРПРИНТДБЁАСЦгббс цОНФИГ пРОГРАМ жЕРСИОН ЙСРПРИНТДБАСЦцОПЫРИГХТ кЕЖИН сМАЛЛВООДРТСИНИТДБУСРНАМЕДБАСЦусерсГНАМЕДБАСЦацособй
********************************
* *
* Config Program - Start *
* *
********************************
*-------------------------------
* Date: 5/29/91
*-------------------------------
begin sta $c051 ;text mode
sta $C00E ;Turn MouseText off
bit $C082
lda #<do_quit ;fudge reset vector
sta reset
lda #>do_quit
sta reset+1
eor #$A5
sta reset+2
ldx #$F0 ;reset stack
txs
jsr findcon ;find the config disk,logit
jsr VideoStartup ; Init the video driver
jsr do_main
* jmp loadg ;force to reconfig
jsr cls ; clear screen
jsr print
db 1,7,0
asc 'When you do an initial configure, all',0d
asc 'previous data will be destroyed and',0d
asc 'replaced with the new configuration.',0d
asc 'All old data will be lost.',0d,0d,0d
asc 'Do you want to do an Initial Configure?',0d
asc '[Y/N] ',00
jsr inpyn ; input yes/no
bcs loadg
jsr ldacos ; load in acos file
jmp doinit ; do initial config
*-------------------------------
loadg jsr ldconfg ; load config segment
start lda #0 ; turn off escape handler
sta refnum
jsr escape
jsr close ; close all files
jsr logcon
jsr do_main
jsr cls ; clear screen
jsr print
asc 'Select an Option:',0d,0d
asc ' 1 - Reconfigure Modem',0d
asc ' 2 - Reconfigure Video',0d
asc ' 3 - Reconfigure Printer',0d
asc ' 4 - Reconfigure Clock',0d
asc ' 5 - Reconfigure Storage',0d
asc ' 6 - Edit Profanity Filter',0d
asc ' 7 - Edit Bulletin Board Info',0d
asc ' 8 - Sort and Print Userlist',0d
asc ' 9 - Purge Users From System',0d
asc ' 10 - Exit Configure',0d,0d
asc 'Which? [1-10] ',00
ldx #10 ; get a number [1-6]
jsr inpnum
pha
ldx #<start
lda #>start
jsr escape ;esc goes back to here
pla
asl a
tax
lda jumptable,x
sta prn
inx ;push low
lda jumptable,x
sta prn+1
jmp (prn)
jumptable dw 0
da re_mdm
da re_vid
da re_pr
da re_clk
da re_stor
da do_filt
da brdedit
da usrlist
da usrkill
da do_quit
*-------------------------------
* print the top box
do_main jsr TopBox
jsr print
db 1,2,3
asc 'GBBS Config Program - Version 2.2',00
jsr print
db 1,4,2
asc 'Copyright 1986-2019 Kevin Smallwood',00
rts
*-------------------------------
init db 0
usrname db 5
asc 'USERS'
gname db 8
asc 'ACOS.OBJ'

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1,253 @@
<EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD> φιδεο δςιφες ζος γοξζιη<EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD> ΔατεΊ ³±±ΈΈ<EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD>παηε± ερυ ¤γ°µ΄<EFBFBD>παηε² ερυ ¤γ°µµ<EFBFBD><EFBFBD>ΦιδεοΣταςτυπ στα ¤γ°°γ »γμςΈ°φιδ<EFBFBD> στα ¤γ°°° »γμςΈ°γομ<EFBFBD> στα παηε±<EFBFBD><EFBFBD> μδα £° » σετ το παηε ±<EFBFBD> στα ιξφεςσε » σετ το ξοςναμ νοδε<EFBFBD> ςτσ<EFBFBD><EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD>γμσ μδα £ »γμεας σγςεεξ<EFBFBD> στα γφ »μιξε οξ δοχξ<EFBFBD><EFBFBD>γμσμυπ² μδα γφ »γμεας το εξδ οζ σγςεεξ<EFBFBD> ασμ α »γφ Ί½ γφ <EFBFBD> ²<EFBFBD> ταω<EFBFBD> μδα ΜιξεΑδδςεσσ¬ω<EFBFBD> στα βασε<EFBFBD> ιξω<EFBFBD> μδα ΜιξεΑδδςεσσ¬ω<EFBFBD> στα βασε«±<EFBFBD><EFBFBD> μδω £³Ή<EFBFBD> μδα £¤α°<EFBFBD>Ίμοοπ στα ¨βασ婬ω<EFBFBD> δεω<EFBFBD> βπμ Ίμοοπ<EFBFBD><EFBFBD> ιξγ γφ<EFBFBD> μδα γφ<EFBFBD> γνπ £²΄<EFBFBD> βξε γμσμυπ²<EFBFBD><EFBFBD> μδα £° »°¬<EFBFBD> στα γθ<EFBFBD> μδα £·<EFBFBD> στα γφ<EFBFBD> ςτσ<EFBFBD><EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD>γμεοσ στψ γφ<EFBFBD> κνπ γμσμυπ²<EFBFBD><EFBFBD>γμεομ πθα<EFBFBD> μδα γθ » σαφε μογατιοξ οζ γυςσος<EFBFBD> πθα<EFBFBD> μδα γφ<EFBFBD> πθα<EFBFBD><EFBFBD>γμεομ² μδα £§ §<EFBFBD> κσς γουτ » πυτ σπαγε οφες γθας<EFBFBD> μδα γθ<EFBFBD> βξε γμεομ² » ηο υξτιμ ιτ χςαπσ το ξεψτ μιξε<EFBFBD><EFBFBD> πμα<EFBFBD> στα γφ » πυτ γυςσος βαγλ<EFBFBD> πμα<EFBFBD> στα γθ<EFBFBD> πμα<EFBFBD> ςτσ<EFBFBD><EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD>ΤοπΒοψ πθα<EFBFBD><EFBFBD> μδα £°<EFBFBD> στα γφ<EFBFBD><EFBFBD> κσς δοΙΜιξε<EFBFBD> ιξγ γφ<EFBFBD> κσς δοΕδηε<EFBFBD> ιξγ γφ<EFBFBD> κσς δοΕδηε<EFBFBD> ιξγ γφ<EFBFBD> κσς δοΕδηε<EFBFBD> ιξγ γφ<EFBFBD> κσς δοΕδηε<EFBFBD> ιξγ γφ<EFBFBD> κσς δοΙΜιξε<EFBFBD><EFBFBD> μδω £³Ή<EFBFBD> μδα £¤²°<EFBFBD> στα ¨βασ婬ω<EFBFBD> μδω £°<EFBFBD> στα ¨βασ婬ω<EFBFBD><EFBFBD> πμα<EFBFBD> ςτσ<EFBFBD><EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD>δοΕδηε κσς ναλεβασε<EFBFBD><EFBFBD> μδω £°<EFBFBD> μδα £¤²°<EFBFBD> στα ¨βασ婬ω<EFBFBD><EFBFBD> μδω £³Έ<EFBFBD> μδα £¤α°<EFBFBD>Ίμοοπ στα ¨βασ婬ω<EFBFBD> δεω<EFBFBD> βξε Ίμοοπ<EFBFBD><EFBFBD> μδω £³Ή<EFBFBD> μδα £¤²°<EFBFBD> στα ¨βασ婬ω<EFBFBD> ςτσ<EFBFBD><EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD> πςιξτ αξ ιξφεςσε μιξε αγςοσσ τθε σγςεεξ<EFBFBD><EFBFBD>δοΙΜιξε κσς ναλεβασε<EFBFBD><EFBFBD> μδω £³Ή<EFBFBD> μδα £¤ΔΖ<EFBFBD>Ίμοοπ στα ¨βασ婬ω<EFBFBD> δεω<EFBFBD> βπμ Ίμοοπ<EFBFBD> ςτσ<EFBFBD><EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD>ναλεβασε μδα γφ<EFBFBD> ασμ α<EFBFBD> ταω  »σετυπ ιξδιςεγτ αδδςεσσ<EFBFBD> μδα ΜιξεΑδδςεσσ¬ω<EFBFBD> στα βασε<EFBFBD> ιξω<EFBFBD> μδα ΜιξεΑδδςεσσ¬ω<EFBFBD> στα βασε«±<EFBFBD> ςτσ<EFBFBD><EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD>πμοτγθς πθα  » σαφε<EFBFBD><EFBFBD> κσς ναλεβασε »σετυπ ιξδιςεγτ ζος σγςεεξ αδδςεσσ<EFBFBD><EFBFBD> μδω γθ<EFBFBD><EFBFBD> πμα<EFBFBD> οςα £¤Έ° »σετ θιηθ βιτ<EFBFBD> στα ¨βασ婬ω »πυτ ιτ οξτο τθε σγςεεξ<EFBFBD> ςτσ<EFBFBD><EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD> ουτπυτ α γθαςαγτες<EFBFBD><EFBFBD>γουτ στψ ψίσαφε » σαφε εφεςωτθιξη<EFBFBD> στω ωίσαφε<EFBFBD> πθα<EFBFBD><EFBFBD> αξδ £¤·ζ » γμεας θιηθ<EFBFBD> γνπ £γς<EFBFBD> βερ γουτ²<EFBFBD> γνπ £μζ<EFBFBD> βερ γουτ³<EFBFBD> γνπ £βσ<EFBFBD> βερ γουτµ<EFBFBD> γν𠣧 §<EFBFBD> βγγ γουτ΄<EFBFBD><EFBFBD> κσς πμοτγθς » πμοτ τθε συγλες<EFBFBD><EFBFBD> ιξγ γθ » νοφε οφες ± σπαγε<EFBFBD> μδω γθ<EFBFBD> γπω £΄° » χςαπ­αςουξδΏ<EFBFBD> βξε γουτ΄ » ξοπε<EFBFBD><EFBFBD>γουτ² μδω £° » ςεσετ θοςιϊ<EFBFBD> στω γθ<EFBFBD><EFBFBD>γουτ³ ιξγ γφ » ηο δοχξ ± μιξε<EFBFBD> μδα γφ » ισ ιτ ιξ ςαξηεΏ<EFBFBD> γνπ £²΄<EFBFBD> βξε γουτ΄ » ξοπε<EFBFBD><EFBFBD> δεγ γφ » πυτ ιτ βαγλ<EFBFBD><EFBFBD>γουτ΄ πμα<EFBFBD> μδψ ψίσαφε » ςεστοςε στυζζ<EFBFBD> μδω ωίσαφε<EFBFBD> ςτσ<EFBFBD><EFBFBD>γουτµ δεγ γθ » βαγλυπ<EFBFBD> βπμ γουτ΄ » αμμ ισ χεμμ<EFBFBD><EFBFBD> μδα £΄° » νοφε το εξδ οζ μιξε<EFBFBD> στα γθ<EFBFBD><EFBFBD> μδα γφ » αςε χε ατ τθε τοπ<EFBFBD> γνπ £°<EFBFBD> βερ γουτ΄ » ωεπ<EFBFBD><EFBFBD> δεγ γφ<EFBFBD> κνπ γουτ΄ » ολ¬ χε αςε δοξε<EFBFBD><EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD>ΜιξεΑδδςεσσ δχ ¤΄°°<EFBFBD> δχ ¤΄Έ°<EFBFBD> δχ ¤µ°°<EFBFBD> δχ ¤µΈ°<EFBFBD> δχ ¤°° »ζιςστ ±³ οζ τεψτ σγςεεξ<EFBFBD> δχ ¤Έ°<EFBFBD> δχ ¤·°°<EFBFBD> δχ ¤·Έ°<EFBFBD><EFBFBD> δχ ¤΄²Έ<EFBFBD> δχ ¤΄αΈ<EFBFBD> δχ ¤µ²Έ<EFBFBD> δχ ¤µαΈ<EFBFBD> δχ ¤²Έ »σεγοξδ ±³ οζ τεψτ σγςεεξ<EFBFBD> δχ ¤αΈ<EFBFBD> δχ ¤·²Έ<EFBFBD> δχ ¤·αΈ<EFBFBD><EFBFBD> δχ ¤΄µ°<EFBFBD> δχ ¤΄δ°<EFBFBD> δχ ¤µµ°<EFBFBD> δχ ¤µδ°<EFBFBD> δχ ¤µ° »μαστ ±³ οζ τεψτ σγςεεξ<EFBFBD> δχ ¤δ°<EFBFBD> δχ ¤·µ°<EFBFBD> δχ ¤·δ°<EFBFBD><EFBFBD><EFBFBD>
*-------------------------------
* video driver for config
*-------------------------------
*-------------------------------
* Date: 3/11/88
*-------------------------------
page1 equ $c054
page2 equ $c055
VideoStartup sta $c00c ;clr80vid
sta $c000 ;clr80col
sta page1
lda #0 ; set to page 1
sta inverse ; set to normal mode
rts
*-------------------------------
cls lda #6 ;clear screen
sta cv ;line 6 on down
clslup2 lda cv ;clear to end of screen
asl a ;cv := cv * 2
tay
lda LineAddress,y
sta base
iny
lda LineAddress,y
sta base+1
ldy #39
lda #$a0
:loop sta (base),y
dey
bpl :loop
inc cv
lda cv
cmp #24
bne clslup2
lda #0 ;0,6
sta ch
lda #7
sta cv
rts
*-------------------------------
cleos stx cv
jmp clslup2
cleol pha
lda ch ; save location of cursor
pha
lda cv
pha
cleol2 lda #' '
jsr cout ; put space over char
lda ch
bne cleol2 ; go until it wraps to next line
pla
sta cv ; put cursor back
pla
sta ch
pla
rts
*-------------------------------
TopBox pha
lda #0
sta cv
jsr doILine
inc cv
jsr doEdge
inc cv
jsr doEdge
inc cv
jsr doEdge
inc cv
jsr doEdge
inc cv
jsr doILine
ldy #39
lda #$20
sta (base),y
ldy #0
sta (base),y
pla
rts
*-------------------------------
doEdge jsr makebase
ldy #0
lda #$20
sta (base),y
ldy #38
lda #$a0
:loop sta (base),y
dey
bne :loop
ldy #39
lda #$20
sta (base),y
rts
*-------------------------------
* print an inverse line across the screen
doILine jsr makebase
ldy #39
lda #$DF
:loop sta (base),y
dey
bpl :loop
rts
*-------------------------------
makebase lda cv
asl a
tay ;setup indirect address
lda LineAddress,y
sta base
iny
lda LineAddress,y
sta base+1
rts
*-------------------------------
plotchr pha ; save
jsr makebase ;setup indirect for screen address
ldy ch
pla
ora #$80 ;set high bit
* check for ][ plus
stx x_save ; save x
ldx $fbb3
cpx #$ea ;][ plus?
bne plotchr1 ;nope
* convert everything to uppercase
cmp #"a" ;lower?
bcc plotchr1 ;nope
cmp #"z"+1 ;lower
bcs plotchr1 ;nope
sbc #$1f ;make upper
plotchr1 ldx x_save
sta (base),y ;put it onto the screen
rts
*-------------------------------
* output a character
cout stx x_save ; save everything
sty y_save
pha
and #$7f ; clear high
cmp #cr
beq cout2
cmp #lf
beq cout3
cmp #bs
beq cout5
cmp #' '
bcc cout4
jsr plotchr ; plot the sucker
inc ch ; move over 1 space
ldy ch
cpy #40 ; wrap-around?
bne cout4 ; nope
cout2 ldy #0 ; reset horiz
sty ch
cout3 inc cv ; go down 1 line
lda cv ; is it in range?
cmp #24
bne cout4 ; nope
dec cv ; put it back
cout4 pla
ldx x_save ; restore stuff
ldy y_save
rts
cout5 dec ch ; backup
bpl cout4 ; all is well
lda #40 ; move to end of line
sta ch
lda cv ; are we at the top
cmp #0
beq cout4 ; yep
dec cv
jmp cout4 ; ok, we are done
*-------------------------------
LineAddress dw $400
dw $480
dw $500
dw $580
dw $600 ;first 1/3 of text screen
dw $680
dw $700
dw $780
dw $428
dw $4a8
dw $528
dw $5a8
dw $628 ;second 1/3 of text screen
dw $6a8
dw $728
dw $7a8
dw $450
dw $4d0
dw $550
dw $5d0
dw $650 ;last 1/3 of text screen
dw $6d0
dw $750
dw $7d0

View File

@ -1 +1,73 @@
<EFBFBD> Φιδεο Δςιφες ςε­γοξζιηυςατιοξ<EFBFBD><EFBFBD>­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­<EFBFBD><EFBFBD>φιδ΄° εψτ<EFBFBD>φιδΈ° εψτ<EFBFBD>φιδ΄°πμ εψτ<EFBFBD>φιδεψ εψτ<EFBFBD><EFBFBD>ςείφιδ κσς ΤοπΒοψ<EFBFBD> κσς πςιξτ<EFBFBD> δβ ±¬³¬·<EFBFBD> ασγ §­ Γοξζιηυςε Φιδεο Δςιφες ­§¬°°<EFBFBD><EFBFBD> κσς γμσ<EFBFBD> μδψ £Όσταςτ » σετυπ εσγ θαξδμες<EFBFBD> μδα £Ύσταςτ<EFBFBD> κσς εσγαπε<EFBFBD><EFBFBD> κσς πςιξτ<EFBFBD> δβ ±¬·¬°<EFBFBD> ασγ § ± ­ Αππμε έΫ« χο μοχες γασ姬°δ<EFBFBD> ασγ § ² ­ Αππμε έΫ« χ μοχες γασ姬°δ<EFBFBD> ασγ § ³ ­ Αππμε έΫ« χ Φιδεψ Έ° γο짬°δ<EFBFBD> ασγ § ΄ ­ Αππμε ε ιξ ΄° γομ νοδ姬°δ<EFBFBD> ασγ § µ ­ Αππμε ε ιξ Έ° γομ νοδ姬°δ<EFBFBD> ασγ § ­ Αππμε γ ιξ ΄° γομ νοδ姬°δ<EFBFBD> ασγ § · ­ Αππμε γ ιξ Έ° γομ νοδ姬°δ<EFBFBD> ασγ § Έ ­ Αππμε ΙΙησ ιξ ΄° γομ νοδ姬°δ<EFBFBD> ασγ § Ή ­ Αππμε ΙΙησ ιξ Έ° γομ νοδ姬°δ¬°δ<EFBFBD> ασγ §ΧθιγθΏ Ϋ±­Ήέ §¬°°<EFBFBD><EFBFBD> μδψ £Ή »ηετ πςιξτες £<EFBFBD> κσς ιξπξυν<EFBFBD><EFBFBD> ασμ α »ποιξτ° ποιξτσ το τθε<EFBFBD> ταψ  »φιδεο δεφιγε δςιφες<EFBFBD> μδα Ίφιδταβμε¬ψ<EFBFBD> στα ποιξτ°<EFBFBD> ιξψ<EFBFBD> μδα Ίφιδταβμε¬ψ<EFBFBD> στα ποιξτ°«±<EFBFBD><EFBFBD> μδα £Όφιδδςφ »τεμμ ιτ το νοφε τθε φιδεο<EFBFBD> στα ποιξτ± »δςιφες<EFBFBD> μδα £Ύφιδδςφ<EFBFBD> στα ποιξτ±«±<EFBFBD><EFBFBD> μδψ £³ »νοφε ³ ιμμυστςιουσ παηεσ<EFBFBD>Ίμοοπ² μδω £°<EFBFBD>Ίμοοπ μδα ¨ποιξτ°©¬ω »σουςγε<EFBFBD> στα ¨ποιξτ±©¬ω »δεστιξατιοξ<EFBFBD> ιξω<EFBFBD> βξε Ίμοοπ<EFBFBD> ιξγ ποιξτ°«±<EFBFBD> ιξγ ποιξτ±«±<EFBFBD> δεψ<EFBFBD> βξε Ίμοοπ²<EFBFBD><EFBFBD> κσς γθιξιτ » γθεγλ ζος ιξιτ<EFBFBD> κνπ χςτγθη » χςιτε τθε γθαξηεσ<EFBFBD><EFBFBD>Ίφιδταβμε δχ °<EFBFBD> δα φιδ΄°<EFBFBD> δα φιδ΄°πμ<EFBFBD> δα φιδεψ<EFBFBD> δα φιδ΄°<EFBFBD> δα φιδΈ°<EFBFBD> δα φιδ΄°<EFBFBD> δα φιδΈ°<EFBFBD> δα φιδ΄°<EFBFBD> δα φιδΈ°<EFBFBD><EFBFBD><EFBFBD>
* Video Driver re-configuration
*-------------------------------
vid40 ext
vid80 ext
vid40pl ext
videx ext
re_vid jsr TopBox
jsr print
db 1,3,7
asc '- Configure Video Driver -',00
jsr cls
ldx #<start ; setup esc handler
lda #>start
jsr escape
jsr print
db 1,7,0
asc ' 1 - Apple ][+ w/o lower case',0d
asc ' 2 - Apple ][+ w/ lower case',0d
asc ' 3 - Apple ][+ w/ Videx 80 col',0d
asc ' 4 - Apple //e in 40 col mode',0d
asc ' 5 - Apple //e in 80 col mode',0d
asc ' 6 - Apple //c in 40 col mode',0d
asc ' 7 - Apple //c in 80 col mode',0d
asc ' 8 - Apple IIgs in 40 col mode',0d
asc ' 9 - Apple IIgs in 80 col mode',0d,0d
asc 'Which? [1-9] ',00
ldx #9 ;get printer #
jsr inpnum
asl a ;point0 points to the
tax ;video device driver
lda :vidtable,x
sta point0
inx
lda :vidtable,x
sta point0+1
lda #<viddrv ;tell it to move the video
sta point1 ;driver
lda #>viddrv
sta point1+1
ldx #3 ;move 3 illustrious pages
:loop2 ldy #0
:loop lda (point0),y ;source
sta (point1),y ;destination
iny
bne :loop
inc point0+1
inc point1+1
dex
bne :loop2
jsr chinit ; check for init
jmp wrtchg ; write the changes
:vidtable dw 0
da vid40
da vid40pl
da videx
da vid40
da vid80
da vid40
da vid80
da vid40
da vid80

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long