utils.asm
This is an old revision of the document!
Retourner à la liste des fichiers
* NRDOS.MO5 version 3.5
* UTILS.ASM (Routines utilitaires)
************************************************************************************************************
* UNKRT4
* Routine d'utilité inconnue (calcul de quelque chose)
************************************************************************************************************
UNKRT4 SET *
PSHS A,B
LDA #128
PSHS A
LDD UNKVR4
UK4LP1 ORCC #1
RORA
RORB
RORA
RORB
RORA
RORB
TSTA
BNE UK4LB1
LDA #$FF
UK4LB1 TSTB
BNE UK4LB2
LDB #$FF
UK4LB2 MUL
DEC ,S
BNE UK4LP1
ADDD UNKVR4
STD UNKVR4
TFR D,X
PULS A
PULS PC,B,A
UNKVR4 FDB $0101
************************************************************************************************************
* MUL16B
* Multiplication 16 bits avec résultat sur 32 bits
************************************************************************************************************
MUL16B SET *
PSHS X,Y
LEAX ,S
LEAY 2,S
LEAS -4,S
LEAU ,S
CLR ,U
CLR 1,U
LDA 1,X
LDB 1,Y
MUL
STD 2,U
LDA ,X
LDB 1,Y
MUL
ADDD 1,U
STD 1,U
BCC M16CR1
INC ,U
M16CR1 LDA 1,X
LDB ,Y
MUL
ADDD 1,U
STD 1,U
BCC M16CR2
INC ,U
M16CR2 LDA ,X
LDB ,Y
MUL
ADDD ,U
STD ,U
LDX ,U
LDD 2,U
LEAS 8,S
RTS
************************************************************************************************************
* PRSDSP
* Interprète une chaîne et affiche l'entier correspondant. Inutilisé.
************************************************************************************************************
PRSDSP SET *
JSR PRSINT
LBEQ PRMERR
LBCS PRMERR
TFR Y,D
JMP DSPDC2
************************************************************************************************************
* UNKRT5
* Routine d'utilité inconnue et inutilisée.
************************************************************************************************************
UNKRT5 SET *
JSR VALAZ
LBCS PRMERR
STX TMP16
JSR PRSINT
LBEQ PRMERR
LBCS PRMERR
LDX TMP16
STY ,X
RTS
************************************************************************************************************
* UNKRT6
* Routine d'utilité inconnue et inutilisée.
************************************************************************************************************
UNKRT6 SET *
JSR VALAZ
LBCS PRMERR
STX TMP16
JSR PRSINT
LBEQ PRMERR
LBCS PRMERR
JSR UNKRT4
JSR MUL16B
LEAX 1,X
LDY TMP16
STX ,Y
RTS
************************************************************************************************************
* VALAZ
* Transforme un caractère alphabétique isolé en une valeur entre 1 et 26
************************************************************************************************************
VALAZ SET *
JSR SKSPCL
JSR GETNCH
BEQ VAZERR
SUBB #'A
CMPB #26
BCC VAZERR
LDX #VALTAB
ABX
ABX
JSR GETNCH
BEQ VAZOK
CMPB #SPACE
BNE VAZERR
VAZOK ANDCC #$FE
RTS
VAZERR ORCC #1
RTS
************************************************************************************************************
* GETNCH
* Recupère le prochain caractère dans la ligne de commande
************************************************************************************************************
GETNCH SET *
PSHS A,X
LDX CLPTR
LDA CLTOGO
BEQ GNRTS
LDB ,X
LEAX 1,X
STX CLPTR
DECA
STA CLTOGO
ANDCC #$FB
GNRTS PULS PC,X,A
************************************************************************************************************
* UNKRT7
* Routine d'utilité inconnue et inutilisée.
************************************************************************************************************
UNKRT7 SET *
JSR CLS ; Efface l'écran
UK7LP1 JSR UNKRT4
LDY #320
JSR MUL16B
PSHS X ; Résultat = coordonnée X
JSR UNKRT4
LDY #200
JSR MUL16B
TFR X,Y ; Résultat = coordonnée Y
PULS X
JSR PSET ; Affiche le point
JSR KEYPRS
BEQ UK7LP1
JSR GETKEY
CMPB #SPACE ; Espace permet de sortir
BNE UK7LP1
JSR CLS ; Efface l'écran
RTS
************************************************************************************************************
* PSET
* Exécute la commande PSET. Inutilisé.
************************************************************************************************************
PSET SET *
CMPX #320
BCC PSERR
CMPY #200
BCC PSERR
GOTO PLOTH
PSERR PSHS X,Y
LDX #BADARG
JSR DSPSTR
PULS B,A
JSR DSPDC2
LDX #YEG
JSR DSPSTR
PULS B,A
JMP DSPDC2
BADARG FCB CR, LF
FCS "Mauvais argument pour PSET"
FCB CR, LF
FCS /X = /
YEG FCB CR, LF
FCC ", Y = "
FCB 0
VALTAB FDB 1, 2, 3, 4, 5, 6, 7, 8
FDB 9, 10, 11, 12, 13, 14, 15, 16
FDB 17, 18, 19, 20, 21, 22, 23, 24
FDB 25, 26
TMP16 FDB $0000
RMB 2
************************************************************************************************************
* HEXLIN
* Affiche un dump hexadécimal de A octets de la zone pointée par X.
************************************************************************************************************
HEXLIN SET *
TSTA ; A contient le nombre de caractère total
BEQ HEXRTS ; à afficher
PSHS A,X ; et X pointe sur la zone à dumper
LDB #8 ; 8 caractères par ligne
HEXLP1 PSHS B
JSR MEMFRM
LDB ,X+
JSR DHEX8 ; Affiche la valeur hexadécimale
LDB #SPACE
LBSR PCHAR
PULS B
DECA
BEQ HXCONT
DECB
BNE HEXLP1
BRA HEXSEP
HXCONT DECB
HEXTAB TSTB
BEQ HEXSEP
PSHS B
LDB #SPACE
LBSR PCHAR
LBSR PCHAR
LBSR PCHAR
PULS B
DECB
BRA HEXTAB
HEXSEP PULS X,A
LDB #SPACE ; Séparation
LBSR PCHAR
LBSR PCHAR
LDB #8 ; 8 caractères par ligne
HEXLP2 PSHS B
JSR MEMFRM
LDB ,X+
CMPB #SPACE
BCS HEXHI
CMPB #$7F
BHI HEXHI ; Si ce n'est pas de l'ASCII
BRA HEXCHR
HEXHI LDB #POINT ; Afficher un point à la place
HEXCHR LBSR PCHAR ; Affiche le caractère
PULS B
DECA
BEQ HEXCR
DECB
BNE HEXLP2
HEXCR LBSR DCRLF
BRA HEXLIN
HEXRTS RTS
utils.asm.1767353478.txt.gz · Last modified: by fool-duplex
