reading images form file
This commit is contained in:
83
oled.mac
83
oled.mac
@@ -7,6 +7,14 @@ LF EQU 0Ah ; new line
|
||||
BDOS EQU 0005h ; BDOS entry point
|
||||
PSTR EQU 09h ; print string
|
||||
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
|
||||
ORST EQU 04h ; reset command (H)
|
||||
@@ -30,16 +38,49 @@ OCOLL EQU 80h ; column count: 128 columns
|
||||
; MAIN
|
||||
CALL OINIT ; init OLED
|
||||
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
|
||||
|
||||
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:
|
||||
LD D,OCOLL ; number of columns
|
||||
@@ -49,7 +90,22 @@ READLINE1:
|
||||
CALL ODATA ; write to OLED
|
||||
POP DE
|
||||
DEC D ; count donw columns
|
||||
JP NZ,READLINE1 ; next column
|
||||
JP NZ,READLINE1 ; next column
|
||||
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:
|
||||
@@ -169,15 +225,22 @@ READHEX:
|
||||
OR B ; OR B to A
|
||||
RET
|
||||
|
||||
PROMPT:
|
||||
; DE - address to $ terminated string
|
||||
PRINT:
|
||||
LD C,PSTR ; load function number
|
||||
LD DE,PROMPTMSG ; load string addr
|
||||
CALL BDOS ; call CP/M
|
||||
RET
|
||||
|
||||
PROMPTMSG:
|
||||
MSGPROMPT:
|
||||
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
|
||||
; 081h,080h - set contrast (080h full)
|
||||
; 020h,000h - set horizontal window wrapping
|
||||
|
||||
Reference in New Issue
Block a user