.xlist ; Include file - OSSIBO.INC ; Epoc/Os Sibo include file. ; Copyright (c) Psion PLC 1989-90. ; ; VER DATE BY DESCRIPTION ; ----- -------- ---- ----------- ; 2.00F 30/09/90 NSM Final release ; NoNullFrames equ 1 ; if Asic1 A1Ent struc A1Dummy dw ? A1Control dw ? A1LcdSize dw ? A1LcdControl dw ? A1InterruptMask dw ? A1NonSpecificEoi dw ? A1TimerEoi dw ? A1FrcEoi dw ? A1ResetWatchDog dw ? A1FrcControl dw ? A1ProtectionOn dw ? A1ProtectionUpper dw ? A1ProtectionLower dw ? A1SoundLsw dw ? A1SoundMsw dw ? A1SoundControl dw ? A1Ent ends ; A1Status equ A1Control A1ProtectionOff equ A1ProtectionOn A1InterruptStatus equ A1LcdControl ; A1StatusR record LcdData:2,Rtc4Hz:1,SldMsw:1,ComboBusy:1,Rtc32Hz:1,ExternalNmi:1,WatchDogNmi:1,SldTx:1,A1SldEnable:1,LcdEnable:1,Ram512:1,Ram128:1,FrcSource:1,TickRate:1,FrcMode:1 A1LcdSizeR record LcdMLineEnable:1,LcdNumberOfPixels:5,LcdEndOfFrame:10 A1LcdControlR record LcdMode:2,LcdMLineRate:5,LcdRate:5 A1InterruptMaskR record SldTransmit:1,SldReceive:1,FrcExpired:1,Asic2Int:1,ExpIntLeftA:1,ExpIntRightB:1,Mains:1,Timer:1 ExpAddressLeftA equ 0200h ExpAddressRightB equ 0100h ExpChannelLeftA equ SelectChannel6 ExpChannelRightB equ SelectChannel5 ; ; Asic1 dependent constants ; ResetWatchDog equ A1ResetWatchDog ; A2Ent struc A2Dummy db 080h dup(?) A2Index dw ? A2Control dw ? A2Control1 dw ? A2Control2 dw ? A2Control3 dw ? A2SerialData dw ? A2SerialControl dw ? A2ChannelControl dw ? A2Ent ends ; A2External equ A2Control1 A2InterruptStatus equ A2Control2 A2Status equ A2Control3 A2KeyData equ A2SerialControl A2SlaveData equ A2ChannelControl A2IControl0 equ 0 A2IControl1 equ 1 A2IWrite equ 2 A2IDDR equ 3 ; A2InterruptStatusR record SlaveDataOverrun:1,SlaveDataControl:1,SlaveDataValid:1,ExpansionInterrupt:1,DoorInterrupt:1 A2StatusR record A2RevId:1,A2XExt:1,A2Sdis:1,SerialBusy:1,SerialClockState:1,A1ResetFlag:1,WakeUp:1,A1OnKey:1 A2Control1R record SerialClockRate:2,KeyScan:4 A2Control2R record ClockEnable7:1,ClockEnable6:1,ClockEnable5:1,BuzzerMode:1,BuzzerVolume:1,BuzzerToggle:1,XySwitch:1,DigitizerEnable:1 A2Control3R record ElEnable:1,VhControl:1,ExpansionEnable:1,DoorEnable:1,SerialEnable:1,A2SldEnable:1,Ps34Acknowledge:1,SerialNull:1 A2ChannelControlR record MultiplexEnable:1,ChannelSelect:3,Pack4Enable:1,Pack3Enable:1,Pack2Enable:1,Pack1Enable:1 ; ClockRateSlow equ 2 ClockRateMedium equ 0 ClockRateFast equ 3 SelectChannel0 equ (4 shl ChannelSelect) SelectChannel1 equ (mask Pack1Enable) SelectChannel2 equ (mask Pack2Enable) SelectChannel3 equ (mask Pack3Enable) SelectChannel4 equ (mask Pack4Enable) SelectChannel5 equ (5 shl ChannelSelect) SelectChannel6 equ (6 shl ChannelSelect) SelectChannel7 equ (7 shl ChannelSelect) ; SCONTOUT macro out A2SerialControl, al endm ; SDATAOUT macro out A2SerialData, al endm ; SDATAIN macro in al, A2SerialData endm ; SBUSY macro wait endm ; SREAD macro _REG mov al, SerialReadSingle or _REG out A2SerialControl, al nop SBUSY in al, A2SerialData endm ; SREADM macro _REG mov al, SerialReadMulti or _REG out A2SerialControl, al nop SBUSY in al, A2SerialData endm ; SWRITE macro _REG,_VAL mov al, SerialWriteSingle or _REG out A2SerialControl, al SBUSY mov al, _VAL out A2SerialData, al endm ; SWRITEM macro _REG,_VAL mov al, SerialWriteMulti or _REG out A2SerialControl, al SBUSY mov al, _VAL out A2SerialData, al endm ; SETSPEED macro _SPEED pushf cli mov al, OsA2Control1 and al, not mask SerialClockRate ifidni <_SPEED>, or al, ClockRateFast shl SerialClockRate endif ifidni <_SPEED>, or al, ClockRateMedium shl SerialClockRate endif ifidni <_SPEED>, or al, ClockRateSlow shl SerialClockRate endif mov OsA2Control1, al out A2Control1, al popf endm ; if LapTop XPUSHFCLI macro pushf cli endm XPOPF macro popf endm else XPUSHFCLI macro endm XPOPF macro endm endif ; XNOP macro endm ; @HwNullFrame macro call OsHwNullFrame endm ; A3Ent struc A3Adc db ? A3Control1 db ? A3Setup db ? A3Control2 db ? A3Dummy1 db 3 dup (?) A3Control3 db ? A3Dummy2 db 5 dup (?) A3Status db ? A3Dummy3 db ? A3Ent ends ; A3AdcLsbR record InvertedBit:1,OtherBits:7 A3AdcMsbR record Polarity:1,Overrange:1,AdcBits:4 A3Control1R record Vcc5Enable:1,Vcc4Enable:1,Vcc3Enable:1,DtoaBits:5 A3Control2R record AnalogueMultiplex:2,VhSoftStart:1,Vee2SoftStart:1,Vee1SoftStart:1,VhEnable:1,Vee2Enable:1,Vee1Enable:1 A3Control3R record AdcReadHighEnable:1,OffEnable:1,xDummy1:1 Ps34ControlR record Ps34Vcc3:1,xDummy2:1,Ps34Vcc4:1,xDummy3:1,Ps34Vcc5:1,xDummy4:3 ; AdcDigitizer equ 0 AdcVh equ 1 AdcMainBattery equ 2 AdcLithiumBattery equ 3 A3SetupValue equ 2 A3SelectId equ (SerialSelect or Asic5NormalId) A3InfoByte equ 080h ; Vee1SoftStartDelay equ (30*128) Vee2SoftStartDelay equ (30*128) VhSoftStartDelay equ (100*128) Vee1OffDelay equ (100*128) Vee2OffDelay equ (100*128) VhOffDelay equ (100*128) Vcc3Delay equ (25*128) Vcc4Delay equ (25*128) Vcc5Delay equ (25*128) Vcc4OffFrames equ (25) Vcc1_4To5Delay equ (3) ; Pan only in ms. Vcc1_4to5OffFrames equ (20) ; Gives 392 frames = 6.0 ms Vcc1_4to5OnTime equ 4 ; Gives 4 ms ; PS34R_ADC equ 0 PS34R_STATUS equ 1 PS34W_CONTROL equ 0 PS34W_DTOA equ 1 PS34W_OFF equ 0eh ; PS34STATR record pPowerFail:1,pColdStart:1,pVhready:1,pPenup:1,pNc:1,pAdmsb:3 PS34CONTR record pVcc3:1,pVee1:1,pVcc4:1,pVee2:1,pVcc5:1,pVh:1,pVhpower:2 PS34DTOAR record pNcc:1,pAdcsel:2,pDac:5 ; ADCSEL_ADCIN equ 0 ADCSEL_VIN equ 1 ADCSEL_VH equ 2 ADCSEL_VBATT equ 3 ; VHP1TO8 equ 0 VHP1TO4 equ 1 VHP1TO2 equ 2 VHP1TO1 equ 3 ; PPowerControl equ 0100h PPowerControlR record PVcc5Enable:1,PSoundEnable:1,PVee1Enable:1,PDropVoltage:1,PDac:4 PPia record PSoundVol:2,PClearCold:1,PDcPresent:1,PColdFlag:1,PLithiumWarn:1,PVinWarn:1 PSoundControl equ 0200h endif ; A3StatusR record PowerFail:1,ColdStart:1 AIntfR record ResetFlag:1,DummyWakeUp:1,OnKey:1 if Asic1 if ((mask ResetFlag) ne (mask A1ResetFlag)) or \ ((mask OnKey) ne (mask A1OnKey)) .err Reset or OnKey flags are not equal endif endif ; SerialWriteSingle equ 10000000b SerialWriteMulti equ 10010000b SerialReadSingle equ 11000000b SerialReadMulti equ 11010000b SerialReset equ 00000000b SerialSelect equ 01000000b ; Asic4Id equ 006h Asic5PackId equ 002h Asic5NormalId equ 003h Asic6Id equ 004h Asic8Id equ 005h Asic2SlaveId equ 01fh ; ; Asic5 info byte structure ; A5InfoByteR record A5TTL:1,A5Modem:1,A5MultiDrop:1,A5Barcode:1,A5Other:2,A5Parallel:1,A5Rs232:1 A5OtherRom equ (1 shl A5Other) A5OtherMCRTTL equ (3 shl A5Other) A5MCR equ (2 shl A5Other) ; if Consumer if S3b DefaultLcdContrast equ 9 else DefaultLcdContrast equ 7 endif else if S3c DefaultLcdContrast equ 9 else DefaultLcdContrast equ 15 endif endif ; InterruptBase equ 078h ; if Asic9 KeyPollColumns equ 8 else KeyPollColumns equ 10 endif KeyInitialDelay equ 24 if Consumer or S3c KeyRepeatDelay equ 2 else KeyRepeatDelay equ 4 endif PenUpDelay equ 16 MouseDownDelay equ 8 KeySettleDelay equ 24 KeyCntrlMask equ 00000001b KeyLeftShiftMask equ 00000010b KeyPsionMask equ 00000100b KeyCapsMask equ 00001000b KeyRightShiftMask equ 00010000b DigitizerRowMask equ 00010000b PsionScanCode equ 6 CapsScanCode equ 5 PsionUpScanCode equ 65 ; PostRomTest equ 010h PostSystemRamTest equ 020h PostVideoRamTest equ 030h PostComplete equ 0f0h if Consumer or S3c PostPort equ 0h else PostPort equ 01ffh endif ; if HandHeld VideoRamSegment equ 00040h VideoRamBase equ 00000h if Corporate VideoRamWords equ 00320h else if S3b VideoRamWords equ 02580h else if S3c VideoRamWords equ 00C80h else VideoRamWords equ 00500h endif endif endif else VideoRamSegment equ 0b800h VideoRamBase equ 00000h VideoRamWords equ 04000h endif ; CalSeg equ 0fffeh CalEnt struc CalVsupCLsw dw ? CalVsupCMsw dw ? CalVsupM dw ? CalVlthCLsw dw ? CalVlthCMsw dw ? CalVlthM dw ? CalType dw ? CalEnt ends ; CHKeyDataR record CHInSled:1,CHMains:1,CHDummy:2 ; IntBXHw equ -2 ; if Asic9 A9WControlRW equ 0002h A9RControl record A9MFrc2Is512KHzOr1KHz:1,A9MFrc2PreScale:1,\ A9MFrc1Is512KHzOr1Hz:1,A9MFrc1PreScale:1,\ A9MSoundEnable:1,A9MLcdEnable:1,\ A9MLowBatNMIEnable:1,A9MDoorNMIEnable:1,\ A9MZeroIsGrayMode:1,A9MArmStandBy:1,\ A9MDisableDMADivide:1,A9MRamDeviceSize:2,\ A9MDisableMemWait:1,A9MDisableIoWait:1,\ A9MDisableClockDivide:1 A9VRam256KBits equ (0 shl A9MRamDeviceSize) A9VRam1MBits equ (1 shl A9MRamDeviceSize) A9VRam4MBits equ (2 shl A9MRamDeviceSize) A9VRam16MBits equ (3 shl A9MRamDeviceSize) A9XRamDeviceSizeMask equ (3 shl A9MRamDeviceSize) A9WStatusR equ 0004h A9RStatus record A9MCold:1,A9MPowerFail:1,\ A9MReset:1,A9MNoBattery:1,\ A9MFifoFull:1,A9MSlaveOverrun:1,\ A9MSlaveControlFrame:1,A9MSlaveDataValid:1,\ A9MKeyboard:1,A9MSlaveClock:1,\ A9MMainsPresent:1,A9MDoorSwitch:1,\ A9MLowBatNMI:1,A9MDoorNMI:1,\ A9MProtectedModeNMI:1,A9MWatchDogNMI:1 A9MLcdType equ 8 A9XLcdType equ 0000111100000000b A9WLcdSizeW equ 0004h A9RLcdSize record A9MLcdLineLength:5,A9MLcdNumberOfPixels:11 A9WLcdControlW equ 0006h A9RLcdControl record A9MLcdMode:2,A9MLcdACLineRate:5,A9MLcdPixelRate:5 A9VSinglePage1 equ (0 shl A9MLcdMode) A9VSinglePage2 equ (1 shl A9MLcdMode) A9VSinglePage1And2 equ (2 shl A9MLcdMode) A9VDualPage1And2 equ (3 shl A9MLcdMode) A9BInterruptStatusR equ 0006h A9BInterruptMaskRW equ 0008h A9RInterrupts record A9MFrc2:1,A9MFrc1:1,\ A9MExpIntB:1,A9MExpIntA:1,A9MExpIntC:1,\ A9MSlave:1,A9MTimer:1,A9MSound:1 A9BNmiClearW equ 0009h A9BNonSpecificEoiW equ 000ah A9BStartFlagClearW equ 000bh A9BTimerEoiW equ 000ch A9BSerialSlaveEoiW equ 000dh A9BFrc1EoiW equ 000eh A9BFrc2EoiW equ 000fh A9WResetWatchDogW equ 0010h A9WFrc1DataRW equ 0012h A9BProtectionOnW equ 0014h A9BProtectionOffR equ 0014h A9BProtectionOffW equ 0015h A9WProtectionUpperW equ 0016h A9WProtectionLowerW equ 0018h A9BSoundDataRW equ 001ah A9BSoundEoiW equ 001ch A9WFrc2DataRW equ 001eh A9WPortABDataRW equ 0020h if S3b A9RPortABData record A9MKeyId0:1,A9MSleepDoorNmiDisabled:1,\ A9MBatLevel2:1,A9MBatLevel1:1,A9MLiBatLevel:1,\ A9MKeyRow:11 endif if S3c A9RPortABData record A9MKeyIdX2:1,A9MNiCdDetect:1,\ A9MBatLevel2:1,A9MBatLevel1:1,A9MLiBatLevel:1,\ A9MKeyIdX1:1,A9MKeyIdX0:0,A9MKeyRowX8:1,\ A9MCradle:1,A9MKeyRowX:7 endif A9BPortADataRW equ 0020h A9BPortBDataRW equ 0021h A9WPortABDDRRW equ 0022h A9VPortABDDR equ 0000000000000000b A9BPortADDRRW equ 0022h A9BPortBDDRRW equ 0023h A9WPortCDDataRW equ 0024h if S3b A9RPortCDData record A9MVccPacksEnable:1,A9MCodecEnable:1,\ A9MVccLcdEnable:1,A9MLcdPanelEnable:1,\ A9MLcdContrast:4,A9MVolume:2,\ A9MReproEnable:1,A9MAltDoorNMIEnable:1,\ A9MAmplifierEnable:1,A9MKeyIdEnable:1,\ A9MKeyId2:1,A9MKeyId1:1 A9VVolumeLow equ (mask A9MVolume) A9VPortCDData equ 0000111100000000b A9VPortCDDDR equ not (1111000011111100b) endif if S3c A9RPortCDData record A9MVccPacksEnable:1,A9MCodecEnable:1,\ A9MVccLcdEnable:1,A9MLcdPanelEnable:1,\ A9MLcdContrast:4,A9MVolume:2,\ A9MReproEnable:1,A9MAltDoorNMIEnable:1,\ A9MAmplifierEnable:1,A9MKeyIdEnable:1,\ A9MBuzVolX:1,A9MBacklightEnableX:1 A9VVolumeLow equ (mask A9MVolume) A9VPortCDData equ 0000111100000000b A9VPortCDDDR equ not (1111000011111111b) endif A9BPortCDataRW equ 0024h A9BPortDDataRW equ 0025h A9WPortCDDDRRW equ 0026h A9BPortCDDRRW equ 0026h A9BPortDDDRRW equ 0027h A9BPageSelect6000RW equ 0028h A9BPageSelect7000RW equ 0029h A9BPageSelect8000RW equ 002ah A9BPageSelect9000RW equ 002bh A9WControlExtraRW equ 002ch A9RControlExtraRW record A9MSlaveIntEnable:1,A9MClkDiv:2,\ A9MClockEnable5:1,A9MClockEnable4:1,\ A9MClockEnable3:1,A9MClockEnable2:1,\ A9MClockEnable1:1,A9MSoundDir:1,\ A9MExonDisable:1,A9MBuzzFromFrc1OrTog:1,\ A9MBuzzTog:1,A9MKeyCol:4 A9VKeyColHigh equ 0 A9VKeyColLow equ 1 A9VKeyCol0 equ 8 A9VClkDiv1 equ (3 shl A9MClkDiv) A9VClkDiv2 equ (2 shl A9MClkDiv) A9VClkDiv3 equ (1 shl A9MClkDiv) A9VClkDiv4 equ (0 shl A9MClkDiv) A9WPumpControlRW equ 002eh A9RPumpControl record A9MVhPumpDc:4,A9MVhPumpBat:4,\ A9MLcdPump:4,A9MPump2:4 A9VVhPumpBat equ (14 shl A9MVhPumpBat) A9VVhPumpBatSoft equ (4 shl A9MVhPumpBat) A9VVhPumpBatMedium equ (8 shl A9MVhPumpBat) A9VVhPumpDC equ (2 shl A9MVhPumpDc) A9VVhPumpDCSoft equ (1 shl A9MVhPumpDc) A9VLcdPump equ (7 shl A9MLcdPump) A9VLcdPumpSoft equ (1 shl A9MLcdPump) A9VPacksPumpSoft equ (15 shl A9MPump2) A9VVhPumpDelay equ 100 ; Milliseconds A9VLcdPumpDelay equ 5 ; Milliseconds A9VCC3OnDelay equ 1 ; Milliseconds A9VCCPacksDelay equ 20 ; Milliseconds A9VCC2Delay equ 10 ; Milliseconds A9WRtcLSWRW equ 0080h A9WRtcMSWRW equ 0082h A9WNullFrameW equ 0084h A9BSlaveDataR equ 0088h A9BSerialDataRW equ 008ah A9BSerialControlW equ 008ch A9BChannelSelectRW equ 008eh A9RChannelSelect record A9MMultiplexEnable:1,A9MSerialClockRate:2,\ A9MPack5Enable:1,A9MPack4Enable:1,\ A9MPack3Enable:1,A9MPack2Enable:1,\ A9MPack1Enable:1 A9VSClkRateMedium equ (0 shl A9MSerialClockRate) A9VSClkRateSpecial equ (1 shl A9MSerialClockRate) A9VSClkRateSlow equ (2 shl A9MSerialClockRate) A9VSClkRateFast equ (3 shl A9MSerialClockRate) ; ; Asic9 Dependent constants ; ResetWatchDog equ A9WResetWatchDogW SelectChannel1 equ (mask A9MPack1Enable) SelectChannel2 equ (mask A9MPack2Enable) SelectChannel3 equ (mask A9MPack3Enable) SelectChannel4 equ (mask A9MPack4Enable) SelectChannel5 equ (mask A9MPack5Enable) ; ; Current usage values ; IdleCurrent equ 23 RunCurrent equ 51 Asic5SerialCurrent equ 54 Flash1ProgramCurrent equ 76 Flash2ProgramCurrent equ 99 Flash1EraseCurrent equ 94 Flash2EraseCurrent equ 129 ; ; We add 26 because most of the work is under the NULL process. ; The value is 26 and not 28 because 10% of the time we are ; under the sound server. ; SoundCurrentPlayV3 equ (25+20) SoundCurrentPlayV2 equ (30+20) SoundCurrentPlayV1 equ (55+20) SoundCurrentPlayV0 equ (120+20) ; ; The value here must never equal one of the play values. ; It won't anyway in practise so this is not a big deal. ; SoundCurrentRecord equ 5 ; SCONTOUT macro out A9BSerialControlW, al endm ; SDATAOUT macro out A9BSerialDataRW, al endm ; SDATAIN macro in al, A9BSerialDataRW endm ; SBUSY macro endm ; SREAD macro _REG mov al, SerialReadSingle or _REG out A9BSerialControlW, al in al, A9BSerialDataRW endm ; SREADM macro _REG mov al, SerialReadMulti or _REG out A9BSerialControlW, al in al, A9BSerialDataRW endm ; SWRITE macro _REG,_VAL mov al, SerialWriteSingle or _REG out A9BSerialControlW, al mov al, _VAL out A9BSerialDataRW, al endm ; SWRITEM macro _REG,_VAL mov al, SerialWriteMulti or _REG out A9BSerialControlW, al mov al, _VAL out A9BSerialDataRW, al endm ; SETSPEED macro _SPEED pushf cli in al, A9BChannelSelectRW and al, not (mask A9MSerialClockRate) ifidni <_SPEED>, or al, A9VSClkRateFast endif ifidni <_SPEED>, or al, A9VSClkRateMedium endif ifidni <_SPEED>, or al, A9VSClkRateSlow endif out A9BChannelSelectRW, al popf endm ; XPUSHFCLI macro endm XPOPF macro endm XNOP macro endm ; @HwNullFrame macro out A9WNullFrameW, ax endm endif ; .list