|
|
DataMuseum.dkPresents historical artifacts from the history of: RegneCentralen RC3600/RC7000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RegneCentralen RC3600/RC7000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 44544 (0xae00)
Types: TextFile
Names: »AED8«
└─⟦403f4c9ff⟧ Bits:30001796 SG0016 Floppy
└─⟦this⟧ »/AED8«
; 15.5.84 FÆRDIGVERSION NR 3, REV NR 2.06 /// FD /// AED8:N, :J
; INAKTIVISERING AF TTYFLAG INTO6 / 2.05 FÆRDIG / 15.5.84
; 14.5. VIRKEDE IKKE, RETTELSER !!
; 14.5.84 AFSLUTN AF VERSION MED NYT ;, =, ELEM @-RUTINER 2.05, AED8, "FDIT!"
; @E, @F RETTET LMV2 PÅBEG 12.5.84
; REV 2.04 11.5.84 (MÅSKE STADIG FEJL I NOGLE @-FKT!)
; @ RETTET AFTEN; TOSSEFEJL RETTET 10.5.84 EFTERM ; 10.5.84 FORMIDDAG
; 9.5.84 EFTERM
; (FORTS); VERSION 2.03 9.5.84 / RETTELSER & FORBEDR (HY, W)
; FÆRDIGVERSION 2.02 MANDAG 7.5.84 KL 17 /AFPRØVET/ FIL AED3:B, N, ...
; BINÆR FIL FDIT / PROCES F
; FILEN ER NETOP AFPRØVET, MEN FEJL KAN FOREKOMME ...?!
; MANDAG I GRÅVEJR & SOMMERKULDE 7.5.84
; SØND MIDDAG (KØLIGT); SØND 6.5.84 KL 830 (DISET VEJR)
; 5.5.84 SEBY1 FORSØG, RETTE HB,HS
; ED7:B
; B: RETTELSER PÅ VERSIONEN FRA N (ONSDAG) NU FRED 4.5.84 EFTERM
; ONSDAG 2.5.84 MINDRE RETTELSER / NYHEDER ER PT UAFPRØVEDE! / :B, KOPIERET TIL :N
; TIRSDAG AFPUDSN
; MANDAG 30.4.84 RETTELSER
; RETABL AF KOMPLET FIL ED3:N
; ORIG BEATANDDELE: M > O > N (DENNE) OG KOPI TIL L / DOMAC
; FILNAVNE: PAED8 > ED9 & PM2 > ED2 > ED3 (SIDSTE SIDE MED FRA PAED1)
; **************************************************
; SIDE INDH
; 1: TEKSTER, FEJL
; 2: BIRTH, DEAD
; 3: HY HR HM HO HB HS
; 4: @ Y P R
; 5: B : = . M L T K I O
; 6: S G
; 7: GENERELLE RUTINER: INTK, GOP, INTFI, OUTFI, LMV, LTL
; 8: -"- INTW, INTHX, OUT, OUTW, OH, OSP, LPD, OUTXT /ETC
; 9: -"- FLYT, SEBYT, TYPE
; 10: -"- HARD, BLB /ETC
; 11: ZONER, PRCD, TABEL
.MSG SIDE 1A AF 11 126/4334 15.5.84 AED8
; RETTELSER AF INDTASTN & PÅBEG OVERSÆTTELSE 29.4.84 SØNDAG EFTERM
; FORTS UDVID & RETTE, STADIG IKKE PRØVEKØRT 28.4.84 / PAED7:M (NY DISKETTE)
; UDVIDELSER PÅBEG 27.4.84 / VERS 2.01 / PAED6
; PL ALMEN FILEDITOR / VERS 1.04 17.4.84 / AFPUDSNING AF 1.03 / PAED5
; PL ALMEN FILEDITOR 1.03 /7-9.4.84/ MEST ELEMENTÆR VERSION
; FØRSTE KØRENDE UDGAVE (UFULDST. & MED FEJL...) 11.4.84 KL 17
; ANDEN UDG. VERS. 1.03 UNDER UDVIKLING (FRA 13.4.84)
; FORTSAT UDVIKL 14.4.84 EFTERM
; 15.4.84 MÅSSKE I OG K FÆRDIG ! FILNAVN NU PAED4 !
.TITL PEDIT
.NREL
.RDXO 16
.RDX 10
.TXTM 1
.TXTN 1
PGDS: 1B0+1B5+1B15 ;PROGRAMDESCRIPTOR (7 WORDS)
LAB00
0
PCDS-PGDS
.TXT 'FEDIT'
.NOLOC 1
LAB00: .TXT "<10><10> GEN. FIL-EDITOR <13><10> PL MAJ 84 / VERS. 2.06<10>
<13><10> @@, ?: HELP
<13><10> HS: HARDW SELECT TRC/SEC I/O * EX: HS130B, HS130BO (TRC 19 /SECT 11) (O=OUT)
<13><10> HO: HARDW OUTPUT, SAMME SECTOR * EX: HO (INGEN PARAM!)
<13><10> HY: HARDW INPUT NÆSTE SECTOR * EX: HY
<13><10> HR: HARDW REPEAT (LÆS NÆSTE) * EX: HR (INGEN PARAM)
<13><10> HM: UNIT BLOCKDISPL. DEF * EX: HM, HM@ (@=UNIT 0/3)
<13><10> HB: HARDW BLOCK SELECT INPUT * EX: HB011A (011A=BLOCK 256+16+10)
<13><10> GI: OPHÆV HARDW SELECT, INIT DEVICE * EX: GI3, GI0
<13><10> GR, GW, GC, GK, GO: FILOPERATIONER * EX: GKTESTF, GWTESTF:3
<13><10> O: <34>OCTALCOPY<34> KOPIERING UDENOM BUFFER
<13><10> Y: LÆS SIDE TIL BUFFER
<13><10> P: <34>PUT<34> OUTPUT BUFFER TIL NY FIL
<13><10> R: <34>REPEAT<34>: 1)P 2)Y
<13><10> T: <34>TYPE<34> SKRIV SIDEN UD FRA BUFFER TIL SKÆRM
<13><10> .: AKT. POSITION :, =: SIDENS ANTAL LINIER OG TEGN
<13><10> M: MOVE ANTAL TEGN * EX: M7, M+7, M-7, MG (MOVE 16 PL.)
<13><10> L: LINEMOVE * EX: L7, L+7, L-7 (EXACT LODRET HVIS EJ ASCII)
<13><10> I: INSERT * EX: I T E S T0D0A, I_TEST<60>RETURN><60>ESC>
<13><10> K: KILL ANTAL TEGN * EX: K7, K+7, KG
<13><10> S: SEARCH BYTE * EX: S0A, S A, S41 (41= A)
<13><10> C: UDSKIFT * EX: C A_ B ***((IKKE IMPL))***
<13><10> H: HOME
<0>
<13><10><10> KOMMANDOER: GW, GR, GC, GK, GI, HS, HB, O, Y, P, R, T, ., M, L, I, K, S, H
<0>"
FUT0:
FUT1: .TXT "<13><10> *** IKKE IMPL ***<13><10><0>"
FUT2: .TXT "<13><10> *** BUFFER FULD ***<13><10><0>"
FUT3: .TXT "<13><10> *** IKKE FUNDET ***<13><10><0>"
FUT4: .TXT "<13><10> *** FILER ÅBNE ***<13><10><0>"
FUT5: .TXT "<13><10> *** HARD MODE ***<13><10><0>"
FUT6: .TXT "<13><10> *** ILLEGAL BUFFER SIZE ***<13><10><0>"
FUT7: .TXT "<13><10> *** UDEF. TRACK/SECTOR ***<13><10><0>"
FUT8:
FUT9: .TXT "<13><10> *** ??? ***<13><10><0>"
FFUT1: .TXT " *** FILSTATUS = <0>"
FFUT2: .TXT " DI OF BU . . . IL EF BL DL PA EM PO DM TI REJ<10><0>"
FTXT: FUT0*2
FUT1*2
FUT2*2
FUT3*2
FUT4*2
FUT5*2
FUT6*2
FUT7*2
FUT8*2
FUT9*2
.NOLOC 0
«ff»
.MSG SIDE 1B 31/760 12.5.84
; @@-HELP
.NOLOC 1
TEKSM:
.TXT %<13><10> SPECIELLE RUTINER (SE OSSE "?")
<13><10> @A: ASCII-FORMAT
<13><10> @B: ASCII-HEX-FORMAT
<13><10> @C: HEX-FORMAT
<13><10> @D: DISASSEMBLER
<13><10> @E: KVÆL $LPT-LOGNING
<13><10> @F: FORBERED $LPT-LOGNING (SE OSSE @I)
<13><10> @G: VÆLG LINIEBREDDE * EX: @G02, @G10, @G18, @G20, @G30
<13><10> @H: VÆLG BUFFER * EX: @H0080, @H0400 (MAX!)
<13><10> @I: OPEN $LPT FØR LOGNING
<13><10> @J: JSR TIL ADR. * EX: @J7005 (FARLIGT!!!)
<13><10> @K: OUTPUT SIDE TIL COREADR * EX: @K7005 (FARLIGT)
<13><10> @L: LÆS SIDE FRA COREADR * EX: @L7005
<13><10> @M: KORTLÆGGE $FD1-DISKETTE * EX: @M
<13><10> *** BUFFER W-ADR = <0>%
;PAS PÅ SLUTTEGN!
.NOLOC 0
;SIDE 1B SLUT
«ff»
.MSG SIDE 1C 83/923 15.5.84
; === FEJL ===
; CALL: FEJLNR . . (CUR)
FEJL8: FTXT
FEJL9: FTXT
FEJL0: 0
CHAN1:
FEJL1: INC 0,1
STA 1,FEJL0
LDA 3,FEJL8
STA 3,FEJL9
ISZ FEJL9
DSZ FEJL0
JMP .-2
LDA 3,CUR
LDA 0,.3
GOP
LDA 0,FEJL9 @
OUTTEXT
LDA 1,.32
OUTEND
LDA 3,CUR
OPERA
FFEJ8: FFUT2*2
FFEJ9: FFUT1*2
FFE00:0
FFE01:0
FFE02:0
FFE03:0
FFEJ1: STA 0,FFE00
STA 1,FFE01
STA 2,FFE02
STA 3,FFE03
LDA 0,.3
LDA 3,CUR
GOP
ONL
LDA 0,FFE02 ; FILZONE!
MOVZL 0,0
OUTXT
LDA 0,FFEJ9
OUTXT
LDA 1,FFE01 ; STATUS
MOVS 1,1
OUTHX
MOVS 1,1
OUTHX
OSP
ONL ;?
LDA 0,FFEJ8
OUTXT
ONL
OPERA
HELP1: LDA 0,.3
LDA 3,CUR
GOP
LDA 0,TEKST
OUTXT
OPERA
FILFL: GFK9 ;FLAG FOR ÅBNE FILER
FIAD8: FIZON
TEKST: LAB00*2
COUN9: COUN0
PARAD: 0
BI3: LDA 1,.6
SUB 0,1,SZR
JMP BI5
LDA 1,7,2
LDA 2,.1024
SLE 1,2
LDA 1,.512
STA 1,COUN9 @ ; BUFFER SIZE DEF
JMP BI5
; SIDE 1C SLUT / SIDE 1 SLUT (IALT 11 SIDER)
«ff»
.MSG SIDE 2 140/1626 15.5.84
; BIRTH & DEAD / INGEN FILPARAM I LOAD MERE
; LOGDEFAULTOPTION ER STILLET I BERO
BIRTH:
STA 1,PARAD
MOV 1,2 ;
LDA 0,5,2
LDA 3,.10
SUB 0,3,SZR
JMP BI3
BI5: LDA 2,LPAD ; LPT LOGZONE
LDA 0,.3
LDA 3,CUR
LPD
OPEN
LDA 3,CUR
LPDW
LDA 0,.3
GOP
LDA 0,TEKST
OUTXT
OPER1:
ISZ OPER4
STA 3,OPER3
LDA 3,CUR
INTK
OSID1
YSID1
PSID1
RSID1
TYPE1
TFEM1
MOVE1
LMOV1
INSE1
KILL1
SEAR1
CHAN1
DEAD1 ; EVT HMM1 ELLER BLOC1 (SE DEAD1 ELLER HMM1)
GFIL1 ;
HELP1 ;
WKTR1 ; 2.03
FEJL1 ; A IKKE LAVET
BB1
LS1
LS1 ; (BÅDE : OG =)
FEJL1
FEJL1
-1
; DER JMP'ES TIL DISSE RUTINER, ALLE ACC UDEF, DER RETURNERES TIL OPER1
OPER3: 0
OPER4: 0
-3
DEAD5: HMM1 ; HS - HB - RUTINERNE
DEAD6: GFK9 ; FLAG FOR ÅBNE FILER
DEAD7: GFK8 ; FLAG FOR ÅBNE FILER PÅ $FD1
DEAD8: 72
DEAD9: .+1*2
.TXT "DEAD?<0>"
DEAD1: LDA 3,CUR
LDA 0,.3
LDA 1,DEAD7 @
SZ 1,1
FEJL
INT
LDA 0,.32
SLE 1,0
JMP DEAD5 @ ; HARD SELECT
LDA 0,.3 ; FEJLNR
LDA 2,DEAD6 @
MOV 2,2,SZR
FEJL
LDA 0,.3
GOP
LDA 0,DEAD9
OUTTEXT
LDA 3,CUR
LDA 0,.1
GOP
INCHA
LDA 0,DEAD8
SUB # 0,1,SZR
JMP OPER1
JMP DEAD ;
-1
INAD: INZON
FIAD: FIZON
TTAD: TTZON
LPAD: LPZON
-2
DEAD: ; STANDARD-AFSLUTNINGSRUTINE
STA 0,D0
STA 1,D1
STA 2,D2
STA 3,D3
LDA 2,TTAD
CLOSE
LDA 2,LPAD
LDA 1,.1
LDA 3,CUR
LPD
CLOSE
LDA 1,.1 ; FLG BRUGES HVIS DER HAR VÆRET ÅBNET FILER
LDA 2,FIAD
CLOSE
LDA 1,.1
LDA 2,INAD
CLOSE
LDA 1,SLUT1
LDA 2,SLUT2
SENDMESSAGE ;
LDA 2,CUR
STOPP ;
JMP .-1
D0: 0 ; HER SIKRES INFO OM DEAD (AHT EVT CORE-DUMP)
D1: 1
D2: 2
D3: 3
SLUT1: .+1
1B8
0
0
0
SLUT2: .+1
.TXT 'S<0><0><0><0><0>'
;SIDE 2 SLUT
«ff»
.MSG SIDE 3 150/1807 9.5.84
; ******************* EDITOR HARD OPERATIONS *********
; HARDSELECT-RUTINER HS OG HB; 1) H 2) HS 3) HB 4)FEJL
; === HY ===
HY98: 89 ; Y
HY1: LDA 2,HY98
SE 1,2
FEJL
HARDY
SUBZL 0,0
TYPE
OPERA
; === HR ===
HR98: 82 ; R
HR1: LDA 2,HR98
SE 1,2
JMP HY1
HARDR ; TYPE 1. GANG I HARDR!
SUBZL 0,0
TYPE
OPERA
; === HM ===
HMC98: 77 ; M
HMCC1: LDA 2,HMC98
SE 1,2
JMP HR1
INT
SUB 0,0
LDA 2,.64
SNE 1,2
LDA 0,BLO97 ; OFFSET 70 FOR DEV 0 ELLER 3
STA 0,BLO01
OPERA
; === HO ===
HOU98: 79 ; O
HOUT1: LDA 2,HOU98
SE 1,2
JMP HMCC1
LDA 3,CUR
HARDO
SUBZL 0,0 ; OULREQ
TYPE
OPERA
; === HB ===
BLO97: 70
BLO98: 66
BLO99: 61
BLO00: 0 ; BLOCK
BLO01: 0 ; UNIT 0/3 OFFSET
BLO11: 0 ; SECTOR
BLO10: 0 ; TRACK
BLOC1: LDA 2,BLO98
SE 1,2
JMP HOUT1
INTHX
STA 1,BLO00 ; BLOCK
MOV 2,2,SNR
FEJL ; INGEN PARAM
INTHX ; EVT 2. BYTE
MOV 2,2,SNR
JMP BLOC2
LDA 0,BLO00
MOVS 0,0
ADD 0,1
STA 1, BLO00 ; (PYH) BLOCK NU MED 2 BYTES
BLOC2: LDA 0,.3
GOP
OSP
OSP
OSP
LDA 1,BLO00 ; BLOCK
MOVS 1,1
OUTHX
MOVS 1,1
OUTHX
LDA 1,BLO99
OCH ; =
OSP
OSP
LDA 0,BLO00
LDA 1,BLO01 ; OFFSET
ADD 1,0 ; BLOCKFORSKUDT! EVT!
BLB
STA 0,BLO10
STA 1,BLO11 ; P Y H
SUB 2,2 ; INPUT
HARD ; AC0=TR AC1=SEC AC2=0 (READ)
SUBZL 0,0
TYPE
OPERA
; === HS ===
HMM8: 83 ; S
HMM98: 79 ; O
HMM00:0
HMM01:0
HMM1: LDA 3,CUR
LDA 2,HMM8
SUB 0,0
SE 1,2
JMP BLOC1
LDA 0,.6
INTHX
STA 1,HMM00
MOV 2,2,SNR
FEJL ; PARAM NØDV. (FEJL 6)
INTHX
STA 1,HMM01
MOV 2,2,SNR
FEJL ; AC0 = 6
INT
LDA 2,HMM98
SE 1,2
SUB 2,2,SKP
SUBZL 2,2
LDA 0,HMM00
LDA 1,HMM01
HARD ; AC0=TR AC1=SECT AC2=I/O=0/1
SUBZL 0,0
TYPE ; UDSKRIFTER LAVES I HARD!!
OPERA
HMM2: HARDO ; ACC UDEF OK, HENTES FRA SIDST!!
SUBZL 0,0
TYPE
OPERA
;SIDE 3 SLUT
«ff»
.MSG SIDE 4 303/3654 15.5.84
; @, Y, P, R
; ********************************* EDITOR-FUNKTIONER **********
; === @ ===
WKTR1: LDA 3,CUR
INT
LDA 2,.64
SUB 2,1
LDA 2,.16
SG 1,2
MOVZL # 1,1,SZC
FEJL
INC 1,2
JSR 1,1
ADD 3,2
LDA 3,CUR ; UDGANGSADR (LIGGER I AC2)
JMP @ 2,2
WWW0 ; @@ => AC2+2 = DENNE ADR
WWW1 ; @A-ADR
WWW1 ; @B-ADR
WWW1
WWW4
WWW5 ; @E-ADR = AC2+2 /AC2 PEGER PÅ WWW3
WWW5
WWW7
WWW8
WWW9
WWW10
WWW11
WWW12 ; @L-ADR
WWW13
WWW14
WWW15
WWW16
OUTA1
WT
WTHX
WTD
OULA1 ; OULA (WA)
WL ; OUL (WB)
WLHX ; OULHX(WC)
WLD ; OULD (WD)
LMV2
LMV1
LMV1
LMV9
.TXT "<0><0>"
.TXT "LP" ; 5+14
WWWBA: BUADR
WWW0: LDA 0,.3
GOP
LDA 0,TXTMF
OUTXT
LDA 0,WWWBA
OUTW
OPERA
TXTMF: TEKSM*2 ;(SIDE 1B)
WWW1: LDA 0,18,2
STA 0,34,3 ; OUT REDEF
LDA 0,22,2
STA 0,35,3 ; OUL REDEF
LDA 0,26,2
STA 0,61,3 ; LMOVESUBR REDEF
OPERA
LPADW: LPZON
WWW52: LPFLG
WWW51: 0
WWW5: LDA 1,26,2
STA 1,WWW51
MOV # 1,1,SNR
INC 0,0
STA 0,WWW52 @
LDA 2,LPADW
LDA 1,.1
CLOSE
LDA 3,CUR ;!!
LDA 0,WWW51
STA 0,0,2 ; LPTZONENAVN
SZ 0,0
JMP WWW9
OPERA
WWW71: O2LG
WWW72: LMO91
WWW7: INTHX
STA 1,WWW71 @
STA 1,WWW72 @
OPERA
WWW81: COUN0
WWW8: INTW
LDA 1,.1024
SG 0,1
STA 0,WWW81 @
OPERA
WWW9: LDA 2,LPADW
LDA 0,.3
OPEN
LDA 3,CUR
OPERA
WWW10: INTW
MOV 0,2
JSR 0,2
LDA 3,CUR
OPERA
;!!??
WW111: ARBA0
WW222: COUN0
WW223: COUN2
WW333: 0 ;DOWN
WWW11: INTW
LDA 3,WW111 @
MOVZR 3,3
MOV 0,2
LDA 1,WW223 @
JMP WWFLT
WWW12: INTW
LDA 2,WW111 @
MOVZR 2,2
MOV 0,3
LDA 1,WW222 @
STA 1,WW223 @
WWFLT: MOVZR 1,1
STA 1,WW333
LDA 0,0,3
STA 0,0,2
INC 2,2
INC 3,3
DSZ WW333
JMP .-5
LDA 3,CUR
MOVZL 0,0
TYPE
OPERA
;----------------
; NOT IMPL:
WTD:
WLD:
LMV9: .+1
WWW4:
WWW13:
WWW14:
WWW15:
WWW16:
LDA 0,.0
FEJL
;----------------
; === Y ===
.NOLOC 1
YSID9: .+1*2
.TXT "<13><10><10>INPUT - - - - <0>"
.NOLOC 0
YSID1: JSR RESE1
STA 0,COUN1 ;(NEDTÆLL AF Y)
STA 0,COUN2 ;(ÆNDR AF I,K,C NEDTÆLL AF P)
SUB 0,0
STA 0,PCC
STA 1,PCADR ;(ÆNDR AF I,C,S ETC)
LDA 1,YSID9
JSR OULK1
LDA 0,INAD9
OULFI
ONL
ONL
OSP
OUTFI
ONL
YSID2: ; FIL ÅBEN? / FIL-FEJL FRA DEAD!
INI
OUT
OUL
MOV 1,0
LDA 1,ARBA1
PUTBY
ISZ ARBA1
LDA 3,CUR
DSZ COUN1
JMP YSID2
OPERA
; === P OG R ===
PSID1: SUB 3,3
JMP PSID3
RSID1: JSR PSID3
JMP YSID1
.NOLOC 1
PSID8: 128 ; FRA COUN2 - DOWN I P
PSID9: .+1*2
.TXT "<13><10><10>OUTPUT <0>"
.NOLOC 0
PSID0: 0
PSID3: STA 3,PSID0
LDA 3,COUN2
STA 3,PSID8
JSR RESE1
LDA 1,PSID9
JSR OULK1
LDA 0,FIAD9
OULFI
ONL
ONL
OSP
OUTFI
ONL
PSID2: LDA 1,ARBA1
GETBYTE
ISZ ARBA1
LDA 3,CUR
MOV 0,1
OUO
OUL
OUT
DSZ PSID8
JMP PSID2
LDA 0,PSID0
MOV # 0,0,SZR
JMP @ PSID0
OPERA
;------------------ALM. SUBRUTINER TIL Y OG P:
; RESET COUNTER OG FORB OUTPUT TIL TTY (MONITORING)
; **** ; CALL: . . . CUR
; RETU: COUN0 BUADR*2 TTZON CUR
RESE9: 0
RESE1: LDA 1,ARBA0
STA 1,ARBA1
STA 3,RESE9
LDA 0,.3
LDA 3,CUR
GOP
LDA 0,COUN0
JMP @ RESE9
; OUTPUT TIL LPT AF KOMMANDOEN (ACC UDEF UNDT. AC1 FØR + AC3=CUR EFTER)
; ** * *
OULK0: 0
OULK1: STA 3,OULK0
MOV 1,0
LDA 3,CUR
LDA 2,LPAD9
OUTXT
JMP @ OULK0
;:::::::::::::
INAD9: INZON
FIAD9: FIZON
TTAD9: TTZON
LPAD9: LPZON
;:::::::::::::
COUN0: 128 ; ORIG DEF I INPUT (EVT)
COUN1: 0 ; DEF I Y, DOWN I Y
COUN2: 0 ; DEF I Y, ÆNDR V K,I,C, BRUGES I P,T,F
PCC: 0 ; POINTER = 0 - COUN2
PCADR: BUADR*2 ; DEF I Y, REDEF I M,S,C,L,I
PCAD1: BUADR*2 ; DEF I F & T OG UPDATERET I SAMME
ARBA0: BUADR*2 ; FAST !!!!
ARBA1: BUADR*2 ; DEF I Y OG P OG UPDATERET I Y OG P
;:::::::::::::
;----------------- SUBRUTINER TIL Y OG P SLUT
;SIDE 4 SLUT
«ff»
.MSG SIDE 5 242/3000 15.5.84
; B : = . M L T K I O
;
; === B ===
BB1: STA 0,PCC
LDA 0,ARBA0
STA 0,PCADR
LDA 3,CUR
OPERA
; === : ===
; === = ===
LSPC:0
LSPCA:0
LS1: LDA 0,.3
LDA 3,CUR
GOP
LDA 1,PC
STA 1,LSPC
LDA 1,PCADR
STA 1,LSPCA
SUB 0,0
STA 0,PCC
LDA 1, ARBA0
STA 1,PCADR
SUBZL 2,2
LDA 3,CUR
LTL
OUTW
OSP
OSP
LDA 0,COUN2
OUTW
LDA 1,LSPC
STA 1,PCC
LDA 1,LSPCA
STA 1,PCADR
OPERA
; === . === (BRUGES OSSE AF FX. MOVE)
TFEM8: 58 ;:
TFEM9: 5
TFEM0: 0
TFEM1: LDA 0,.3
LDA 3,CUR
GOP
LDA 3,.16
STA 3,TFEM9
LDA 1,PCADR
STA 1,PCAD1
LDA 3,CUR
LDA 0,PCC
OUTW
LDA 1,TFEM8
OCH
OSP
OSP
TFEM2: LDA 1,PCAD1
LDA 3,ARBA0
LDA 2,COUN2
ADD 3,2
LDA 3,CUR
SL 1,2
OPERA
GETBY
MOV 0,1
LDA 3,CUR
OUT
ISZ PCAD1
DSZ TFEM9
JMP TFEM2
OPERA
; === M ===
; COMMAND EX: M7 MB M+B M-B (B=11)
MOVE0: 0
MOVE1: JSR DIPL1 ; HENTE AC0=SIGN AC1=ÆGTEBYTE AC3=CUR
JSR BYBI1 ; BY TIL BINÆR
MOVE2: LDA 2,PCC
ADD 1,2
MOVZL # 2,2,SZC
SUB 2,2
LDA 3,COUN2
SLE 2,3
LDA 2,COUN2
STA 2,PCC
LDA 3,ARBA0
ADD 3,2
STA 2,PCADR
JMP TFEM1
; === L ===
LMOV1: JSR DIPL1 ;NEG & BYTE
JSR BYBI1 ; NEG $ SIGNED BIT & UNSIGN BIT
LMV ; UDSKIFTELIG RUTINE (61)
JMP MOVE2
;----------------- EGL. SUBR TIL BL. A. MOVE-INPUT-HÅNDTERING:
; SUBR. DIPL1 * HENTE TÆLLEPARAM FRA INPUT I KOMMANDO
;CALL: . . . .
;RETU: NEG? ÆGTEBY % CUR
DIPL7: 0
DIPL8: 43
DIPL9: 45
DIPL0: 0
DIPL1: STA 3,DIPL0
LDA 3,CUR
INT
LDA 2,DIPL9
SUB 0,0
SUB # 1,2,SNR
LDA 0,.1
LDA 2,DIPL8
MOV 0,0,SNR
SUB # 1,2,SNR
INT ; NÆSTE EFTERSOM FØRSTE VAR ET + ELLER -
STA 1,DIPL7 ; SENERE YDERL. BEHANDL EVT NÆSTE BYTE
JMP @ DIPL0
; SUBR. BYBI1 * BYTE I AC1 TIL BINÆR VÆRDI, SIGNED & UNSIGNED
;CALL: 1=NEG BYTE . .
;RETU: 1=NEG SIGNED UNSIGN CUR
; BINVAL BINVAL
BYBID: 0
BYBI0: 0
BYBI1: STA 3,BYBI0
LDA 2,.48
SUB 2,1
LDA 3,.10
LDA 2,.7
SL 1,3
SUB 2,1
MOV 1,2
MOV 0,0,SZR
NEG 1,1
STA 1,BYBID
LDA 3,CUR
JMP @ BYBI0
; --------------------- SUBR. SLUT
; === T ===
TYPE1: LDA 3,CUR
TYPE
OPERA
; === K ===
KILL0: 0
KIL90: COUN2
KIL91: PCC
KIL92: TFEM1
KILL1: JSR DIPL1
JSR BYBI1
MOV 0,0,SZR
OPERA ; HVIS NEG!!
LDA 2,KIL90 @
LDA 3,KIL91 @
SUB 3,2
SG 2,1
MOV 2,1
LDA 3,CUR
LDA 0,.1
FLYT ; TILVENSTRE
JMP @ KIL92
; RANGE DANGER COUNT/PCC/ ETC
; === I ===
INSE5: INTO6 ; TTYFLAG
INSE6: RTHFL ; RESETTES EFTER I
INSE7: PCADR
INSE8: 0
INSE9:
INSE0: 0
INSE1: LDA 3,INSE7 @
STA 3,INSE8
ISZ @ INSE5
INSE2: LDA 3,CUR
INTHX ; EVT OPTION INT /AFH AF 1. INPUTTEDE BYTE
STA 1,INSE0
MOV 2,2,SNR ; IF NOT CONTROL, FX 13 EL 27 PÅ 1. INDHEX
JMP INSE3
LDA 0,.0
LDA 1,.1
FLYT ; 1 TILHØJRE
LDA 0,INSE0
LDA 1,INSE8
ISZ INSE8
PUTBY
JMP INSE2
INSE3: SUB 0,0
STA 0,INSE6 @
OPERA
; === O ===
OSID8: .+1*2
.TXT "<13><10>KOP.<10><0>"
OSID9: 128
OSID0: COUN0
OSID1: LDA 0,OSID0 @
STA 0,OSID9
LDA 3,CUR
LDA 0,.3
GOP
OSID2: INI
OUO
OUT
DSZ OSID9
JMP OSID2
LDA 0,OSID8
OUTTEXT
LDA 3,CUR
OPERA
;SIDE 5 SLUT
«ff»
.MSG SIDE 6 173/2150 14.5.84
; S GW GR GC GK GI GO Gü GB & BUFFER
; === S === ; SØG E N K E L T BYTE (PT)
SEA09: TFEM1
SEA03: 0
SEAR1: STA 3,SEA03
LDA 3,CUR
INTHX
MOV 2,2,SNR
OPERA
SEBYT
LDA 0,.2
MOV 2,2,SNR
FEJL
JMP @ SEA09
; === G === GR GW GC GK GI
GFHAR: HFLAG ; HARDMODE FLAG : FILER PÅ $FD1 FORBUDT
GF0: 0; COUNTER 0-4
GF9: 0
GF8: .+1
.TXT "<0>C<0>K<0>R<0>W<0>I<0>O<0>ü<0>B<0><0><0><0>"
GF7: TTZON
GFIL1: LDA 3,CUR
LDA 1,GF8
STA 1,GF9
INT
SUB 0,0
STA 0,GF0
GFIL2: LDA 2,GF9 @
MOV 2,2,SNR
FEJL
SNE 1,2
JMP GFIL3
ISZ GF9
ISZ GF0
JMP GFIL2
GFIL3: LDA 2,GFILT
LDA 1,GF0
ADD 1,2
SUB 0,0
JMP @ 0,2
GFILT: .+1
GCF1
GKF1
GRF1
GWF1
GI1
GOF1
GCF2 ; LUK INPUTFIL ONLY
GBF1 ; RESERVERUTINE (ULOVLIG!)
FEJL1
FEJL1
;:::
GFILI: INZON
GFILO: FIZON
GFILL: LPZON
;:::
GWF1: LDA 2,GFILO
LDA 3,CUR
INTFI
MOV 0,0,SZR
ISZ GFK8 ; FIL PÅ $FD1 FLAG
LDA 0,.1
LDA 1,.0
CREAT
LDA 0,.3
OPEN
ISZ GFK9 ; FIL FLAG
LDA 3,CUR
OPERA
GRF1: LDA 2,GFILI
LDA 3,CUR
INTFI
MOV 0,0,SZR
ISZ GFK8 ; FIL PÅ $FD1 FLAG
LDA 0,.1
OPEN
ISZ GFK9 ; FIL FLAG
LDA 3,CUR
OPERA
GCF1: SUB 3,3
STA 3,GFK8
STA 3,GFK9
LDA 1,.1
LDA 2,GFILO
CLOSE
SUB 0,0
STA 0,0,2
GCF2: LDA 1,.1
LDA 2,GFILI
CLOSE
SUB 0,0
STA 0,0,2
LDA 3,CUR
OPERA
;::::::::::::::::
GFK8: 0 ; *** $FD1-FIL-FLAG *** /HS, HB CHECK /GR, GW, GC SET
GFK9: 0 ; *** FILFLAG *** /H, GK CHECK /GR, GW, GC SET
;::::::::::::::::
GKF1: LDA 1,GFK9
LDA 0,.3
LDA 3,CUR
MOV 1,1,SZR
FEJL
LDA 2,GFILO
INTFI
REMOV
LDA 3, CUR
OPERA
GI1: LDA 3,CUR
LDA 0,.0
STA 0,GFHAR @ ; OPHÆV HARD MODE
INT
LDA 2,GF7
LDA 0,.48
SUB 0,1
INITC ; ?
LDA 3,CUR
OPERA
GBF1: INT
LDA 2,.2
SE 1,2
OPERA
SUB 0,0
LDA 2,GFILO
STA 0,0,2
LDA 2,GFILI
STA 0,0,2
STA 0,GFK8
STA 0,GFK9
GOF1: LDA 2,GFILL
ONL
LDA 0,GOF91
OUTXT
LDA 2,GFILI
INTFI
LDA 0,.1
OPEN
LDA 3,CUR
INI
OUL
OUO
JMP .-3 ; -2 HVIS OUL VÆK!!!!!!!
GOF91: .+1*2
.TXT "<13><10><10>DIREKTE KOPIERING:<13><10><10> <0>"
.TXT " BUFFER: "
.NOLOC 1
BUADR:
.TXT " . . . . . . . . . . . . . . . . . ."
.BLK 512
.TXT " * * * * * * * * * * * * * * * * * *"
.NOLOC 0
;SIDE 6 SLUT
«ff»
.MSG SIDE 7 306/4096 15.5.84
; SPEC CUR-FKT
.TXT " CURFKT "
; ************** GENERELLE ELEMENTÆRE FUNKTIONER DEF I CUR-TABEL *
; ***** ALLE KALD OG RETURN MED VELDEFINEREDE ACC (SÆDV.UÆNDREDE!)
;---------------------------------
; INTK * INPUT KOMMANDO FRA TTY
; CALL: ? ? ? CUR
; RETU: 0 0 RETURNP CUR
; RETURNPOINT DEF IN AC2
.NOLOC 1
INTO6: 0 ; TTYFLAG
INTK6: HFLAG
INTK7: .+1*2
.TXT "<13><10> HARD MODE / <0>"
INTK8: .+1*2
.TXT " COMMAND: <0>"
INTK9: .+1
.TXT "<0>O<0>Y<0>P<0>R<0>T<0>.<0>M<0>L<0>I<0>K<0>S<0>C<0>H<0>G<0>?<0>@<0>A<0>B<0>:<0>=<0><0><0><0><0>"
.NOLOC 0
INTK0: 0
INTK1: STA 3,INTK0
LDA 0,INTO6
; SNZ 0,0
; JMP INTO1 ; FLERE KOMMANDOER?!
INTO2: LDA 0,.3
LDA 3,CUR
GOP
LDA 1,INTK6 @
LDA 0,INTK7
MOV 1,1,SZR
OUTXT
LDA 0,INTK8
OUTTEXT
LDA 1,.32
OUTEND
SUB 0,0
STA 0,INTO6
LDA 3,CUR
LDA 0,.1
GOP
INTO1: INCHA
LDA 3,.32
SG 1,3
JMP INTO2
LDA 3,INTK9
INTK2: LDA 0,0,3
SUB # 0,1,SNR
JMP INTK4
MOV # 0,0,SNR
JMP INTK4
INC 3,3
ISZ INTK0
JMP INTK2
INTK4: LDA 3,CUR
LDA 2,INTK0
SUB 0,0
SUB 1,1
JMP @ 0,2
; RETURNPOINT DEF IN ACC 2
;--------------------------
; GOP * OPEN FILE TTY (MODE)
;CALL: MODE . . CUR
;RETU: = = TTZON CUR
OP00:0
OP01:0
OP02:0
OP03:0
OP9: TTZON
OP1: STA 0,OP00
STA 1,OP01
STA 2,OP02
STA 3,OP03
LDA 3,.2
SL 1,3
ISZ INTO6
LDA 2,OP9
LDA 1,.0
CLOSE
LDA 0,OP00
OPEN
LDA 0,OP00
LDA 3,CUR
LDA 1,.3
SNE 0,1
ONL
LDA 1,OP01
JMP @ OP03
;--------------------------
; INTFI * DEFINER FILZONENAVN OG INIT DEVICE (FIL IKKE ÅBNET)
;CALL: . . ZON CUR
;RETU: DEVIC = = CUR
RTF98: HFLAG
RTF97: 0
RTF96: INTO6
RTF7: 0
RTF00:0
RTF01:0
RTF02:0
RTF03:0
RTF9: 58 ;:
RTF91: 46 ; FILBOGSTAV LIMIT
RTF8: 0; ZONE BYTEADR!!
RTF1: STA 0,RTF00
STA 1,RTF01
STA 2,RTF02
STA 3,RTF03
ISZ @ RTF96 ; TTYFLAG
ISZ RTF97
MOVZL 2,3
STA 3,RTF8
LDA 1,.1
LDA 3,RTF97
SG 3,1
CLOSE
SUB 0,0
STA 0,0,2
STA 0,1,2
STA 0,2,2
STA 0,RTF97
RTF2: LDA 3,CUR
INT
LDA 2,RTF9
SUB 0,0
SNE 1,2
JMP RTF3 ; DEVICE SELECT
LDA 0,RTF91 ; 46 = . (LOVLIGT FILBOGSTAV)
SGE 1,0
JMP RTF4 ; SLUT, DEVICE 0 UNDERSFORSTÅET
MOV 1,0
LDA 1,RTF8
PUTBY
ISZ RTF8
JMP RTF2
RTF3: LDA 0,.4
LDA 1,RTF98 @
SZ 1,1
FEJL ;FILFORBUD PÅ DEVICE <> 0
INT
LDA 2,.48
SUB 2,1
MOV 1,0
STA 1,RTF7
LDA 2,RTF02
INC 2,2
INCOL 2,1
PUTBY ; BYTE 6 I ZONE
LDA 1,RTF7
LDA 2,RTF02
INITC
LDA 0,RTF7
RTF4: LDA 1,RTF01
LDA 2,RTF02
LDA 3,CUR
JMP @ RTF03
;----------------------------
; OUTFI * OUTPUT FILNAVN TIL TTY
; OULFI
; OUFI (?)
; CALL: ZON . . CUR
; RETU: = = OUZON CUR
OUF00:0
OUF01:0
OUF02:0
OUF03:0
OUTF1: LDA 2,TTAD7
JMP OUF1
OULF1: LDA 2,LPAD7
JMP OUF1
OUF1: STA 0,OUF00
STA 1,OUF01
STA 3,OUF03
LDA 1,.2
SUBOL 1,0
LDA 3,CUR
OUTXT
LDA 1,OUF01
LDA 0,OUF00
JMP @ OUF03
;::::::::::::
TTAD7: TTZON
LPAD7: LPZON
;::::::::::::
;--------------------------
; LMV * LINEMOVE
; ENTRY LMV1 TIL HEXVERSION
; ENTRY LMV2 TIL ASCIIVERSION
; ENTRY LMV9 TIL 2 (DISASS)
LMO91: 24 ;(ÆNDRES EVT VED @)
LMO00:0
LMO01:0
LMO02:0
LMO03:0
LMV1: STA 0,LMO00
STA 2,LMO02
STA 3,LMO03
MOV 2,1
LDA 0,LMO91
MULTIPLY
LDA 0,LMO00
SZ 0,0
NEG 1,1
LDA 2,LMO02
LDA 3,CUR
JMP @ LMO03
;CALL: 1=NEG SIGNED UNS. CUR
; BINVAL BINVAL
;RETU: = EFF.VAL = CUR
LMV2: STA 0,LMO00
STA 1,LMO01
STA 2,LMO02
STA 3,LMO03
LDA 3,CUR
SZ 0,0
JMP LMV8
LDA 2,.1
LTL ;AC1=NYE PCC /OK?
LDA 0,LMO00
LDA 2,LMO02
JMP @ LMO03
LMV8: LDA 0,.0
FEJL ; IKKE IMPL
;--------------
; LTL * LINIETÆLLERUTINE
;CALL: 1=NEG ANTAL OPDAT CUR
;RETU: TALT PCC PCADR CUR
LTL00:0
LTL01:0
LTL02:0
LTL03:0
LTL81: PCC
LTL82: PCADR
LTL83: 0
LTL84: 0
LTL1: STA 0,LTL00
STA 1,LTL01
STA 2,LTL02
STA 3,LTL03
LDA 3,CUR
LDA 1,.13
LDA 2,LTL81 @
STA 2,LTL83
LDA 2,LTL82 @
STA 2,LTL84
SZ 0,0
JMP LTL2 ; TILBAGE
SEBYT
SNZ 2,2
JMP .+4 ; IKKE FUNDET SIDSTE
INC 0,0
DSZ LTL01
JMP .-5
LDA 1,LTL81 @
LDA 2,LTL82 @
LDA 3,LTL02 ; OPDATERING? ELLERS GAMLE VÆRD
SNZ 3,3
JMP .+5
LDA 1,LTL83
STA 1,LTL81 @
LDA 2,LTL84
STA 2,LTL82 @
LDA 3,CUR
JMP @ LTL03
LTL2: LDA 1,LTL81 @
LDA 0,.0
FEJL
; IKKE LAVET ENDNU!
;SIDE 7 SLUT
«ff»
.MSG SIDE 8A 308/4060 14.5.84
; GEN RUTINER: NORMAL I/O
; GEN RUTINER FORTSAT
;--------------------------
; INTW * INPUT WORD FRA TTY I HEXKODE (4 TEGN) (TTY ÅBNET FORUDS)
;CALL: . . . CUR
;RETU: WORD HØJRBY = CUR
IW02:0
IW03:0
IW1: STA 2,IW02
STA 3,IW03
LDA 3,CUR
INTHX
MOVS 1,0
INTHX
ADD 1,0
LDA 2,IW02
JMP @ IW03
;--------------------------
; INTHX * INPUT FRA TTY (EVT HEXKODE, EVT SPACETASTKODE, EVT TASTKODE)
; INT * INPUT FRA TTY (TASTKODE)
; INI * INPUT FRA INPUTFIL
;CALL: . . . CUR
;RETU: = BYTE ZON/0 CUR
; 0 HVIS HX 1.BY < 32 ONLY
RTH00:0
RTH01:0
RTH02:0
RTH03:0
RTHFL: 0 ; SÆTTES VED I_ OG RESETTES
RTHFG: 95 ; PIL LEFT
RTHG1: 70
RTHG2: 9
RTHG3: 27
RTHD: 0
RTHC: 3
RTH1: STA 0,RTH00
STA 1,RTH01
STA 2,RTH02
STA 3,RTH03
LDA 2,TTADR
LDA 3,RTHFL
MOV 3,3,SZR
JMP RTH4
LDA 2,.2
STA 2,RTHC
RTH3: LDA 2,TTADR
INCHAR
LDA 0,.32
SGE 1,0
JMP RTH5
LDA 0,RTHFG
SUB # 1,0,SZR
JMP .+3
ISZ RTHFL
JMP RTH4
LDA 0,.48
LDA 3,RTHG1
SG 1,3
SGE 1,0
JMP RTH4
SUB 0,1 ; !!
LDA 3,.9
LDA 0,.7
SLE 1,3
SUB 0,1
LDA 0,RTHC
LDA 3,.2
SNE 0,3
STA 1,RTHD
DSZ RTHC
JMP RTH3
LDA 0,RTHD
MOVZL 0,0
MOVZL 0,0
MOVZL 0,0
MOVZL 0,0
ADD 0,1
RTH2: LDA 0,RTH00
LDA 3,CUR
JMP @ RTH03
RTH4: LDA 2,TTADR
INCHA
LDA 0,RTHG3
SUB 1,0,SNR
SUB 2,2
JMP RTH2
RTH5: LDA 0,RTH00
SUB 2,2 ; AC2=0 IF CONTROL I 1.HEXTEGN AF BYTE
LDA 3,CUR
JMP @ RTH03
RT: LDA 2,TTADR
JMP R1
RI: LDA 2,INADR
JMP R1
R00:0
R01:0
R02:0
R03:0
R1: STA 0,R00
STA 3,R03
INCHA
LDA 0,R00
LDA 3,CUR
JMP @ R03
;:::::::
INADR: INZON
FIADR: FIZON
TTADR: TTZON
LPADR: LPZON
;:::::::
;---------------------------
; OULHX * OUTPUT BYTE TIL LPT UDEN TEXTOPTION
; OUTHX * OUTPUT BYTE TIL TTY UDEN TEXTOPTION
; OUT * OUTPUT BYTE TIL TTY EVT HEXKODE, EVT SPACETASTKODE "HH ", " A ", "A"
; OUL * OUTPUT BYTE TIL LPT EVT HEXKODE, EVT SPACETASTKODE
; OUO * OUTPUT BYTE TIL OUTPUTFIL
; OUT & OUL KAN ÆNDRES VED KOMMANDO @A, @C
;CALL: . BYTE . CUR
;RETU: = = ZON CUR
WLHX: STA 0,W00
STA 1,W01
STA 2,W02
STA 3,W03
LDA 2,LPADR
JMP WHX2
WTHX: STA 0,W00
STA 1,W01
STA 2,W02
STA 3,W03
LDA 2,TTADR
JMP WHX2
WHX1: STA 0,W00
STA 1,W01
STA 2,W02
STA 3,W03
WHX2: LDA 3,.255
AND 3,1
JMP W3
WT: LDA 2,TTADR
JMP W2
WL: LDA 2,LPADR
JMP W2
WO: LDA 2,FIADR
JMP W1
W00:0
W01:0
W02:0
W03:0
WLPFL: LPFLG
W93: 93
W1: STA 0,W00
STA 1,W01
STA 2,W02
STA 3,W03
W21: LDA 0,LPADR
SE 0,2
JMP .+3
LDA 0,WLPFL @
SNZ 0,0 ; FLAG FOR LPTFORBUD
OUTCH
W22: LDA 0,W00 ; LPDW SÆTTER LPTDEAD ADR HER
LDA 1,W01
LDA 3,CUR
JMP @ W03
W2: STA 0,W00
STA 1,W01
STA 2,W02
STA 3,W03
LDA 3,.255
AND 3,1
LDA 3,W93
LDA 0,.32
SG 1,3
SGE 1,0
JMP W3
LDA 3,CUR
OSP
OUTCH
LDA 3,CUR
JMP W4
W3: LDA 3,.15
MOV 1,0
AND 3,1
MOVZR 0,0
MOVZR 0,0
MOVZR 0,0
MOVZR 0,0
AND 3,0
LDA 3,CUR
OH ; AC2=TT EL. LP
MOV 1,0
OH
W4: DSZ -2,2
JMP .+2
ONL
OSP
JMP W22
; OUTA * OUTPUT TIL TTY SOM ALM ASCIIFIL
; OUTL * OUTPUT TIL LPT SOM ALM ASCIIFIL
OUA91: 125 ; (LILLE Å)
OUTA1: LDA 2,TTADR
JMP .+2
OULA1: LDA 2,LPADR
STA 0,W00
STA 1,W01
STA 2,W02
STA 3,W03
LDA 0,.32
LDA 3,OUA91 ; (Å)
SG 1,3
SGE 1,0
JMP OUA3
JMP W21 ; OUTCHAR & RETURN
OUA3: LDA 3,.127
SE 1,0
SNZ 1,1
JMP W22 ; IGN <0> OG <127>
LDA 3,.13
LDA 0,.10
SE 1,3
JMP .+4
LDA 3,CUR
OCH ; EVT UDELADES ?!
MOV 0,1
SNE 1,0
JMP W21 ; NORMAL NL
LDA 3,.127
LDA 0,.9
SE 1,3
SNE 1,0
JMP W21 ; <9>, <127>
LDA 3,.12
SNE 1,3
JMP OUA4 ; SÆRL. <12>
LDA 1,OUA91
INC 1,1 ; ü
JMP W21 ; ELLERS "ü"
OUA4: LDA 0,OUA44
LDA 3,CUR
OUTXT
JMP W22
OUA44: .+1*2
.TXT "<13><10><10>SIDESKIFT<13><10><10><0>"
;---------------------
; OUTW * OUTPUT WORD TIL TTY /HEX
; OULW * OUTPUT WORD TIL LPT /HEX
;CALL: WORD . . CUR
;RETU = = ZON CUR
OWW00:0
OWW01:0
OWW03:0
OUTW1: LDA 2,TTAD8
JMP .+2
OULW1: LDA 2,LPAD8
STA 0,OWW00
STA 1,OWW01
STA 3,OWW03
LDA 3,.255
MOVS 0,1
AND 3,0
AND 3,1
LDA 3,CUR
WHX
MOV 0,1
WHX
LDA 0,OWW00
LDA 1,OWW01
LDA 3,CUR
JMP @ OWW03
;::::::::::::
TTAD8: TTZON
LPAD8: LPZON
;::::::::::::
;SIDE 8A SLUT
«ff»
.MSG SIDE 8B 148/1753 12.5.84
;--------------------------
; FLG. OUTPUTRUTINER FORUDSÆTTER FORUDG. DEF AF ZONE
;--------------------------
; OH * OUTPUT HEXTEGN
;CALL: TGN . ZON CUR
;RETU: = = = CUR
H00: 0
H01: 0
H02: 0
H03: 0
H1: STA 0,H00
STA 1,H01
STA 2,H02
STA 3,H03
LDA 1,.15
AND 1,0
LDA 1,H9
ADD 0,1
GETBYTE
LDA 2,H02
MOV 0,1
LDA 3,CUR
OCH
LDA 0,H00
LDA 1,H01
JMP @ H03
H9: .+1*2
.TXT "0123456789ABCDEFG"
;-------------------------
; OSP * OUTPUT SPACE (ZON)
; ONL * OUTPUT NL (ZON)
; OCH * OUTPUT CHAR (ZON)
;CALL: . . ZON(!) CUR
;RETU: = = = CUR
O00:0
O01:0
O02:0
O03:0
O2TTA: TTZON
O2LG: 24 ; EVT ÆNRES AF W
O1: STA 0,O00
STA 1,O01
LDA 1,.32
JMP O3
O2: STA 0,O00
STA 1,O01
LDA 1,O2LG
LDA 0,O2TTA
SE 0,2
JMP O2F
LDA 0,.24
SLE 1,0
MOVZR 1,1
O2F: STA 1,-2,2
LDA 1,.10
JMP O3
O3: STA 2,O02
STA 3,O03
LDA 3,CUR
LPD
OUTEND
LDA 3,CUR
LPDW
LDA 0,O00
LDA 1,O01
LDA 3,CUR
JMP @ O03
O4: STA 0,O00
STA 1,O01
JMP O3
;-------------------------
; LPD * LPT-DEAD POINT DEF = .+2
; LPDW * LPT-DEAD POINT IN OUL-RUTINEN
; CALL: . . . CUR
; RETU: = = = CUR
LPD00:0
LPFLG: 0 ; FORBUDSFLAG (SE @E, @F)
LPD03: 0
LPD04: W22
LPLPA: LPZON
LPD05: LPTD9
LPD1: STA 3,LPD03
INC 3,3
STA 0,LPD00
LDA 0,LPLPA
SE 2,0
JMP LPD11
LDA 0,LPFLG
SZ 0,0
ISZ LPD03
LPD11: LDA 0,LPD00
STA 3,LPD05 @
LDA 3,CUR
JMP @ LPD03
LPDW1: STA 0,LPD00
STA 3,LPD03
LDA 3,LPD04
JMP LPD11
;-------------------
; OUTXT **** NY
;CALL: BYAD . ZON CUR
;RETU: = = = CUR
OUX00:0
OUX01:0
OUX02:0
OUX03:0
OUTX1: STA 0,OUX00
STA 1,OUX01
STA 2,OUX02
STA 3,OUX03
LDA 3,CUR
LPD
OUTTEXT ; !!
LDA 3,CUR
LPDW
LDA 0,OUX00
LDA 1,OUX01
LDA 2,OUX02
LDA 3,CUR
JMP @ OUX03
;SIDE 8B SLUT
«ff»
.MSG SIDE 9 210/3000 7.5.84
; FLYT OG SE(ARCH)BYT(E) OG TYPE
; TYPE NU SOM FKT
;-------------------------
; FLYT * FLYTTER BUFFERDATA FRA PCC TIL ENDE ET STYKKE
;CALL: 0/1 ANTAL . CUR
;RETU: = = = CUR
FLY70: ARBA0
FLY80: COUN2 ;SIDESIZE
FLY90: PCADR ;AKT. PC
FLY92: PCC
FLYFN: 0 ; HVIS NED: 0.........FLYTN...FLYFN....FLYTØ...FLYFØ
FLYTN: 0 ; HVIS OP: 0.........FLYFN...FLYTN............FLYFØ...FLYTØ
FLYFO: 0 ; 0.........=PCADR...................ARBA0+COUN2
FLYTO: 0
FLY00: 0
FLY01: 0
FLY02: 0
FLY03: 0
FLYT1: STA 0,FLY00
STA 1,FLY01
STA 2,FLY02
STA 3,FLY03
LDA 3,FLY80 @
LDA 2,FLY70 @
ADD 2,3
STA 3,FLYFO ; I BEGGE TILF.!!
MOV 0,0,SNR ; NED HVIS 1
JMP FLYO1 ; OP HVIS 0
FLYN1: LDA 2,FLY90 @
STA 2,FLYTN
ADD 1,2
STA 2,FLYFN
LDA 3,FLYFO
SUB 1,3
STA 3,FLYTO
LDA 3,FLY80 @
SUB 1,3
STA 3,FLY80 @ ; NEDDATERING AF ØVRE GRÆNSE
FLYN2: LDA 1,FLYFN
LDA 3,FLYFO
SLE 1,3
JMP FLYT4
GETBY
ISZ FLYFN
LDA 1,FLYTN
PUTBY
ISZ FLYTN
JMP FLYN2
FLYO1: LDA 2,FLY90 @ ; PCADR
STA 2,FLYFN
LDA 2,FLYFO ; OPDATERING /KONTROL/ AF ØVRE BUFFERGRÆNSE
ADD 2,1
LDA 0,.1 ; FEJLKODE
LDA 3,.1024
LDA 2,FLY70 @ ; BUFFER STARTADR
ADD 3,2
LDA 3,CUR
SLE 1,2
FEJL
STA 1,FLYTO
LDA 1,FLY01 ; COUN2 (SIZE) OPDATERES
LDA 2,FLY80 @
ADD 1,2
STA 2,FLY80 @
LDA 2,FLY90 @ ; PCADR OPDATERES
ADD 1,2
STA 2,FLYTN
STA 2,FLY90 @
LDA 2,FLY92 @ ; PCC OPDATERES
LDA 1,FLY01
ADD 1,2
STA 2,FLY92 @
FLYO2: LDA 1,FLYFO
LDA 3,FLYFN
SGE 1,3
JMP FLYT4
GETBY
DSZ FLYFO
LDA 1,FLYTO
PUTBY
DSZ FLYTO
JMP FLYO2
FLYT4: LDA 0,FLY00
LDA 1,FLY01
LDA 2,FLY02
LDA 3,CUR
JMP @ FLY03
; ------------------------
; SEBYT * SEARCH BYTE
;CALL: . BYTE . CUR
;RETU: = = 0/1 CUR
; 1=FOUND
; PCC & PCADR OPDATERES (EVT TIL 0)
SEBY5: ARBA0
SEBY6: PCC
SEBY7: PCADR ; OPDATERES
SEBY8: COUN2
SEBY9: 0 ; DOWNCOUNT
SEB00:0
SEB01:0
SEB02:0
SEB03:0
SEB04:0
SEBY1: STA 0,SEB00
STA 1,SEB01
STA 2,SEB02
STA 3,SEB03
ISZ SEBY6 @ ; SØG FRA PCC+1 !!!!
ISZ SEBY7 @
LDA 2,SEBY5 @
LDA 1,SEBY8 @
ADD 2,1 ; ØVRE ADR I BUFFER
LDA 2,SEBY7 @
LDA 3,CUR
SUB 2,1,SZR
MOVZL # 1,1,SZC ; CARRY!!
JMP SEBY4 ; IKKE FLERE BYTES I BUFFER
STA 1,SEBY9 ; COUNTER REST AF BUFFER
SEBY2: LDA 1,SEBY7 @
GETBY
LDA 1,SEB01
SUBZL 2,2
SUB # 0,1,SNR
JMP SEBY3 ; FUNDET
ISZ SEBY6 @
ISZ SEBY7 @
DSZ SEBY9
JMP SEBY2
SEBY4: SUB 2,2
STA 2,SEBY6 @
LDA 1,SEBY5 @
STA 1,SEBY7 @
SEBY3: LDA 0,SEB00
LDA 1,SEB01
LDA 3,CUR
JMP @ SEB03
;------------------
; TYPE * SKRIV SIDEN TIL TTY/ EVT OSSE LPT
;CALL: 1=LPT . . CUR
;RETU: = = = CUR
TYP91: COUN2
TYP92: ARBA0
TYP00:0
TYP01:0
TYP02:0
TYP03:0
TYP70:0
TYP80:0
TYP90:0
TYP1: STA 0,TYP00
STA 1,TYP01
STA 2,TYP02
STA 3,TYP03
LDA 0,TYP91 @
LDA 3,CUR
MOV 0,0,SNR
JMP TYP3
STA 0,TYP90
LDA 0,.3
GOP
LDA 1,TYP92 @
STA 1,TYP80
TYP2: LDA 1,TYP80
GETBY
LDA 3,CUR
MOV 0,1
OUT
LDA 2,TYP00
SZ 2,2
OUL
ISZ TYP80
DSZ TYP90
JMP TYP2
TYP3: LDA 0,TYP00
LDA 1,TYP01
LDA 2,TYP02
LDA 3,CUR
JMP @ TYP03
;SIDE 9 SLUT
«ff»
.MSG SIDE 10 304/3570 12.5.84
; GEN RUTINER FORTSAT (3) HARDRUTINER
; AFPUDSET D.D.
.TXT " HARD "
;----------------------------
; HARD * HARDMODE INPUT ELLER OUTPUT
;CALL: TRACK SECT 1/0 CUR
;RETU: = = = CUR
HFLAG: 0 ; HARDMODE FLAG * FILFORBUD PÅ FD1 *
HFLAT: 0
HM666: GFK8 ; $FD1-FIL-FLAG * HARDMODE FORBUDT
HM777: LPZON
HM778: YSID9 ; INPUT
HM779: PSID9 ; OUTPUT
HM26: 26
HM76: 76
HM88: 83 ; S
HM1: STA 0,HM00
STA 1,HM01
STA 2,HM02
STA 3,HM03
; KONTROL AF PARAM / UDSKRIFTER:
LDA 3,CUR
LDA 0,HM778 @
SZ 2,2
LDA 0,HM779 @
LDA 2,HM777
OUTXT
LDA 3,CUR
LDA 0,.3 ; FEJLNR
LDA 2,HM666 @
SZ 2,2
FEJL ; ÅBEN FIL PÅ $FD1
;KONTROLUDSKRIFTER
LDA 0,.3
GOP
LDA 1,HM88
INC 1,1
OUL ; T
OSP
OUT
LDA 0,.6 ; FEJLNR
LDA 1,HM00
OULHX
OSP
OUTHX
LDA 2,HM76
SLE 1,2
FEJL
LDA 1,HM88 ; S
OUL
OSP
OUT
LDA 1,HM01
OUTHX
ONL
OSP
OULHX
LDA 0,HM72
OUTXT
OSP
LDA 2,HM26
SG 1,2
SNZ 1,1
FEJL
; TRACK SELECT
.DUSR FD1=52
HM2: LDA 3,CUR
LDA 0,.3
GOP
LDA 1,.1B6
DOAS 1,FD1
LDA 0,HM00
ADD 1,0
LDA 1,.1B7
ADD 1,0
SKPBZ FD1
JMP .-1
DOAS 0,FD1
ISZ HFLAG
SUB 0,0
LDA 2,HM02
SNZ 2,2
JMP HM3 ; INPUT
; STATUS & RESET FØR OUTPUT
LDA 1,.63
OUL
LDA 1,.63
OUT
OSP
SKPBZ FD1
JMP .-1
JMP HM2F
;:::
HM00:0
HM01:0
HM02:0
HM03:0
HM04:0
HM55: 0 ; DOWNCOUNT
HM66: ARBA0
HM67: 0 ; LØBENDE ADR
HM77: COUN2 ; SIDESTØRR
HM71: FFUT2*2
HM72: .+1*2
.TXT " // STATUS: <0>"
;:::
HM2F:
DIA 1,FD1 ; FORB. OUTPUT
LDA 3,CUR
MOVS 1,1
OULHX
OUTHX ; STATUS FØR OUTP
MOVS 1,1
OULHX
OSP
OSP
OUTHX
LDA 0,HM71
OUTXT
ONL
OSP
LDA 1,.120
OCH
OSP
DIC 1,FD1
MOVS 1,1
OULHX
OUTHX
MOVS 1,1
OULHX
OSP
OSP
OSP
OUTHX
LDA 1,.120
OCH
LDA 0,HM71
OUTXT
ONL
OSP
LDA 2,.128
LDA 1,HM77 @
LDA 0,.5 ; FEJL
SUB 1,2,SZR
FEJL ; BUFFER SIZE
; OUTPUT TIL HARDBUFFER
LDA 1,HM66 @ ; BUFFER BYAD
STA 1,HM67
LDA 0,.128
STA 0,HM55
HM25: LDA 1,HM67
GETBYTE
DOB 0,FD1
ISZ HM67
DSZ HM55
JMP HM25
LDA 0,.1B7
HM3: LDA 3,CUR
LDA 1,.64
OUL
OSP
OUT
LDA 1,HM01 ; SECTOR COMMAND & STATUSUDSKRIFT
ADD 1,0
SKPBZ FD1
JMP .-1
DOAS 0,FD1
SKPBZ FD1
JMP .-1
LDA 3,CUR
DIA 1,FD1
MOVS 1,1
OUTHX
OULHX
MOVS 1,1
OUTHX
ONL
OSP
OULHX
LDA 0,HM71
OUTXT
ONL
OSP
LDA 1,HM02
MOV 1,1,SZR
JMP HM4 ; OUT SLUT
; INPUT FRA HARD BUFFER
LDA 0,HM00
STA 0,HM000
LDA 0,HM01
STA 0,HM001 ; GEMMES TIL HO ELLER HR
LDA 0,.128
STA 0,HM77 @
STA 0, HM55 ; DOWN
LDA 1,HM66 @
DIB 0,FD1
PUTBYTE
INC 1,1
DSZ HM55
JMP .-4
HM4: LDA 0,HM00
LDA 1,HM01
LDA 2,HM02
LDA 3, CUR
JMP @ HM03
;------------------
; HARDO * OUTPUT SAMME SECTOR SOM SIDST ER LÆST
; HARDR * OUTPUT (HARDO) OG INPUT NÆSTE SECTOR
; HARDY * READ NÆSTE SECTOR
;CALL: . . . CUR
;RETU: TRACK SECT 1/0 CUR
HM000:0
HM001:6 ;(RET UFARLIGT STED!)
HM600: 0
HM603: 0
HM626: 26
HM222: HM1
HM5: LDA 0,HM000
LDA 1,HM001
LDA 2,.1
JMP @ HM222
HM6: STA 3,HM603
JSR HM5
STA 0,HM600
LDA 0,.1
LDA 3,CUR
TYPE
LDA 0,HM600
HM65: INC 1,1
LDA 2,HM626
SG 1,2
JMP .+3
SUBZL 1,1
INC 0,0
SUB 2,2
JSR @ HM222
JMP @ HM603
HM7: LDA 0,HM000
LDA 1,HM001
STA 3,HM603
JMP HM65
;-------------------------
; BLB * BLOCKBEREGNING AF TRACK/SECTOR
;CALL: BLOCK . . CUR
;RETU: TRACK SECT = CUR
BLB00:0
BLB01:0
BLB02:0
BLB03:0
BLB1: STA 0,BLB00
STA 1,BLB01
STA 2,BLB02
STA 3,BLB03
LDA 3,CUR
MOVZL 0,0
MOVZL 0,0
LDA 1,.3
SUB 1,0
LDA 1,.25
INC 1,1
DIVID
MOV 3,1
LDA 2,BLB02
LDA 3,CUR
JMP @ BLB03
;SIDE 10 SLUT
«ff»
.MSG SIDE 11 285/3255 15.5.84
; ZONER, BUFFERE, PRCD OG FKT-TABEL
; PROCESNAVN NU 'F'
.TXT "TIL "
FIZON:.TXT 'FIL<0><0><0>' ;ZNAME
Z ;SIZE
0 ;ZMODE
1B14+1B13+1B12+1B11
65535
FFEJ1
1
1
0
FIS0
263
0
0
FIB0*2
FIB0*2
FIS0
512
0
.BLK ZAUX
FIS0: 0
0
0
0
FIS0
0
FIB0*2
FIB0: .BLK 256
24
0
TTZON:.TXT 'TTY<0><0><0>' ;ZNAME
Z ;SIZE
0 ;ZMODE
1 ;ZKIND
65535 ;ZMASK
FFEJ1 ;GIVE
1 ;ZFILE
1 ;ZBLOC
0 ;ZCONV
TTS0 ;ZBUFF
117 ;ZSIZE (132/2+SSIZE)
0 ;ZFORM
0 ;ZLENG
TTB0*2 ;ZFIRS
TTB0*2 ;ZTOP
TTS0 ;ZUSED
220 ;ZSHAR
0 ;ZREM
.BLK ZAUX ;AUXILIARY WORDS IN ZONE
TTS0: 0 ;SOPER
0 ;SCOUN
0 ;SADDR
0 ;SSPEC
TTS0 ;SNEXT
0 ;SSTAT
TTB0*2 ;S
TTB0: .BLK 110 ;DATA BUFFER
.TXT "FRA "
INZON: .TXT 'PLRÅ<0><0>' ;ZNAME
Z ;SIZE
0 ;ZMODE
1B14+1B13+1B12+1B11 ;ZKIND BLOCK+POSIT+REPEA+CATAL
65535 ;ZMASK
FFEJ1 ;ZGIVE
1 ;ZFILE
1 ;ZBLOC
0 ;ZCONV
INS0 ;ZBUFF
263 ;ZSIZE (72/2+SSIZE)
0 ;ZLENG
0 ;ZFIRS
INB0*2 ;ZFIRS
INB0*2 ;ZTOP
INS0 ;ZUSED
512 ;ZSHAR
0 ;ZREM
.BLK ZAUX ;AUXILIARY WORDS IN ZONE
INS0: 0 ;SOPER
0 ;SCOUN
0 ;SADDR
0 ;SSPEC
INS0 ;SNEXT
0 ;SSTAT
INB0*2 ;SFIRS
INB0: .BLK 256 ;DATA BUFFER
24
0
LPZON:.TXT 'LPT<0><0><0>' ;ZNAME
Z ;SIZE
0 ;ZMODE
1 ;ZKIND
65535 ;ZMASK
LPTD9: FFEJ1 ;GIVE IGNOREOPTION
1 ;ZFILE
1 ;ZBLOC
0 ;ZCONV
LPS0 ;ZBUFF
117 ;ZSIZE (132/2+SSIZE)
0 ;ZFORM
0 ;ZLENG
LPB0*2 ;ZFIRS
LPB0*2 ;ZTOP
LPS0 ;ZUSED
220 ;ZSHAR
0 ;ZREM
.BLK ZAUX ;AUXILIARY WORDS IN ZONE
LPS0: 0 ;SOPER
0 ;SCOUN
0 ;SADDR
0 ;SSPEC
LPS0 ;SNEXT
0 ;SSTAT
LPB0*2 ;SFIRS
LPB0: .BLK 110 ;DATA BUFFER
; BUFFERE DER ER NØDV NÅR FX. DOMUS-FIL-FUNKTIONER BRUGES!
BUFF1: .+0
.-1
BUFF2
10
PCDS
0
0
0
0
0
BUFF2: .+0
.-1
BUFF3
10
PCDS
0
0
0
0
0
BUFF3: .
.-1
BUFF4
10
PCDS
0
0
0
0
0
BUFF4: .
.-1
0
10
PCDS
0
0
0
0
0
0
; PROCES-DESCRIPTOR:
PCDS: .+0
.-1
0
0
.TXT 'F<0><0><0><0>'
.+0
.-1
BUFF1
PGDS
0
0
33
BI5
0
0
0
0
BIRTH*2
0
1
2
3
4
5
6
7
8
9
.DUSR GOP = JSR @ 30,3
OP1
.DUSR INTHX= JSR @ 31,3
RTH1
.DUSR INT = JSR @ 32,3
RT
.DUSR INI = JSR @ 33,3
RI
.DUSR OUT = JSR @ 34,3
WT
.DUSR OUL = JSR @ 35,3
WL
.DUSR OUO = JSR @ 36,3
WO
.DUSR OH = JSR @ 37,3
H1
.DUSR OSP = JSR @ 38,3
O1
.DUSR ONL = JSR @ 39,3
O2
.DUSR OCH = JSR @ 40,3
O4
.DUSR INTK = JSR @ 41,3
INTK1
.DUSR OPERA= JSR @ 42,3
OPER1
.DUSR LPD = JSR @ 43,3
LPD1
.DUSR LPDW = JSR @ 44,3
LPDW1
.DUSR FEJL = JSR @ 45,3
FEJL1
.DUSR OUTXT= JSR @ 46,3
OUTX1
.DUSR SEBYT= JSR @ 47,3
SEBY1
.DUSR INTFI= JSR @ 48,3
RTF1
.DUSR OUTFI= JSR @ 49,3
OUTF1
.DUSR OULFI= JSR @ 50,3
OULF1
.DUSR OUFI = JSR @ 51,3
OUF1
.DUSR BLB = JSR @ 52,3
BLB1
.DUSR HARD = JSR @ 53,3
HM1
.DUSR HARDO= JSR @ 54,3
HM5
.DUSR OUTHX= JSR @ 55,3
WTHX
.DUSR OULHX= JSR @ 56,3
WLHX
.DUSR FLYT = JSR @ 57,3
FLYT1
.DUSR TYPE = JSR @ 58,3
TYP1
.DUSR HARDR= JSR @ 59,3
HM6
.DUSR HARDY=JSR @ 60,3
HM7
.DUSR LMV = JSR @ 61,3
LMV1
.DUSR INTW = JSR @ 62,3
IW1
.DUSR OUTW = JSR @ 63,3
OUTW1
.DUSR OULW = JSR @ 64,3
OULW1
.DUSR LTL = JSR @ 65,3
LTL1
.DUSR WHX = JSR @ 66,3
WHX1
-1
.END PCDS
;SIDE 11 SLUT / FIL SLUT
«ff»
«nul»