Sida 9 av 10

Re: Nya RT-datorn

Postat: 30 april 2024, 15:28:54
av Mickecarlsson
Här är det otestade programmet för att läsa ner data från EPROM till RAM och starta programmet. Det kompilerar som det ska, återstår och se om det funkar :D

EDIT: Fixade en bugg, glömde uppdatera vilket EPROM som skulle läsas.

Kod: Markera allt

        NAM     PROM
*
*
* PROGRAMMET L[SER NED PROMBASERADE PROGRAM
* TILL RAM
*
* F\RUTS[TTER PROM P] KORT 836
* H[R ANV[NDS F\LJANDE:
* PROMKORT P] ADRESS $E0B0
* RAM P] ADRESS $E400-E4FF
*
* PROGRAMMET I PROM SKALL HA F\LJANDE UTFORMN.:
* BYTE 1 OCH 2 = SISTA PROMADRESS - T.EX. 02AE
* BYTE 3 OCH 4 = F\RSTA RAMADRESS - T.EX. C100
* BYTE 5 OCH 6 = TRANSFERADRESS   - T.EX. C100
*
* MODIFIERAT F\R MICKES PROMKORT 836
* AV MICKE 2024-04-30
* 
* PROGRAMMET SKRIVET AV GUNNAR EJEMOH
*
* KALLA UPP PROGRAMMET MED GET.PROM
*
*
EPROM   EQU     $E0B0
COMTAB  EQU     $E400
JMPTAB  EQU     $E500
LADDA   EQU     $E600
RAM     EQU     JMPTAB+$F0
WARMS   EQU     $CD03
PROMVAL EQU     2
*
        ORG     RAM
PRMSTA  RMB     2         1:A PROMADRESS
PRMSTO  RMB     2         SISTA PROMADRESS
RAMSTA  RMB     2         1:A RAMADRESS
TRNSFR  RMB     2         TRANSFERADRESS
ENDADR  RMB     2
*
* L[GG IN ADRESS TILL KOMMANDOTABELL I FLEX
*
        ORG     $CC12
        FCB     $E4       TABELL I RAM P] $E400
*
        ORG     COMTAB
* H[R SKRIVS ALLA KOMMANDON IN SOM LIGGER I PROM
* EFTER SISTA KOMMANDOT SKRIVS 0
*
        FCC     'ASN'
        FCB     0
        FDB     JMPTAB
        FCC     'COPY'
        FCB     0
        FDB     COPY
        FCC     'DATE'
        FCB     0
        FDB     DATE
        FCC     'CAT'
        FCB     0
        FDB     CAT
        FCC     'DELETE'
        FCB     0
        FDB     DELETE
        FCB     0
*
        ORG     JMPTAB
* H[R FINNS STARTADR. TILL ALLA PROGRAM I PROM
* X SKA INNEH]LLA STARTADRESSEN F\R PROGRAMMET
* B SKA INNEH]LLA 1, 2 ELLR 3 = VILKET EPROM
* LIGGER PROGRAMMET P]
*
        PSHS    X,Y,A,B   SPARA UNDAN REGISTER
        LDX     #$0000    F\RSTA PROMADRESSEN
        LDB     1         F\RSTA PROMET
STORE   STX     PRMSTA    L[GG I PRMSTA
        JMP     LADDA     HOPPA
*
COPY    PSHS    X,Y,A,B
        LDX     #$54E0
        LDB     2         ANDRA PROMET
        BRA     STORE
*
DATE    PSHS    X,Y,A,B
        LDX     #$62C0
        LDB     1
        BRA     STORE
*
CAT     PSHS    X,Y,A,B
        LDX     #$68CA
        LDB     1
        BRA     STORE
*
DELETE  PSHS    X,Y,A,B
        LDX     #$0000
        LDB     3         TREDJE PROMMET
        BRA     STORE
*
*
        ORG     LADDA
* H[R L[SER VI IN
* STOPPADRESS
* RAMADRESS
* TRANSFERADRESS
*
        LDY     #PRMSTO
        LDX     PRMSTA    STARTADRESSEN I EPROM
LADDA2  BSR     LESPRM    L[S FR]N EPROM BYTE 1
        BSR     LESPRM    L[S FR]N EPROM BYTE 2
        CMPY    #ENDADR   [R VI KLARA?
        BNE     LADDA2    NOPE, LOOPA
*
* H[R L[SES SJ[LVA PROGRAMMET IN
*
        LDX     PRMSTO    STOPPPADRESSEN
        INX               \KA X
        STX     ENDADR    LAGRA I ENDADR
        LDX     PRMSTA    L[GG PRMSTA I X
        LDY     RAMSTA    VART I MINNET SKA DET TILL
        LEAX    6,X       HOPPA FRAM 6 POS F\RBI STARTINFO
        STX     PRMSTA    L[GG I PRMSTA = SJ[LVA PROGGET
LADDA3  BSR     LESPRM    L[S IN EN BYTE
        CMPX    ENDADR    [R VI KLARA?
        BNE     LADDA3    NOPE, LOOPA IGEN
        PULS    X,Y,A,B   ]TERST[LL REGISTER
        JMP     [TRNSFR]  OCH HOPPA TILL STARTADRESSEN
*
* H[R L[SER VI IN DATA FR]N EPROM
*
LESPRM  CMPB    PROMVAL   VILKET EPROM SKA ANV[NDAS
        BMI     PROM1     MINDRE [N 2 = PROM #1
        BEQ     PROM2     LIKA MED 2 = PROM #2
        BGT     PROM3     ST\RRE [N 2 = PROM #3
*
PROM1   STX     EPROM     F\RSTA EPROMET
        LDA     EPROM     L[S DATA
        BRA     LAGRA     LAGRA I RAM
PROM2   STX     EPROM+$10 ANDRA EPROMET
        LDA     EPROM+$10 L[S DATA
        BRA     LAGRA     LAGRA I RAM
PROM3   STX     EPROM+$20 TREDJE EPROMET
        LDA     EPROM+$20 L[S DATA
        BRA     LAGRA     LAGRA I RAM
*
LAGRA   STA     ,Y+       SPARA TILL MINNET, ÖKA MED 1
        INX               N[STA POSITION
        RTS               ]TERG]
*
        END

Re: Nya RT-datorn

Postat: 1 maj 2024, 12:12:52
av Mickecarlsson
Idag fick jag hjälp med att radera en mängd EPROM (TACK anders_bzn).
Glad i hågen kom jag hem och satte mig att ladda in FLEX.SYS till PROM-programmeraren, enligt CBUG 4.3 laddas FLEX från EPROM via adress $E0B0 och position $0C00 - $1FFF, dvs 5 120 bytes.
Vilket det kanske gjorde en gång i tiden men FLEX 9.1 som jag kör är lite större, nämligen 6 552 bytes.
Jag får patcha CBUG 4.3 till att ladda mellan $0C00 - $2598, men för att vara "framtidssäker" väljer jag att sätta sista position till $25FF.
Jag återkommer.....

Re: Nya RT-datorn

Postat: 1 maj 2024, 22:54:27
av Mickecarlsson
Och nu när hjärnan har aktiverats så stämmer CBUG :oops:
FLEX laddas mellan CC00-DFFF, dvs, från EPROM 0C00-1FFF, men man måste strippa FLEX från alla startpunkter.
En FLEX-fil börjar alltid med:
Byte 0 - Start of record indicator $02
Byte 1 - Most significant byte of the load address
Byte 2 - Least significant byte of the load address
Byte 3 - Number of bytes in the record
Byte 4-n - The binary data of the record.

I slutet av filen står det HEX 16 följt av två bytes som innehåller start-adressen för programmet.
För att ha FLEX i EPROM måste man strippa 4 bytes i början och 3 bytes i slutet samt spara det på rätt ställe i EPROM'et.
Jag har listat FLEX.SYS alla minnesblock, och det är ett antal, mer info kommer:

Kod: Markera allt

Converting 0000 to FFFF

Address: CC00-CC34  Length: 053

Address: CC49-CC49  Length: 001

Address: CC4E-CCA7  Length: 090

Address: CCC0-CCC0  Length: 001

Address: CCD8-CCD8  Length: 001

Address: CCE4-CCE4  Length: 001

Address: CCF8-CDBB  Length: 196
Address: CDBC-CE7F  Length: 196
Address: CE80-CF43  Length: 196
Address: CF44-D007  Length: 196
Address: D008-D0CB  Length: 196
Address: D0CC-D18F  Length: 196
Address: D190-D253  Length: 196
Address: D254-D317  Length: 196
Address: D318-D36A  Length: 083

Address: D3FD-D3FF  Length: 003

Address: CA00-CAC3  Length: 196
Address: CAC4-CAE1  Length: 030

Address: C840-C84F  Length: 016

Address: C700-C7C3  Length: 196
Address: C7C4-C802  Length: 063

Address: BF00-BF71  Length: 114

Address: D400-D408  Length: 009

Address: D435-D4F8  Length: 196
Address: D4F9-D5BC  Length: 196
Address: D5BD-D680  Length: 196
Address: D681-D744  Length: 196
Address: D745-D808  Length: 196
Address: D809-D8CC  Length: 196
Address: D8CD-D990  Length: 196
Address: D991-DA54  Length: 196
Address: DA55-DB18  Length: 196
Address: DB19-DBDC  Length: 196
Address: DBDD-DCA0  Length: 196
Address: DCA1-DD64  Length: 196
Address: DD65-DDE2  Length: 126

Address: D3E5-D3FC  Length: 024

Address: D370-D3B9  Length: 074

Address: CB00-CBC3  Length: 196
Address: CBC4-CBD5  Length: 018

Address: DE00-DEC3  Length: 196
Address: DEC4-DF87  Length: 196
Address: DF88-DFB8  Length: 049

Re: Nya RT-datorn

Postat: 2 maj 2024, 21:10:34
av Mickecarlsson
836-kortet fungerar perfekt, åtminstone med 1 EPROM, jag har inte testat med 2 eller 3. Och PROM-kommandot fungerar helt perfekt,
Men.....
Jag goofade mig vad det gäller lagringen av programmet i EPROM. Man måste strippa de 4 första byten i varje program innan de lagras i EPROM. De 4 första byten är till för FLEX så den vet var i minnet programmet ska starta. Det är inga problem att kalla upp t.ex. ASN från floppy, FLEX tittar på det första 4 byten och stuvar in programmet på startadressen, i detta fall $C100
Laddar jag från EPROM så kan jag välja att göra två saker, antingen strippa de första 4 byten innan jag lagrar programmet i EPROM eller så löser jag det i programmet PROM.
Tack vare siten Daniel's bits, bytes & pieces kan jag lösa detta med hjälp av hans program cmd2bin som strippar alla dessa bytes från FLEX-filer.
Och för ASN ser jag att den innehåller 2 referenser:

Kod: Markera allt

cmd2bin ASN.CMD ASN.BIN
Converting 0000 to FFFF

Address: C100-C1C3  Length: 196
Address: C1C4-C1EA  Length: 039
Kollar jag in koden ser jag att andra referensen är texten som ska visas, jag gissar att man har direktivet

Kod: Markera allt

    EQU    *
för texterna, då blir det 4 bytes där som måste strippas.

Jag får nu gå igenom alla programmen jag ska ha i EPROM för att se om det går att lösa.
Jag strippade FLEX och la in på arean 0C00-1FFF, men det ballar ur, FLEX hämtas via kommandot L, och det står rätt i den arean som kollas men koden löper amok :D
Felsökning pågår på detta.

Re: Nya RT-datorn

Postat: 3 maj 2024, 09:57:30
av Mickecarlsson
Bläh. Jag står vid ett vägskäl. Den FLEX 9.1 jag använder är en patchad variant som har en bra drivrutin för WD2797, klarar 80 spår, double density och double sided.
MEN…..
För att få plats med drivrutinen fick man utnyttja en del av det vanliga minne, därav patchen i FLEX.
Ett av minnesblocken i FLEX är detta:

Kod: Markera allt

Address: BF00-BF71  Length: 114
Här liggen en del av drivrutinen för WD2797, och denna del kan jag inte få med mig i CBUG’ens laddrutin för FLEX, den laddar till CC00-DFFF.

Jag kan göra på två sätt:
Antingen patcha CBUG att ladda CC00-DFFF som vanligt + de 114 byten i BF00-BF71.
Eller leta upp den FLEX som heter FLEX 9.81 DOUBLE DENSITY, den vet jag att jag körde på min RT-dator på 80-talet.

Re: Nya RT-datorn

Postat: 3 maj 2024, 19:35:18
av Mickecarlsson
Efter två härliga dagar med barnbarnet var det dags att titta på att fixa till koden för EPROM-kortet. Och jag tänkte om. Jag har allt som behövs i CMD-filen, där är var i minnet programmet ska lagras, hur stort blocket är som ska läggas i minnet, och transferadressen. Om programmet är större än 255 bytes är där fler lagringspositioner.
Det enda som behövs är den adress på EPROM-kortet där programmet startar, första programmet börjar på $0000. Inga Sista Promadress, Första RAM-adress eller Transferadress behövs.

START:
Jag läser helt enkelt in första byten
kollar om det är $02
om det är så, då läser jag in två bytes till, vilket då blir min RAM-adress där programmet ska lagras.
Sen läser jag in en byte till = hur många bytes det finns i blocket.
Loppa och läs in dessa bytes och lägg i minnet till blocket är läst in.

Kolla om nästa byte är $02 eller $16
$02 gå till START
$16 läs in två bytes till TRANSFERADRESS och hoppa dit.

Mer kommer
EDIT: Korrigerade fel.

Re: Nya RT-datorn

Postat: 4 maj 2024, 19:33:59
av Mickecarlsson
Då var det (nästan) klart.
Programmet fungerar med ett EPROM 27512 som sitter i sockeln för IC8
Första programmet som ska läggas i EPROM läses in på adress $0000, nästa program ska laddas in på adressen som är efter de tre bytes som avslutar första programmet, för det flesta utilities är det 0x16, 0xC1, 0x00.
Varje startadress i EPROM ska läggas in i tabellen tillsammans med kommandot som anropar programmet.

Koden är här, kommer att läggas upp på Github.
OBS, detta är bara exempelkod med tre program, jag kommer att fylla 27512'an fullt ut och lägga upp min .ASM- och .BIN-fil på Github

Kod: Markera allt

        NAM     PROM
*
* PROGRAMMET L[SER NED PROMBASERADE CMD-FILER
* TILL RAM
* SKRIVET AV MIKAEL KARLSSON 2024-05-04
*
* BASERAT P] PROM.ASM UR MPU-LAREN
* NR 2 1983, SKRIVET AV GUNNAR EJEMOH
*
* F\RUTS[TTER PROM P] KORT 836
* EPROM P] $E0B0, $E0C0 och $E0D0
* RAM P] ADRESS $E400-E4FF
*
* PROGRAMMET I PROM [R STANDARD CMD-FILER
*
* KALLA UPP PROGRAMMET MED GET.PROM
*
EPROM   EQU     $E0B0     EPROM 27512 I IC8
COMTAB  EQU     $E400     COMMAND-TABELLEN
JMPTAB  EQU     $E500     HOPP-TABELLEN
LADDA   EQU     $E700     SJ[LVA PROGRAMMET
RAM     EQU     JMPTAB+$F0 
WARMS   EQU     $CD03     FLEX VARMSTART
*
        ORG     RAM
PRMSTA  RMB     2         CMD-FILENS STARTDARESS I EPROMET
RAMSTO  RMB     2         VART I RAM DET SKA SPARAS
TRNSFR  RMB     2         TRANSFERADRESS
PROMVAL RMB     1         VILKET EPROM, 1, 2 ELLER 3?
*
* L[GG IN ADRESS TILL KOMMANDOTABELL I FLEX
*
        ORG     $CC12     FLEX USER COMMAND TABLE ADDRESS
        FCB     $E4       TABELL I RAM P] $E400
*
        ORG     COMTAB    
* H[R SKRIVS ALLA KOMMANDON IN SOM LIGGER I PROM
* EFTER SISTA KOMMANDOT SKRIVS 0
*
        FCC     'ASN'
        FCB     0
        FDB     JMPTAB
        FCC     'DATE'
        FCB     0
        FDB     DATE
        FCC     'DIR'
        FCB     0
        FDB     DIR
        FCB     0

*
        ORG     JMPTAB
*
* H[R FINNS STARTADR. TILL ALLA PROGRAM I PROM
* X SKA INNEH]LLA STARTADRESSEN F\R PROGRAMMET
*
        PSHS    X,Y,A,B   SPARA UNDAN REGISTER
        LDX     #$0000    F\RSTA PROGRAMMET STARTADRESS
STORE   STX     PRMSTA    L[GG I PRMSTA
        JMP     LADDA     HOPPA
*
DATE    PSHS    X,Y,A,B
        LDX     #$00F6
        BRA     STORE
*
DIR     PSHS    X,Y,A,B
        LDX     #$020A
        BRA     STORE
*
        ORG     LADDA
*
LOAD1   LDX     PRMSTA    STARTADRESSEN I EPROM
*
LOAD2   BSR     LESPRM    H[MTA 1 BYTE, L[GG I A
        CMPA    #2        [R DET 02? DVS. START OF RECORD?
        BEQ     LESREC    JA; L[S D] IN RECORDL[NGD OCH LAGRA DET I MINNET
        CMPA    #$16      [R DET TRANSFER ADRESS?
        BSR     LESPRM    H[MTA TRANSFER-ADRESSEN MSB
        STA     TRNSFR    SPARA MSB
        BSR     LESPRM    H[MTA TRANSFER-ADRESSEN LSB
        STA     TRNSFR+1  SPARA LSB
        PULS    X,Y,A,B   ]TERST[LL REGISTER
        JMP     [TRNSFR]  OCH HOPPA TILL STARTADRESSEN

* LOAD FLEX FILE RECORD

LESREC  BSR     LESPRM    H[MTA RAM-ADRESSEN MSB
        TFR     A,B       LAGRA I B
        BSR     LESPRM    H[MTA RAM-ADRESSEN LSB
        EXG     A,B       V[ND P] DET S] DET BLIR R[TT
        STD     RAMSTO    SPARA I RAMSTO
        BSR     LESPRM    H[MTA ANTAL BYTES I RECORD
        TFR     A,B       LAGRA DET I B
LESRCD2 BSR     LESPRM    H[MTA EN BYTE FR]N PROGRAMMET
        LDY     RAMSTO    VAR SKA DET SPARAS?
        STA     0,Y+      SPARA DET I MINNET, \KA
        STY     RAMSTO    SPARA N[STA ADRESS
        DECB              [R VI NERE P] 0?
        BNE     LESRCD2   NEJ; FORTS[TT TILLS VI [R DET.
        BRA     LOAD2     JA, LETA EFTER FLER RECORDS
*
LESPRM  STX     EPROM     F\RSTA EPROMET
        LDA     EPROM     L[S DATA*
        INX               N[STA POS I PROMMET
        RTS               ]TERG]
*
        END
EDIT: Rättade felaktighet

Re: Nya RT-datorn

Postat: 5 maj 2024, 01:23:02
av MiaM
Sidospår: Antar att det är bäst att göra som du verkar ha gjort, d.v.s. ett eget "ROM-filsystem". Men ett annat alternativ är ju att emulera en disk med ROM och låta filsystemkoden i Flex hantera alla detaljer. Det lär väl slösa på utrymme en del, men å andra sidan skulle det gå att köra EEPROM och göra disken skrivbar. Typisk grej "ingen" skulle gjort då det begav sig (oj vad EEPROM var dyra...) men fullt rimligt idag.

Re: Nya RT-datorn

Postat: 5 maj 2024, 08:44:14
av Mickecarlsson
Jag har funderat på det, men det innebär att jag var tvungen att skriva en disk-drivrutin.
I MPU-laren #1 1985 finns det en beskrivning, kod och schema på just en ROM-disk.
Men, den koden ersätter hela drivrutinen till att bara funka med det ROM-kortet, vilket iofs är OK om du bara ska använda datorn till en styrning av något och inte vill fibbla med disketter i en taskig miljö.
Jag har sett kod för FLEX som kollar vilken drive som accessas, är det t.ex. drive 3 så hoppar man till en annan drivrutin för just drive 3. Nackdelen är att där finns inte så mycket plats i FLEX-arean att det går att få in, då får man trixa, som det är gjort med den FLEX 9.1 jag brottas med, där har man lagt delar av drivrutinen i user RAM.

Som det funkar nu är jag mer än nöjd, jag slipper mecka med CMD-filerna, det enda jag gör är att lägga ett nytt program i EPROM direkt de tre avslutande byten, dvs, 0x16, 0xC1, 0x00 (om programmet startar på $C100). CMD-filerna är paddade för att fylla ut en sektor (gissar jag, har inte orkat kolla).

Det jag ska göra nu är att få till EPROM #2 och #3 i koden.

Re: Nya RT-datorn

Postat: 6 maj 2024, 16:49:05
av Mickecarlsson
La in de flesta FLEX-programmen i EPROM, inklusive de stora, LIST, ASMB och XBASIC.
Det fungerar så bra att man blir tårögd :D
Tyvärr ser det mörkt ut med att ladda FLEX från EPROM med den inbyggda rutinen. FLEX 9.1 har exekverbar kod i dessa areor som måste finnas med:
C700-C802
C840-C84F
CA00-CAE1
CB00-CBD5
Laddrutinen i CBUG börjar med att rensa minnet mellan C700-CBFF för att sen ladda FLEX från EPROM 0C00-1FFF till CC00-DFFF i RAM, koden är här:

Kod: Markera allt

LDFLEX  EQU    *
        LDX    #$C700
LDFL10  CLR    0,X+
        CMPX   #$CC00    KLART ?
        BNE    LDFL10
        LDX    #$0C00    START I EPROM
        LDU    #$CC00    START I RAM
FLY100  STX    EPROM0
        LEAX   1,X
        LDA    EPROM0
        STA    0,U+
        CMPX   #$1FFF
        BNE    FLY100
        LDX    #$7ECD    KOLLA OM DET FINNS N]'T
        CMPX   $CD00
        BNE    JMPRTS
        JMP    $CD00
Jag får patcha denna kod och flytta den till F4C0-F7FF där det är plats över att lägga den. Jag lägger in koden från PROM.ASM och lägger in hela FLEX.SYS i EPROM så slipper jag böka. Och jag kan då lägga FLEX.SYS i början på EPROM'et och sen fylla på med de andra programmen.
Återkommer......

Re: Nya RT-datorn

Postat: 7 maj 2024, 08:53:25
av Mickecarlsson
Jag ger upp FLEX-laddnungen via EPROM så länge. Jag får undersöka det senare. Det som ska testas nu är att ladda från EPROM #2 och #3.

Re: Nya RT-datorn

Postat: 7 maj 2024, 09:05:06
av ELTompa
Nyfiken fråga, hur gick det med tvn som inte visade alla rader? Fick du fart på monitorn?

Re: Nya RT-datorn

Postat: 7 maj 2024, 12:51:03
av Mickecarlsson
Nej, jag kör fortfarande med den TV som bara visar 23 rader :D
Monitorn har jag inte haft tid att byta elyterna på.

Re: Nya RT-datorn

Postat: 7 maj 2024, 13:48:29
av Mickecarlsson
Då fungerar koden till mitt EPROM-kort 836 med flera EPROM.
Kommandor GET PROM1 laddar min kod till minnet på E400 och uppåt och lägger in pekare till tabellen med kommadona som är ”minnesresidenta”.
Här assemblerar jag koden, laddar den med GET och testar två kommandon som ligger på första positionen på var sitt ERPOM.
ASN är kommandot för att styra var abretsdisk och systemdisk finns. Jag ska ändra min WORK DRIVE till 1.
DEBUG är en komplett debugger för FLEX, den lär emulera en 6809’a fullt ut (enligt manualen)
Koden PROM.ASM laddas upp på Guthub inom kort.
IMG_5028.jpeg

Re: Nya RT-datorn

Postat: 8 maj 2024, 18:56:59
av Mickecarlsson
Trägen vinner :D
Efter att ha kollat i FLEX.SYS upptäckte jag att det fanns delar där som var paddade med 0x00 och dessa bytes var mellan minnesblocken. Då ballade min kod ur då jag inte tog hänsyn till detta.
Fixades med BNE LOAD2.
Nu funkar det riktigt bra :D
Bildbevis nedan, jag trycker x för att köra min laddrutin i CBUG, och FLEX bottade blixtsnabbt :D

Kod: Markera allt

 
LOAD2   BSR     LESPRM    H[MTA 1 BYTE, L[GG I A
        CMPA    #2        [R DET 02? DVS. START OF RECORD?
        BEQ     LESREC    JA; L[S D] IN RECORDL[NGD OCH LAGRA DET I MINNET
        CMPA    #$16      [R DET TRANSFER ADRESS?
        BNE     LOAD2    HOPPA ÖVER OM DET ÄR PADDNING
        BSR     LESPRM    H[MTA TRANSFER-ADRESSEN MSB
        STA     TRNSFR    SPARA MSB
        BSR     LESPRM    H[MTA TRANSFER-ADRESSEN LSB
        STA     TRNSFR+1  SPARA LSB
        PULS    X,Y,A,B   ]TERST[LL REGISTER
        JMP     [TRNSFR]  OCH HOPPA TILL STARTADRESSEN