reading images form file
This commit is contained in:
81
oled.mac
81
oled.mac
@@ -7,6 +7,14 @@ LF EQU 0Ah ; new line
|
|||||||
BDOS EQU 0005h ; BDOS entry point
|
BDOS EQU 0005h ; BDOS entry point
|
||||||
PSTR EQU 09h ; print string
|
PSTR EQU 09h ; print string
|
||||||
CRED EQU 01h ; read console
|
CRED EQU 01h ; read console
|
||||||
|
FOPE EQU 0Fh ; file open
|
||||||
|
FRED EQU 14h ; file read next record
|
||||||
|
|
||||||
|
FCB EQU 5Ch ; File Control Block
|
||||||
|
FCBFNAME EQU FCB+01h ; FCB File Name
|
||||||
|
FCBEX EQU FCB+0Ch ; FCB Excent Number
|
||||||
|
FCBRC EQU FCB+0Fh ; FCB Record Count
|
||||||
|
FCBCR EQU FCB+20h ; FCB Current Record
|
||||||
|
|
||||||
OLED EQU 50h ; base addr of OLED card
|
OLED EQU 50h ; base addr of OLED card
|
||||||
ORST EQU 04h ; reset command (H)
|
ORST EQU 04h ; reset command (H)
|
||||||
@@ -30,16 +38,49 @@ OCOLL EQU 80h ; column count: 128 columns
|
|||||||
; MAIN
|
; MAIN
|
||||||
CALL OINIT ; init OLED
|
CALL OINIT ; init OLED
|
||||||
CALL OCLS ; clear screen
|
CALL OCLS ; clear screen
|
||||||
CALL PROMPT ; print prompt
|
|
||||||
|
|
||||||
CALL OCSTART ; go to start
|
CALL OCSTART ; go to start
|
||||||
CALL READLINE ; read row A
|
|
||||||
CALL READLINE ; read row B
|
|
||||||
CALL READLINE ; read row C
|
|
||||||
CALL READLINE ; read row D
|
|
||||||
|
|
||||||
|
LD A,(FCBFNAME) ; load first char of file name
|
||||||
|
CP ' ' ; check file name provided
|
||||||
|
|
||||||
|
JP NZ,MAIN1
|
||||||
|
CALL PROMPTREAD ; read from prompt
|
||||||
|
RET ; exit to CP/M
|
||||||
|
|
||||||
|
MAIN1:
|
||||||
|
CALL FILEREAD ; read from file
|
||||||
RET ; exit to CP/M
|
RET ; exit to CP/M
|
||||||
|
|
||||||
|
PROMPTREAD:
|
||||||
|
LD DE,MSGPROMPT
|
||||||
|
CALL PRINT ; print prompt
|
||||||
|
|
||||||
|
CALL READLINE ; read row A
|
||||||
|
CALL READLINE ; read row B
|
||||||
|
CALL READLINE ; read row C
|
||||||
|
CALL READLINE ; read row D
|
||||||
|
RET
|
||||||
|
|
||||||
|
FILEREAD:
|
||||||
|
LD DE,MSGFILEREAD
|
||||||
|
CALL PRINT ; print reading from file
|
||||||
|
XOR A
|
||||||
|
LD (FCBEX),A ; select 0'th extent
|
||||||
|
LD (FCBRC),A ; clear
|
||||||
|
LD C,FOPE ; open file
|
||||||
|
LD DE,FCB ; use default FCB
|
||||||
|
CALL BDOS
|
||||||
|
CP 0FFh ; is error
|
||||||
|
JP Z,FILEREAD1
|
||||||
|
XOR A
|
||||||
|
LD (FCBCR),A ; start from beggining
|
||||||
|
CALL READRECORD ; read 128 byte record
|
||||||
|
RET
|
||||||
|
FILEREAD1:
|
||||||
|
LD DE,MSGOPENERR
|
||||||
|
CALL PRINT
|
||||||
|
LD A,0FFh
|
||||||
|
RET
|
||||||
|
|
||||||
READLINE:
|
READLINE:
|
||||||
LD D,OCOLL ; number of columns
|
LD D,OCOLL ; number of columns
|
||||||
@@ -52,6 +93,21 @@ READLINE1:
|
|||||||
JP NZ,READLINE1 ; next column
|
JP NZ,READLINE1 ; next column
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
; reads block using default FCB
|
||||||
|
; A=0 - OK
|
||||||
|
; A=FFh - error
|
||||||
|
READRECORD:
|
||||||
|
LD C,FRED ; read file
|
||||||
|
LD DE,FCB ; use default FCB
|
||||||
|
CALL BDOS
|
||||||
|
JP NZ,READRECORD1
|
||||||
|
RET
|
||||||
|
READRECORD1:
|
||||||
|
LD DE,MSGREADERR
|
||||||
|
CALL PRINT
|
||||||
|
LD A,0FFh ; error
|
||||||
|
RET
|
||||||
|
|
||||||
OINIT:
|
OINIT:
|
||||||
CALL ORESET ; reset OLED
|
CALL ORESET ; reset OLED
|
||||||
LD HL,OINITSEQ ; commands to send
|
LD HL,OINITSEQ ; commands to send
|
||||||
@@ -169,15 +225,22 @@ READHEX:
|
|||||||
OR B ; OR B to A
|
OR B ; OR B to A
|
||||||
RET
|
RET
|
||||||
|
|
||||||
PROMPT:
|
; DE - address to $ terminated string
|
||||||
|
PRINT:
|
||||||
LD C,PSTR ; load function number
|
LD C,PSTR ; load function number
|
||||||
LD DE,PROMPTMSG ; load string addr
|
|
||||||
CALL BDOS ; call CP/M
|
CALL BDOS ; call CP/M
|
||||||
RET
|
RET
|
||||||
|
|
||||||
PROMPTMSG:
|
MSGPROMPT:
|
||||||
DB 'OLED:>', CR, LF,'$' ; string terminated with $
|
DB 'OLED:>', CR, LF,'$' ; string terminated with $
|
||||||
|
|
||||||
|
MSGFILEREAD:
|
||||||
|
DB 'Reading from file', CR, LF, '$'
|
||||||
|
MSGOPENERR:
|
||||||
|
DB 'Error opening file', CR, LF, '$'
|
||||||
|
MSGREADERR:
|
||||||
|
DB 'Error reading file', CR, LF, '$'
|
||||||
|
|
||||||
; Initialization sequence
|
; Initialization sequence
|
||||||
; 081h,080h - set contrast (080h full)
|
; 081h,080h - set contrast (080h full)
|
||||||
; 020h,000h - set horizontal window wrapping
|
; 020h,000h - set horizontal window wrapping
|
||||||
|
|||||||
Reference in New Issue
Block a user